Ich mache ein Pong-Spiel mit meinem Spiel läuft in einem jpanel Fenster nach links. Ich fügte ein weiteres jpanel-Fenster auf der rechten Seite hinzu, so dass der Benutzer das Spiel zurücksetzen und entscheiden konnte, wie viele Punkte für einen Gewinn benötigt werden.Wie mit dem Wechsel zwischen jPanels in Netbeans?
Wie auch immer, wenn ich mit den Tasten auf der linken Seite (nicht Spielkonsole) interagieren, kann ich meinen Spielbildschirm nicht mehr wählen und mein Spiel reagiert nicht mehr. Ich benutze Netbeans und ich bin ein Anfänger, also wird jede Hilfe geschätzt!
Hier ist ein Bild des Problems, dann wird das Spiel mit der Tastatur gesteuert. Es läuft weiter, reagiert aber nicht mehr auf die Tastatur, wenn ich den Knopf drücke. Ich habe auch etwas von meinem Code hinzugefügt.
public class LeikGluggi extends javax.swing.JPanel implements ActionListener, KeyListener {
int HRADISPADA = 10;
Spilari1 spilari1;
Spilari2 spilari2;
Bolti bolti;
public static int stadaLeiks = 0; //0 = stop, 1 = pása, 2 = spila
public LeikGluggi() {
initComponents();
spilari1 = new Spilari1();
spilari2 = new Spilari2();
bolti = new Bolti();
setSize(Leikbord.GLUGGI_BREIDD,Leikbord.GLUGGI_HAED);
this.addKeyListener(this); //látum vita þegar ýtt er á takka
this.setFocusable(true); //virkar bara þegar glugginn er valinn
Timer klukka = new Timer(30, this);
klukka.start();
}
-
private void uppfaera()
{
spilari1.uppfaera();
spilari2.uppfaera();
bolti.uppfaera();
bolti.markCheck();
bolti.skoppCheck(spilari1, spilari2);
}
public void resetLeik()
{
}
@Override
public void paintComponent(Graphics g)
{
g.setColor(Color.BLUE);
spilari1.paint(g);
spilari2.paint(g);
bolti.paint(g); //bolti teiknaður
if(stadaLeiks == 0)
{
g.setColor(Color.BLACK);
g.setFont(new Font("Consolas", Font.PLAIN, 30));
g.drawString("Ýttu á bilstöng til að byrja", 50, 200);
}
if(stadaLeiks == 1)
{
g.setColor(Color.BLACK);
g.setFont(new Font("Consolas", Font.PLAIN, 80));
g.drawString("PÁSA", 210, 250);
}
}
@Override
public void actionPerformed(ActionEvent e)
{
//þegar timer tikkar þá actinPerformed keyrt
if(stadaLeiks == 2)
{
uppfaera();
}
repaint();
}
//Spaði hreyfður ef ýtt er á takka
@Override
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_P)
{
if (stadaLeiks != 2)
stadaLeiks = 2;
else stadaLeiks = 1;
}
if (e.getKeyCode() == KeyEvent.VK_W)
{
spilari1.setyHradi(-HRADISPADA);
}
if (e.getKeyCode() == KeyEvent.VK_UP)
{
spilari2.setyHradi(-HRADISPADA);
}
if (e.getKeyCode() == KeyEvent.VK_S)
{
spilari1.setyHradi(HRADISPADA);
}
if (e.getKeyCode() == KeyEvent.VK_DOWN)
{
spilari2.setyHradi(HRADISPADA);
}
}
@Override
public void keyReleased(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_W || e.getKeyCode() == KeyEvent.VK_S)
{
spilari1.setyHradi(0);
}
if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_DOWN)
{
spilari2.setyHradi(0);
}
}
public void keyTyped(KeyEvent e)
{
}
}
Könnten Sie einen Teil des Codes hinzufügen? –
Bitte erstellen Sie ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) – stjepano
Einigen Code hinzugefügt und einen Screenshot hinzugefügt, danke! – snjall