Hey Leute,
Zuerst mal der Code für euch:
[HIGHLIGHT="Java"]
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Snake2 extends Applet implements KeyListener {
private int mouseX=150;
private int mouseY=150;
private int radius, diameter = 20;
private Color circleColor = Color.black;
private Color rectColor= Color.black;
private Color EssenColor = Color.red;
int diameter1 = 20;
int diameter2 = 7;
boolean gameover;
boolean links;
boolean rechts;
boolean up;
boolean down;
boolean schlangeplus;
GameLoop game = new GameLoop();
Image img = getToolkit().getImage("Apfel.jpg");
public void init() {
Dimension full = getSize();
mouseX = full.width/2;
mouseY = full.height/2;
radius=diameter/2;
addKeyListener(this);
game.start();
}
public void paint (Graphics g) {
g.drawRect(10,10,320,195);
g.setColor(rectColor);
g.setColor(circleColor);
g.fillRect((mouseX),(mouseY),diameter1,diameter2);
//Essen:
g.setColor(EssenColor);
g.drawImage(img,160,90,this);
g.setColor(EssenColor);
g.drawImage(img,100,40,this);
g.setColor(EssenColor);
g.drawImage(img,200,170,this);
g.setColor(EssenColor);
g.drawImage(img,280,60,this);
g.setColor(EssenColor);
g.drawImage(img,50,160,this);
}
public void keyPressed(KeyEvent ev) {}
public void keyTyped(KeyEvent ev) {
System.out.println("Fehler-Test");
if ((mouseX == 160 && mouseY == 90) || (mouseX == 100 && mouseY == 40) || (mouseX == 200 && mouseY == 190) || (mouseX == 280 && mouseY == 60) || (mouseX == 50 && mouseY == 180) ){
this.schlangeplus = true;
}
if (mouseX == 20 && ev.getKeyCode() == KeyEvent.VK_LEFT){
System.out.println("Game Over!");
this.gameover = true;
}
if (mouseY==20 && ev.getKeyCode() == KeyEvent.VK_UP){
System.out.println("Game Over!");
this.gameover = true;
}
if (mouseX==300 && ev.getKeyCode()== KeyEvent.VK_RIGHT){
System.out.println("Game Over!");
this.gameover = true;
}
if (mouseY==200 && ev.getKeyCode() == KeyEvent.VK_DOWN){
System.out.println("Game Over!");
this.gameover = true;
}
if (ev.getKeyCode() == KeyEvent.VK_RIGHT && mouseX <300 ) {
mouseX = mouseY+2;
this.rechts = true;
System.out.println("Fehler-Test");
}
if (ev.getKeyCode() == KeyEvent.VK_DOWN && mouseY <200) {
mouseY = mouseY+2;
this.down = true;
System.out.println("Fehler-Test");
}
if (ev.getKeyCode() == KeyEvent.VK_UP && mouseY >20) {
mouseY = mouseY-2;
this.up = true;
System.out.println("Fehler-Test");
}
if (ev.getKeyCode() == KeyEvent.VK_LEFT && mouseX >20) {
mouseX = mouseX-2;
this.links = true;
System.out.println("Fehler-Test");
}
}
public void keyReleased(KeyEvent ev) {}
class GameLoop extends Thread {
public void run(){
while(!gameover){
if (schlangeplus == true){
diameter2=diameter2+5;
System.out.println("Aufgesammelt.");
}
if (rechts == true) {
mouseX = mouseY+2;
repaint();
}
if (down == true) {
mouseY = mouseY+2;
diameter2 = diameter2+20;
diameter1 = diameter1-20;
repaint();
}
if (up == true) {
mouseY = mouseY-2;
diameter2 = diameter2-20;
diameter1 = diameter1-20;
repaint();
}
if (links == true) {
mouseX = mouseX-2;
repaint();
}
try{
Thread.sleep(50);
}
catch (InterruptedException ev){}
}
}
}
}
[/HIGHLIGHT]
Okay. Also, wie ihr vllt. schon gesehen habt, wurde mir schon gehlofen (http://www.java-forum.org/anfaengerfragen/80133-runnable-keylistener.html) Nur jetzt hab irgendwie das Problem, dass wenn ich das Applet starte, nichts passiert. D.h. alles ist so wie es sein sollte - nur wenn ich eine Taste drücke sollte sich das Objekt bewegen (Snake-Like) und zwar im GameLoop - keyTyped. Nur irgendwie funktioniert das ganze nicht.
Wo liegt der Fehler ?
Grüße
StickToFreak
Edit: Ich hab schon mit System.out.println("Fehler-Test"); probiert zu gucken wo der Fehler liegt, im GameLoop funktioniert der System.out.println aber weder in einer if-Abfrage im keyTyped noch ganz am Anfang vom keyTyped:
[HIGHLIGHT="Java"]
public void keyTyped(KeyEvent ev) {
System.out.println("Fehler-Test");
if //[...]
[/HIGHLIGHT]
Ich hab keine Ahnung wo der Fehler liegen könnte^^
Zuerst mal der Code für euch:
[HIGHLIGHT="Java"]
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Snake2 extends Applet implements KeyListener {
private int mouseX=150;
private int mouseY=150;
private int radius, diameter = 20;
private Color circleColor = Color.black;
private Color rectColor= Color.black;
private Color EssenColor = Color.red;
int diameter1 = 20;
int diameter2 = 7;
boolean gameover;
boolean links;
boolean rechts;
boolean up;
boolean down;
boolean schlangeplus;
GameLoop game = new GameLoop();
Image img = getToolkit().getImage("Apfel.jpg");
public void init() {
Dimension full = getSize();
mouseX = full.width/2;
mouseY = full.height/2;
radius=diameter/2;
addKeyListener(this);
game.start();
}
public void paint (Graphics g) {
g.drawRect(10,10,320,195);
g.setColor(rectColor);
g.setColor(circleColor);
g.fillRect((mouseX),(mouseY),diameter1,diameter2);
//Essen:
g.setColor(EssenColor);
g.drawImage(img,160,90,this);
g.setColor(EssenColor);
g.drawImage(img,100,40,this);
g.setColor(EssenColor);
g.drawImage(img,200,170,this);
g.setColor(EssenColor);
g.drawImage(img,280,60,this);
g.setColor(EssenColor);
g.drawImage(img,50,160,this);
}
public void keyPressed(KeyEvent ev) {}
public void keyTyped(KeyEvent ev) {
System.out.println("Fehler-Test");
if ((mouseX == 160 && mouseY == 90) || (mouseX == 100 && mouseY == 40) || (mouseX == 200 && mouseY == 190) || (mouseX == 280 && mouseY == 60) || (mouseX == 50 && mouseY == 180) ){
this.schlangeplus = true;
}
if (mouseX == 20 && ev.getKeyCode() == KeyEvent.VK_LEFT){
System.out.println("Game Over!");
this.gameover = true;
}
if (mouseY==20 && ev.getKeyCode() == KeyEvent.VK_UP){
System.out.println("Game Over!");
this.gameover = true;
}
if (mouseX==300 && ev.getKeyCode()== KeyEvent.VK_RIGHT){
System.out.println("Game Over!");
this.gameover = true;
}
if (mouseY==200 && ev.getKeyCode() == KeyEvent.VK_DOWN){
System.out.println("Game Over!");
this.gameover = true;
}
if (ev.getKeyCode() == KeyEvent.VK_RIGHT && mouseX <300 ) {
mouseX = mouseY+2;
this.rechts = true;
System.out.println("Fehler-Test");
}
if (ev.getKeyCode() == KeyEvent.VK_DOWN && mouseY <200) {
mouseY = mouseY+2;
this.down = true;
System.out.println("Fehler-Test");
}
if (ev.getKeyCode() == KeyEvent.VK_UP && mouseY >20) {
mouseY = mouseY-2;
this.up = true;
System.out.println("Fehler-Test");
}
if (ev.getKeyCode() == KeyEvent.VK_LEFT && mouseX >20) {
mouseX = mouseX-2;
this.links = true;
System.out.println("Fehler-Test");
}
}
public void keyReleased(KeyEvent ev) {}
class GameLoop extends Thread {
public void run(){
while(!gameover){
if (schlangeplus == true){
diameter2=diameter2+5;
System.out.println("Aufgesammelt.");
}
if (rechts == true) {
mouseX = mouseY+2;
repaint();
}
if (down == true) {
mouseY = mouseY+2;
diameter2 = diameter2+20;
diameter1 = diameter1-20;
repaint();
}
if (up == true) {
mouseY = mouseY-2;
diameter2 = diameter2-20;
diameter1 = diameter1-20;
repaint();
}
if (links == true) {
mouseX = mouseX-2;
repaint();
}
try{
Thread.sleep(50);
}
catch (InterruptedException ev){}
}
}
}
}
[/HIGHLIGHT]
Okay. Also, wie ihr vllt. schon gesehen habt, wurde mir schon gehlofen (http://www.java-forum.org/anfaengerfragen/80133-runnable-keylistener.html) Nur jetzt hab irgendwie das Problem, dass wenn ich das Applet starte, nichts passiert. D.h. alles ist so wie es sein sollte - nur wenn ich eine Taste drücke sollte sich das Objekt bewegen (Snake-Like) und zwar im GameLoop - keyTyped. Nur irgendwie funktioniert das ganze nicht.
Wo liegt der Fehler ?
Grüße
StickToFreak
Edit: Ich hab schon mit System.out.println("Fehler-Test"); probiert zu gucken wo der Fehler liegt, im GameLoop funktioniert der System.out.println aber weder in einer if-Abfrage im keyTyped noch ganz am Anfang vom keyTyped:
[HIGHLIGHT="Java"]
public void keyTyped(KeyEvent ev) {
System.out.println("Fehler-Test");
if //[...]
[/HIGHLIGHT]
Ich hab keine Ahnung wo der Fehler liegen könnte^^
Zuletzt bearbeitet: