Problem bei Bewegung von einem Bild!

  • Themenstarter Themenstarter Supersiggi
  • Beginndatum Beginndatum
S

Supersiggi

Gast
Hallo!

Ich habe vor kurzem wieder angefangen in Java zu programmieren und hänge
nun an dem Problem fest, dass mein Spieler sich nicht bewegt! In anderen Programmen von früher
geht es sofort, jedoch hier nicht! Er sollte sich eigentlich von links nach rechts bewegen, später wird das dann von der Tastatureingabe übernommen. Vielleicht brauche ich auch einfach nur ein zweites paar Augen und habe einen schusseligen Fehler gemacht 🙂...

Java:
package sidescoller;


import java.awt.*;
import java.applet.*;
import java.awt.event.*;



public class main extends Applet implements Runnable, KeyListener
{
    Image level;
    Image spieler;
    Image bullet;
    Image enemy;
    
    AudioClip shot;
    AudioClip music;
    AudioClip explosion;
    AudioClip complete;
    
    int levelsize_x=400;
    int levelsize_y=600;
    int appletsize_x = 400;
    int appletsize_y = 400; 
    
    int x_speed_player=10;
    int radius = 40;
    int x_pos=appletsize_x/2-23;
    int y_pos=levelsize_y-50;
	
    private Image dbImage;
    private Graphics dbg;
    
    /*boolean playerleft=false;
    boolean playerright=false;*/
    
    Thread th;

    
    public void init()
    {
        level = getImage (getCodeBase(), "pic/level1.jpg");
        spieler = getImage (getCodeBase(), "pic/raumschiff.png");
        enemy = getImage (getCodeBase(), "pic/enemy.png");
        bullet = getImage (getCodeBase(), "pic/bullet.png");
        addKeyListener(this);
    };

    
    public void start()
    {
        th = new Thread ();
        th.start();
    };
    
    
    public void stop()
    {
        
    };
    
    public void destroy()
    {
        
    }
    
    
    public void run(){

    	Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
    	
        while (true){ 
        	/*if (x_pos > appletsize_x - radius)
			{
				// Ändern der Richtung des Balles
				x_speed_player = -1;
			}
			// Ball brührt linken Rand und prallt ab
			else if (x_pos < radius)
			{
				// Ändern der Richtung des Balles
				x_speed_player = +1;
			}*/

			// Verändern der x- Koordinate
			x_pos += x_speed_player;

			// Neuzeichnen des Applets
			repaint();
        	
            try
            { 
                Thread.sleep (10);

            }
            catch (InterruptedException ex)
            { 
                // do nothing

            }    
            Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
        } 
        
    };
    
    
    public void keyPressed(KeyEvent e)
	{
		/*if(e.getKeyCode()==e.VK_LEFT){
			x_speed_player=-10;
			playerleft=true;
		}
		if(e.getKeyCode()==e.VK_RIGHT){
			x_speed_player=10;
			playerright=true;
		}*/
	}

	public void keyReleased(KeyEvent e)
	{
		//playerleft=false;
		//playerright=false;
	}
	
    public void keyTyped(KeyEvent arg0) {
		
	};
    
	public void update (Graphics g)
	{
		// Initialisierung des DoubleBuffers
		if (dbImage == null)
		{
			dbImage = createImage (this.getSize().width, this.getSize().height);
			dbg = dbImage.getGraphics ();
		}

		// Bildschirm im Hintergrund löschen
		dbg.setColor (getBackground ());
		dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);

		// Auf gelöschten Hintergrund Vordergrund zeichnen
		dbg.setColor (getForeground());
		paint (dbg);

		// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
		g.drawImage (dbImage, 0, 0, this);
	}

    
    public void paint(Graphics g)
    { 
       g.drawImage(level, 0,0,this);
       g.drawImage(spieler, x_pos,y_pos,this);
       
    };

 
}
 
Java:
public void start()
    {
        th = new Thread ();
        th.start();
    };

das sollte eher

Java:
public void start()
    {
        th = new Thread (this);
        th.start();
    }
heißen.

OT: Semikolons braucht man in Java nach einer Methode nicht zu schreiben.
 
Dankesehr!
Funktioniert nun, war klar das ich wieder irgendwo so einen Fehler einbaue 😵

Jetz wird weiter an unserem Abispiel gewerkelt 🙂
 

Neue Themen


Zurück
Oben