G
Guest
Gast
Hi Leute,
mal ne Frage zu nem Applet, welches ich am coden bin. Schlussendlich sollte es ein kleines Snake-Spiel geben. Nur zu übungszwecken. Ich habe dazu in der von Applet abgeleiteten klasse einen actionlistener und einen keylistener(keytasten) eingebaut. Nun wenn ich die Klasse ohne Startbutton kompiliere, startet das Spiel "ohne Problmeme" so weit es bis jetzt ist. Nun wenn ich aber auch noch einen Startbutton einfüge, kann ich wohl das Spiel startten, jedoch reagieren die Tasten nicht mehr. Ich denke nun, dass das problem jenes ist, dass wenn ich den Button betätige, sich der Fokus auf den Button legt. Ist ja auch "markiert" Jedoch ist ja der KeyListener auf in der Appletklasse implentiert. Da ist fast logisch, wenn ich eine Pfeiltaste drücke dass dies bei der Button-objekten keine Auswirkung hat. Nun wie kann ich, sobald ich den Button gecklickt habe, den Fokus wieder auf das Hauptfenster des Applet legen?
(Wenn das überhaupt das problem ist...)
Hier mal die Problemklasse:
Mit freundlichen Grüssen
Miklo
mal ne Frage zu nem Applet, welches ich am coden bin. Schlussendlich sollte es ein kleines Snake-Spiel geben. Nur zu übungszwecken. Ich habe dazu in der von Applet abgeleiteten klasse einen actionlistener und einen keylistener(keytasten) eingebaut. Nun wenn ich die Klasse ohne Startbutton kompiliere, startet das Spiel "ohne Problmeme" so weit es bis jetzt ist. Nun wenn ich aber auch noch einen Startbutton einfüge, kann ich wohl das Spiel startten, jedoch reagieren die Tasten nicht mehr. Ich denke nun, dass das problem jenes ist, dass wenn ich den Button betätige, sich der Fokus auf den Button legt. Ist ja auch "markiert" Jedoch ist ja der KeyListener auf in der Appletklasse implentiert. Da ist fast logisch, wenn ich eine Pfeiltaste drücke dass dies bei der Button-objekten keine Auswirkung hat. Nun wie kann ich, sobald ich den Button gecklickt habe, den Fokus wieder auf das Hauptfenster des Applet legen?
(Wenn das überhaupt das problem ist...)
Hier mal die Problemklasse:
Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class MySnakeGame extends Applet implements ActionListener,KeyListener{
/**
* Autor: Manuel Miklo
* Snake
* Version: 0.01
* Datum: 2007
*/
private static final long serialVersionUID = 1L;
private Image back;
private Snake snake;
private Apfel apfel;
private Player player;
//DoubleBuffer
private Image hilfsbild;
private Graphics hgr, g;
//Bild der Schlange+Objekte laden
private Image[] dot=new Image[400];
private Image head;
private Image apple;
private Button btnStart=new Button("Start");
private boolean started=false;
public void init(){
//Fenster init
btnStart.addActionListener(this);
setSize(Config.WIDTH,Config.HEIGHT);
setBackground(Config.BG_COLOR);
//Background Game
back=this.getImage(getCodeBase(),"backk.jpg");
//Player init
player=new Player(snake);
//Schlange init
for(int i=1;i<400;i++){
dot[i]=getImage(getCodeBase(), "dot.gif");
}
head=this.getImage(getCodeBase(), "head.gif");
snake=new Snake(dot,head);
snake.start();
//Apfel init
apple=this.getImage(getCodeBase(),"apple.gif");
apfel=new Apfel(apple);
apfel.zufallsPos();
hilfsbild= createImage(400,400);
hgr= hilfsbild.getGraphics ( );
g= getGraphics ( );
this.setSize(600,400);
add(btnStart);
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
if(!started){
btnStart.move(430, 50);
}else{
if(snake.getLive()){
if(hilfsbild!=null) g.drawImage(hilfsbild, 0, 0, this);
malen();
}
}
}
public void malen(){
hgr.drawImage(back, 0, 0, this);
//Schlange
snake.fressen(apfel);
snake.display(hgr,this);
//Apfel
apfel.display(hgr,this);
repaint();
}
public void actionPerformed(ActionEvent a){
if(a.getSource()==btnStart){
started=true;
this.addKeyListener(this);
this.repaint();
}
}
public void keyPressed(KeyEvent e){
int code=e.getKeyCode();
System.out.println("Hallo");
if(code==KeyEvent.VK_LEFT){
snake.wechsleRichtung("links");
}else if(code==KeyEvent.VK_RIGHT){
snake.wechsleRichtung("rechts");
}else if(code==KeyEvent.VK_UP){
snake.wechsleRichtung("oben");
}else if(code==KeyEvent.VK_DOWN){
snake.wechsleRichtung("unten");
}
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
}
Mit freundlichen Grüssen
Miklo