Hallo ihr Lieben,
ich hab ein riesen Problem und komm absolut nicht weiter.
Ich muss ein kleines "Spiel" programmieren bei dem ein Ball im Frame immer durchhüpft.
Der Spieler ist ein kleines Bildchen, und das soll nun mit den Tasten a,w,s,y gesteuert werden (wollte eigentlich die Pfeiltasten aber das krieg ich gar nich hin).
Mein Code ist fehlerfrei, sagt mir zumindest mein Eclipse.
Ich hoffe ihr könnt mir sagen wo mein Fehler liegt.
Besten Dank schon mal.
ich hab ein riesen Problem und komm absolut nicht weiter.
Ich muss ein kleines "Spiel" programmieren bei dem ein Ball im Frame immer durchhüpft.
Der Spieler ist ein kleines Bildchen, und das soll nun mit den Tasten a,w,s,y gesteuert werden (wollte eigentlich die Pfeiltasten aber das krieg ich gar nich hin).
Mein Code ist fehlerfrei, sagt mir zumindest mein Eclipse.
Ich hoffe ihr könnt mir sagen wo mein Fehler liegt.
Besten Dank schon mal.
Code:
package meins;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
public class MoveBall extends Frame implements KeyListener, ActionListener{
/**
* Ballbewegung
*/
Ball b;
Thread f;
int m=80, n=80;
int x=0; int y=250;
int x1; int y1;
int s=1;
boolean r=true; //Schalter für die x Richtung
boolean t=true; //Schalter für die y Richtung
Random r1; Random r2; //Zufallszahlen
Image img; //Bild
public MoveBall(){
//Frame aufbauen
setSize(500,500);
setLocation(100,100);
setTitle("Spiel");
setVisible(true);
b=new Ball();
r1=new Random();
r2= new Random();
f=new Thread();
f.start();
addKeyListener(this);
}
public void paint(Graphics g){
img = getToolkit().getImage("ball.jpg");
MediaTracker mt = new MediaTracker(this);
mt.addImage(img, 2);
for(;;){
//g.clearRect(0,0,500,500);
g.drawImage(img,m,n,this);
//malen
b.draw(g, x, y);
try{Thread.sleep(2);} catch(Exception z){}
if(x>=500){
r=false;
x1 = r1.nextInt(4);
y1 = r2.nextInt(4);
}
if(x<=0){
r=true;
x1 = r1.nextInt(4);
y1 = r2.nextInt(4);
}
if(y>=500){
t=false;
x1 = r1.nextInt(4);
y1 = r2.nextInt(4);
}
if(y<=0){
t=true;
x1 = r1.nextInt(4);
y1 = r2.nextInt(4);
}
if(r){ //Ball nach rechts
x= x+ x1; // neu positionieren
if(t){
y=y+2;
}
else {
y--;
}
//malen
b.draw(g, x, y);
}
else{ //Ball nach links
x=x -x1;
if(t){
y=y+2;
}
else {
y--;
}
//malen
b.draw(g, x, y);
}
}
}
public void run(){
for(;;){
switch(s){
case 1: m=m-10; repaint(); break;
case 2: m=m+10; repaint(); break;
case 3: n=n-10; repaint(); break;
case 4: n=n+10; repaint(); break;
}
repaint();
try{Thread.sleep(5);} catch(Exception z){}
}
}
public static void main(String[] args) {
new MoveBall();
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyChar()=='a')s=1;
if (e.getKeyChar()=='s')s=2;
if (e.getKeyChar()=='w')s=3;
if (e.getKeyChar()=='y')s=4;
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyChar()=='a')s=1;
if (e.getKeyChar()=='s')s=2;
if (e.getKeyChar()=='w')s=3;
if (e.getKeyChar()=='y')s=4;
}
@Override
public void keyTyped(KeyEvent arg0) { }
@Override
public void actionPerformed(ActionEvent arg0) { }
}