Java 2D hra - tvorba menu (hra nereaguje na klavesy) – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Java 2D hra - tvorba menu (hra nereaguje na klavesy) – Java – Fórum – Programujte.comJava 2D hra - tvorba menu (hra nereaguje na klavesy) – Java – Fórum – Programujte.com

 

Marek
~ Anonymní uživatel
521 příspěvků
16. 11. 2012   #1
-
0
-

Pokusam sa spravit ku hre Sokoban menu. Menu mam hotove, aj ide .. cize ked kliknem na New tak sa mi prida panel s hrou a zmizne panel s Menu .. cize akoby sa to prekreslilo v jednom okne. Lenze tato hra ktora sa spusti z menu mi nereaguje na klavesy a neviem preco. Ked vsak menu dam prec, zmazem ho, cize nevytvaram vobec ani objekt Menu tak mi hra na klavesy reaguje a vsetko funguje. Ako by sa to dalo vyriesit aby to reagovalo aj ked tam mam to menu predtym ? Prikladam casti kodu, ktore s tym suvisia:

Trieda sokoban:

package sokoban;
   
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
   
   
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
   
   
    public final class Sokoban extends JFrame  {
   
       
        private Menu menu;
        private Board board;
        private static JFrame myFrame;
       
       
        public Sokoban() {
            InitUI();
        }
   
        public void InitUI() {
        
         myFrame = new JFrame();
        
         myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            myFrame.setSize(800,600);
            myFrame.setLocationRelativeTo(null);
            myFrame.setTitle("Labyrint");
            myFrame.setResizable(false);
           
            board = new Board();
            menu = new Menu();
           
            myFrame.add(menu);
           
    //-----------
     
      JMenu file = new JMenu("File");
      file.setMnemonic('F');
      JMenuItem newItem = new JMenuItem("New");
      newItem.setMnemonic('N');
      file.add(newItem);
      JMenuItem openItem = new JMenuItem("Open");
      openItem.setMnemonic('O');
      file.add(openItem);
      JMenuItem exitItem = new JMenuItem("Exit");
      exitItem.setMnemonic('x');
      file.add(exitItem);
     
      //adding action listener to menu items
      newItem.addActionListener(
       new ActionListener(){
        public void actionPerformed(ActionEvent e)
        {
         menu.setVisible(false);
        
         menu = null;
         myFrame.add(board);
        }
       }
      );
      openItem.addActionListener(
       new ActionListener(){
        public void actionPerformed(ActionEvent e)
        {
         System.out.println("Open is pressed");
        }
       }
      );
      exitItem.addActionListener(
       new ActionListener(){
        public void actionPerformed(ActionEvent e)
        {
         System.out.println("Exit is pressed");
        }
       }
      );     
      JMenuBar bar = new JMenuBar();
      myFrame.setJMenuBar(bar);
      bar.add(file);
     
      myFrame.getContentPane();
     
      myFrame.setVisible(true);
         ///------------------------------------
           
        }
      
   
        public static void main(String[] args) {
        
             
            Sokoban sokoban = new Sokoban();
        
          
        }
       
       
    
    }

A toto je cast triedy kde je vykreslovana hra, Board class ... funguju klavesy len ak nie je menu:

  public class Board extends JPanel implements KeyListener {
    public Board() {
   
            addKeyListener(this);
            setFocusable(true);
           
            initWorld();
           
        }
       
        /* not importnant code for this problem here*/
       
        @Override
     public void keyPressed(KeyEvent e) {
   
         int key = e.getKeyCode();
        
        
            if (key == KeyEvent.VK_LEFT) {
                if ((checkWallCollision(soko,LEFT_COLLISION)) == true) {
                   
                 return;
                   
                }
   
                if (checkBagCollision(LEFT_COLLISION)) {
                    return;
                }
   
                soko.move(-SPACE, 0);
                score++;
                celkove_score++;
   
            } else if (key == KeyEvent.VK_RIGHT) {
            etc.
            .
            .
            .
    }

Pomozte prosim ak viete ako by som to mohol poriesit aby som mal aj menu aj hru, ktora bude reagovat na klavesy. Dakujem

Nahlásit jako SPAM
IP: 178.40.197.–
Marek
~ Anonymní uživatel
521 příspěvků
17. 11. 2012   #2
-
0
-

zmazat prosim temu, diky

Nahlásit jako SPAM
IP: 178.40.197.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 30 hostů

Podobná vlákna

Java 2D hra — založil Hano

3D C/C++ nebo JAVA hra — založil Yohaku

Java projekt hra — založil nickan

Java-Hra Projekt — založil Dušan

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý