Hallo zusammen.
Ich hab mal ein kleines Tetrisprogramm geschrieben. Leider ist die Tastatursteuerung etwas mühselig. Kann ich diese verbessern? Das Programm soll evtl schneller auf Tastaturereignisse reagieren...
Hier die Ereignisabfrage:
Und hier der Spielthread:
moveBrick bewegt den Stein in die entsprechende Richtung. Ich hab ne Abfrage isPlayerWait, damit der Spieler nicht einen Stein drücken kann, wenn gerade Reihen gelöscht werden. Kann ich es irgendwie anders lösen? Wenn ich es mit einem Listener mache, dann kommts doch auch auf das selbe raus.
Hier ist übrigens der Link zum Spiel, dann könnt ihr selber sehen, was ich meine: KTetris0.43a
Ich hab mal ein kleines Tetrisprogramm geschrieben. Leider ist die Tastatursteuerung etwas mühselig. Kann ich diese verbessern? Das Programm soll evtl schneller auf Tastaturereignisse reagieren...
Hier die Ereignisabfrage:
Code:
public void keyPressed(KeyEvent e)
{
if(board != null && !board.isPlayerWait())
{
if (e.getKeyCode() == KeyEvent.VK_RIGHT)
{
board.moveBrick(1, 0);
}
if (e.getKeyCode() == KeyEvent.VK_LEFT)
{
board.moveBrick(-1, 0);
}
if (e.getKeyCode() == KeyEvent.VK_DOWN)
{
board.moveBrick(0, 1);
}
if (e.getKeyCode() == KeyEvent.VK_UP)
{
board.rotateBrick();
}
}
}
Und hier der Spielthread:
Code:
public void run()
{
while (!isInterrupted())
{
try
{
Thread.sleep(speed);
if (moveBrick(0, 1))
{
playerWait = true;
for (int i = 0, n = actualBrick.getBrick().length; i < n; i++)
{
field[(actualBrick.getBrick()[i].getRow())][actualBrick
.getBrick()[i].getCol()].setFix(true);
}
actualBrick = (Brick) nextBrick.clone();
nextBrick = getRandomBrick();
}
while (removeCompleteLines())
{
fireGameStateChangedEvent();
Thread.sleep(500);
}
playerWait = false;
}
catch (InterruptedException e)
{
interrupt();
e.printStackTrace();
}
catch (CloneNotSupportedException e)
{
e.printStackTrace();
}
}
}
moveBrick bewegt den Stein in die entsprechende Richtung. Ich hab ne Abfrage isPlayerWait, damit der Spieler nicht einen Stein drücken kann, wenn gerade Reihen gelöscht werden. Kann ich es irgendwie anders lösen? Wenn ich es mit einem Listener mache, dann kommts doch auch auf das selbe raus.
Hier ist übrigens der Link zum Spiel, dann könnt ihr selber sehen, was ich meine: KTetris0.43a