Hallo,
Ich habe ein Programm (GUI) erstellt, bei dem 1 Kreis und 1 sehr schmales Rechteck (dient als Wand) gezeichnet wird. Die (bisher eine) Wand befindet sich links im Fenster. Der Kreis ist mit den Pfeiltasten steuerbar. Wenn ich nun den Kreis durch die Wand bewege, soll auf der Console (in Eclipse, geht das überhaupt? GUI+Console gleichzeitig? Vll ist das bereits der Fehler?) "Kollision" ausgegeben werden.
Dies klappt aber leider nicht. Wenn ich den Kreis durch die Wand bewege, wird garnichts auf der Eclipse Console ausgegeben.
Ich habe jeweils für den Kreis und die Wand (Rechteck) ein Rectangle erstellt mit den Koordinaten und Größen jeweils vom Kreis und der Wand. In der GameLoop wird dann halt mit intersects und if geprüft.
Hier der Code
Ich habe ein Programm (GUI) erstellt, bei dem 1 Kreis und 1 sehr schmales Rechteck (dient als Wand) gezeichnet wird. Die (bisher eine) Wand befindet sich links im Fenster. Der Kreis ist mit den Pfeiltasten steuerbar. Wenn ich nun den Kreis durch die Wand bewege, soll auf der Console (in Eclipse, geht das überhaupt? GUI+Console gleichzeitig? Vll ist das bereits der Fehler?) "Kollision" ausgegeben werden.
Dies klappt aber leider nicht. Wenn ich den Kreis durch die Wand bewege, wird garnichts auf der Eclipse Console ausgegeben.
Ich habe jeweils für den Kreis und die Wand (Rechteck) ein Rectangle erstellt mit den Koordinaten und Größen jeweils vom Kreis und der Wand. In der GameLoop wird dann halt mit intersects und if geprüft.
Hier der Code
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Ellipse2D;
import javax.swing.*;
public class Second extends JPanel implements ActionListener, KeyListener {
Timer t = new Timer(1, this);
int x = 300, y = 300, velx = 0, vely = 0;
int xw, yw;
boolean links = false;
boolean rechts = false;
boolean oben = false;
boolean unten = false;
Rectangle kreisRec = new Rectangle(x, y, 40, 40);
Rectangle wandRec = new Rectangle(xw, yw, 10, 600);
public Second() {
t.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D kreis = (Graphics2D) g;
Graphics2D wand = (Graphics2D) g;
kreis.fill(new Ellipse2D.Double(x, y, 40, 40));
wand.fill(new Rectangle.Double(xw, yw, 10, 600));
}
public void actionPerformed(ActionEvent e) {
if(oben) {
vely = -1;
velx = 0;
}
if(unten) {
vely = 1;
velx = 0;
}
if (links) {
vely = 0;
velx = -1;
}
if (rechts) {
vely = 0;
velx = 1;
}
x +=velx;
y +=vely;
repaint();
velx = 0;
vely = 0;
if (kreisRec.intersects(wandRec)){
System.out.println("Kollision");
}
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
int code = e.getKeyCode();
if(code == KeyEvent.VK_UP){
oben = false;
}
if(code == KeyEvent.VK_DOWN){
unten = false;
}
if(code == KeyEvent.VK_RIGHT){
rechts = false;
}
if(code == KeyEvent.VK_LEFT){
links = false;
}
}
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if(code == KeyEvent.VK_UP){
oben = true;
}
if(code == KeyEvent.VK_DOWN){
unten = true;
}
if(code == KeyEvent.VK_RIGHT){
rechts = true;
}
if(code == KeyEvent.VK_LEFT){
links = true;
}
}
}