Hi ich hätt da ma ne frage. Ich will ein java applet erstellen wo ein vogel früchte einsammeln soll. alles soweit in ordnung aber aus irgend einem grund erscheint die frucht nicht zufällig und das mit der kollision krieg ich irgendwie nicht hin. Könnte mir jemand zufällig helfen? Das ist der Quelltext bis jetzt:
Edit: jo sry, also ich hab ja das gif "frucht" das sich nach xb und yb richtet und mit der methode zufallszahl an eine zufällige stelle im applet erscheinen soll. Leider erscheint es aber immer an der linken oberen ecke.
Mein 2. problem ist das ich das nicht ganz hinbekomme wenn frucht und vogel sich treffen die frucht verschwindet, und an eine neue zufällige stelle kommt.
Code:
import java.awt.*; //Java Packete
import java.applet.*;
import java.awt.event.*;
import java.util.Random;
public class vogelfrucht extends java.applet.Applet implements Runnable
{ private int xa,ya; //Position des Vogels
private int xb,yb; //Position der Frucht
private int richtung; //Bewegung des Vogels
private int gesamtbreite; //Breite des Applets
private int gesamthöhe; //Höhe des Applets
private boolean verloren;
private int spielstand; // Spielstand
private Image vogel; // Zu zeichnender Vogel
private Image frucht; // Zu zeichnende Frucht
Thread th;
int counter = 0; //Zeit
public void init()
{
spielstand = 0;
verloren=false;
vogel = getImage(getCodeBase(), "vogelflug.gif");
frucht = getImage(getCodeBase(), "frucht.gif");
setBackground(Color.black);
gesamtbreite=this.size().width;
gesamthöhe=this.size().height;
zufallszahl();
richtung=0; //Vogel bewegt sich am Anfgang nicht
xa=50; //Position des Vogels
ya=200;
th = new Thread(this);
th.start();}
// Zufallszahl für Frucht-position
public void zufallszahl() {
Random r = new Random();
int xb = r.nextInt(400);
int yb = r.nextInt(250);
}
//Grafiken und Schriftzüge
public void paint(Graphics g) {
if (verloren==true){ //Bei Spielende (Nach einer Minute)
g.setFont(new Font("Arial",Font.ITALIC|Font.BOLD, 24));
g.setColor(Color.white);
g.drawString("Spiel vorbei... "+ spielstand +" Früchte gesammelt!",50,200);}
else{
g.drawImage(vogel , xa, ya, this); //Vogel wird gemalt
g.drawImage(frucht, xb, yb, this); //Frucht wird gemalt
g.setColor(Color.white); //Counter
g.drawString(counter + " Zeit(bis 3750(1 Minute))", 10,490); // Zeit bis Spielende
g.drawString("Spielstand: " + spielstand, 200, 490); //Spielstand
}
}
//Kollision
//Bewegungen + timer
public void run()
{
while(true)
{
try
{
if (richtung==1){ //oben
ya--;}
if (richtung==2){ //unten
ya++;}
if (richtung==3){ //links
xa--;}
if (richtung==4){ //rechts
xa++;}
if (ya==gesamthöhe-75){ //wenn zu weit unten, dann gehts wieder nach oben
richtung=1;}
if (ya==0){ //wenn zu weit oben, dann gehts wieder nach unten
richtung=2;}
if (xa==gesamtbreite-50){ //wenn zu weit rechts, dann gehts wieder nach links
richtung=3;}
if (xa==0){ //wenn zu weit unten, dann gehts wieder nach rechts
richtung=4;}
Thread.sleep(10);
counter++;
if (counter==3750){verloren=true;} // Nach einer minute
repaint();
}
catch(Exception ex){}
}
}
//bewegungen
public boolean keyDown(Event e,int key) {
//Fokus muss im Applet sein
switch(key){
case Event.UP: richtung=1; //Pfeiltaste nach oben
break;
case Event.DOWN: richtung=2; //Pfeiltaste nach unten
break;
case Event.LEFT: richtung=3; //Pfeiltaste nach links
break;
case Event.RIGHT: richtung=4; //Pfeiltaste nach rechts
break;}
repaint();
return true;
}
}
Edit: jo sry, also ich hab ja das gif "frucht" das sich nach xb und yb richtet und mit der methode zufallszahl an eine zufällige stelle im applet erscheinen soll. Leider erscheint es aber immer an der linken oberen ecke.
Mein 2. problem ist das ich das nicht ganz hinbekomme wenn frucht und vogel sich treffen die frucht verschwindet, und an eine neue zufällige stelle kommt.