Figur Springt nicht

Koti

Mitglied
Ich habe keine Feheler im Quellcode aber die Figur will eine einfach nicht springe 🙁
Für hilfe danke im vorraus 🙂


Java:
package frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.Timer;

public class gui extends JPanel implements ActionListener{
	
	Timer time;
	Image img;
	Image img2;
	int X_Bild;
	int nx,nx2;
	int anzahl = 0;
	int anzahl2 = 0;
	int key;
	int lauf;
	int left = -200;
	int right = -200;
	int figur_y = 20;
	
	public gui(){
		addKeyListener(new AL());
		nx = 0;
		nx2 = 480;
		key = 0;
		lauf = 0;
		setFocusable(true);
		ImageIcon u = new ImageIcon((getClass().getResource("Background.jpg")));
		img = u.getImage();
		ImageIcon c1 = new ImageIcon((getClass().getResource("Character 1.png")));
		img2 = c1.getImage();
		time = new Timer(5,this);
		time.start();
		Sprung sprung = new Sprung();
	}
	public void actionPerformed(ActionEvent e){
		bewegen();
		figur_y = Sprung.sprungposition;
		repaint();
	}
	public void paint(Graphics g){
		super.paint(g);
		Graphics2D f2 = (Graphics2D)g;
		if(getX_Bild() == 0 + (anzahl *50)){
			anzahl += 1;
			nx = 500;
		}
		if(getX_Bild() == 100 + (anzahl2 *100)){
			anzahl2 += 1;
			nx2 = 0;
		}
		if(getX_Bild() >= 100){
			f2.drawImage(img,200+nx,0,null);
		}
		f2.drawImage(img,480-nx2,0,null);
		f2.drawImage(img2,left,figur_y,null);
	}
	private int getX_Bild() {
		return X_Bild;
	}
	public void bewegen(){
		if(lauf != -1){
			if(left + lauf <=40000){
				left += lauf;
			}else {
				X_Bild += lauf;
				nx += lauf;
				nx2 += lauf;
			}
		}else {
			if(left + lauf > -340){
				left += lauf;
				lauf = -1;
				}			
			}
		if(lauf != -1){		
			if(left - lauf > 700){
				lauf = -1;			
			}
		}
	}	
	private class AL extends KeyAdapter{
		public AL(){	
	}
	public void keyPressed(KeyEvent e){
		key = e.getKeyCode();
		if(key == KeyEvent.VK_RIGHT){
			lauf = 1;
			}
		if(key == KeyEvent.VK_LEFT){
			lauf = -1;
				
		if(key == KeyEvent.VK_SPACE){
			Sprung();
			}
		}
	}	
	public void keyReleased(KeyEvent e){
		key = e.getKeyCode();
		if(key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT){
			lauf = 0;
		}
	}	
	}
	public void Sprung(){
		Sprung SprungAnimation = new Sprung();
		SprungAnimation.start();
	}
}


Java:
package frame;

public class Sprung extends Thread {

	static boolean fertig = true;
	static boolean hochpunkt = false;
	
    int sprunghöhe = 85;
	static int ursprungY = 0;
	static int sprungposition = ursprungY;
	
	public Sprung(){
		
	}
	public void run(){
		fertig = false;
		int verzögerung = 3;
		while(fertig == false){
			Sprung();
			
			try{
				Thread.sleep(verzögerung);
			}catch (Exception e){
				
			}
		}
		hochpunkt = false;
	}
	public void Sprung(){
		if(hochpunkt == false){
			sprungposition--;
		}
		if(sprungposition == (ursprungY-sprunghöhe)){
			hochpunkt = true;
		}
		if(hochpunkt == true && sprungposition <= ursprungY){
			sprungposition ++;
			if(sprungposition == ursprungY){
				fertig = true;
			}
		}
	}
}
 
Zuletzt bearbeitet:
Hallo Koti

Der Fehler könnte sein dass du eine Klammer falsch gesetzt hast:
Im ersten Code statt eine Klammer in Zeile 103 muss diese in Zeile 100 !
Hoffe es klappt jetzt
 

Zurück
Oben