Hallo Java Community,
ich bin gerade dabei, mein erstes Spiel richtig umzusetzen und habe nun folgendes Problem:
In meiner KeyHandler Klasse die vom KeyListener erbt, habe ich festgelegt, dass wenn man ESCAPE drückt, sich das Spiel schließt. Das funktioniert auch wenn ich das Spiel starte und dann ohne etwas zu machen ESCAPE drücke, allerdings wenn ich das Spiel offen hab und meinetwegen einmal mit der Mouse in das Fenster klicke, macht ESCAPE bei mir garnichts mehr. Sehr komisch.
Und bei meinem MouseListener, habe ich das Problem, dass er garnicht macht, was ich von ihm will, hier mein Code:
Meine Frame-Klasse in der mein Window geöffnet wird, etc.:
Mein KeyHandler:
Ich bin sehr dankbar für jede Hilfe
MfG Skulte
ich bin gerade dabei, mein erstes Spiel richtig umzusetzen und habe nun folgendes Problem:
In meiner KeyHandler Klasse die vom KeyListener erbt, habe ich festgelegt, dass wenn man ESCAPE drückt, sich das Spiel schließt. Das funktioniert auch wenn ich das Spiel starte und dann ohne etwas zu machen ESCAPE drücke, allerdings wenn ich das Spiel offen hab und meinetwegen einmal mit der Mouse in das Fenster klicke, macht ESCAPE bei mir garnichts mehr. Sehr komisch.
Und bei meinem MouseListener, habe ich das Problem, dass er garnicht macht, was ich von ihm will, hier mein Code:
Meine Frame-Klasse in der mein Window geöffnet wird, etc.:
Java:
public class Frame extends Canvas implements Runnable {
public static final int WIDTH = 1280;
public static final int HEIGHT = 960;
public static final String TITLE = "Unnamed";
public static final String PATH = "C:\\Users\\----\\Desktop\\Workspaces\\Bigger Games Workspace\\UnnamedProject\\src\\res\\";
private JFrame frame;
private Thread game;
private boolean running = false;
public Frame() {
frame = new JFrame();
frame.setSize(WIDTH, HEIGHT);
frame.setTitle(TITLE);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setUndecorated(true);
frame.add(this);
frame.addKeyListener(new KeyHandler());
frame.addMouseListener(new MouseHandler());
frame.addMouseMotionListener(new MouseHandler());
frame.setVisible(true);
}
public void start() {
running = true;
game = new Thread(this, "gamethread");
game.start();
}
public void stop() {
running = false;
try {
game.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void run() {
while (running) {
try {
render();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void render() throws IOException {
BufferStrategy bs = getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
return;
}
Graphics g = bs.getDrawGraphics();
g.setColor(Color.BLACK);
g.fillRect(0, 0, WIDTH, HEIGHT);
try {
new TileGrid(g);
new Resources(g);
new BuyMenu(g);
} catch (IOException e) {
e.printStackTrace();
}
g.dispose();
bs.show();
}
}
Mein KeyHandler:
Java:
public class MouseHandler implements MouseListener, MouseMotionListener {
public int mousex;
public int mousey;
// global variables
public boolean buyButtonHovered = false;
public boolean buyButtonClicked = false;
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
mousex = e.getX();
mousey = e.getY();
if ((mousex > WIDTH && mousex < WIDTH - 64) && (mousey > HEIGHT && mousey < HEIGHT - 64)) {
buyButtonHovered = true;
} else {
buyButtonHovered = false;
}
System.out.println("Buy Button hovered: " + buyButtonHovered);
}
@Override
public void mouseClicked(MouseEvent e) {
if ((mousex > WIDTH && mousex < WIDTH - 64) && (mousey > HEIGHT && mousey < HEIGHT - 64)) {
buyButtonHovered = false;
buyButtonClicked = true;
} else {
buyButtonClicked = false;
}
System.out.println("Buy Button clicked: " + buyButtonClicked);
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
public int getMousex() {
return mousex;
}
public int getMousey() {
return mousey;
}
public boolean isBuyButtonHovered() {
return buyButtonHovered;
}
public boolean isBuyButtonClicked() {
return buyButtonClicked;
}
}
Ich bin sehr dankbar für jede Hilfe
MfG Skulte