O
OttoHesse
Gast
Guten Abend.
Ich habe versucht ein einfaches Programm zu schreiben, dass einem ermöglicht ein Viereck durch die Pfeiltasten zu steuern.
Das ganze funktioniert auch, jedoch immer nur einmal.
Ich starte das Programm in Eclipse - es klappt, das Viereck bewegt sich, wenn ich die Pfeiltasten drücke.
Ich schließe es daraufhin und öffne es erneut - es klappt nicht, das Viereck bewegt sich nicht, reagiert also nicht auf meine Eingaben und bleibt die ganze Zeit auf der Stelle stehen.
Erst wenn ich die Anfangs-Koordinaten des Vierecks (Zeile 16+17) ändere, funktioniert es wieder für ein einziges Mal.
Ist hier Magie im Spiel, oder was ist die Ursache dafür?
Ich hoffe ihrkönnt mir weiterhelfen
Ich habe versucht ein einfaches Programm zu schreiben, dass einem ermöglicht ein Viereck durch die Pfeiltasten zu steuern.
Das ganze funktioniert auch, jedoch immer nur einmal.
Ich starte das Programm in Eclipse - es klappt, das Viereck bewegt sich, wenn ich die Pfeiltasten drücke.
Ich schließe es daraufhin und öffne es erneut - es klappt nicht, das Viereck bewegt sich nicht, reagiert also nicht auf meine Eingaben und bleibt die ganze Zeit auf der Stelle stehen.
Erst wenn ich die Anfangs-Koordinaten des Vierecks (Zeile 16+17) ändere, funktioniert es wieder für ein einziges Mal.
Ist hier Magie im Spiel, oder was ist die Ursache dafür?
Ich hoffe ihrkönnt mir weiterhelfen
Java:
import javax.swing.JFrame;
public class GameFrame {
public GameFrame(){
JFrame f = new JFrame();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(800,600);
f.setResizable(false);
f.setTitle("xBall 1.0");
GameContent gc = new GameContent();
f.add(gc);
}
public static void main(String args[]){
GameFrame g = new GameFrame();
}
}
Java:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class GameContent extends JPanel implements KeyListener, ActionListener {
Timer timer = new Timer(15, this);
private int xPos;
private int yPos;
private int xMove;
private int yMove;
Font myFont=new Font("Jokerman", Font.ITALIC|Font.BOLD, 26);
public GameContent() {
timer.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
//Schwarzer Hintergrund
g.setColor(Color.BLACK);
g.fillRect(0, 0, 800, 600);
// Weißer Rahmen
g.setColor(Color.white);
g.drawLine( 30, 50, 30, 520);
g.drawLine( 30, 50, 760, 50);
g.drawLine( 30, 520, 760, 520);
g.drawLine( 760, 50, 760, 520);
// Game-Überschrift
g.setFont(myFont);
g.setColor(Color.BLUE);
g.drawString("xBall 1.0", 70, 30);
// Das zu bewegende Viereck
g.setColor(Color.GREEN);
g.fillRect(xPos, yPos, 20, 20);
}
public void actionPerformed(ActionEvent e){
repaint();
xPos = xPos + xMove;
yPos = yPos + yMove;
}
public void moveUp(){
xMove = 0;
yMove = -3;
}
public void moveDown(){
xMove = 0;
yMove = 3;
}
public void moveLeft(){
xMove = -3;
yMove = 0;
}
public void moveRight(){
xMove = 3;
yMove = 0;
}
public void keyPressed(KeyEvent e){
int taste = e.getKeyCode();
if(taste == KeyEvent.VK_UP) moveUp();
if(taste == KeyEvent.VK_DOWN) moveDown();
if(taste == KeyEvent.VK_RIGHT) moveRight();
if(taste == KeyEvent.VK_LEFT) moveLeft();
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
}