2D Grafik ein Bild soll permanent durchlaufen

CriTicaLx91

Neues Mitglied
Heyho hab mal was programmiert was leider nicht läuft die logik dahinter ist ein 3Schichten Model GUI, Engine, Datenbank. In der GUI soll gezeichnet werden, in der Engine werden diese Koordinaten verändert, die Datenbank kriegt die veränderten Koordinaten schickt diese an GUI weiter so das sich das Bild bewegt ich schicke euch mal den Code für die GUI bzw im Frame in der es gezeichnet wird und meine Engine. Zurzeit bin ich soweit das schon mal ein Bild gezeichnet wird aber die Bewegung fehlt mir noch =/ Ich weiß es ist etwas unübersichtlich hoffe ihr nimmt euch die Zeit mir zu helfen:bahnhof:


DIE ENGINE dient dazu das bei Tastendruck koordinaten verändert wird
Java:
public class EngineHintergrund extends JPanel implements KeyListener, ActionListener {
Deklaration der Attribute
   Timer time;
   DataHintergrund dh;
   int key;
   int xAchseChar = 100;
   private SpielFrame sf;
	
 //Deklaration meines Konstruktors
    public EngineHintergrund(){
    setFocusable(true);
    time = new Timer(7, this);
    time.start();
    dh = new DataHintergrund();
    addKeyListener(new AL());
    sf = new SpielFrame();
    }
	

        ***********ACHTUNG HIER bin ich mir unsicher ob das so richtig ist sf ist mein Objekt   
        welches aus der GUI kommt zeichneNeu enthät die Methode von repaint
	public void actionPerformed(ActionEvent e){
		  if(dh.isNeuGezeichnet()==true){
			 bewegen();
			sf.zeichneNeu();
			dh.setNeuGezeichnet(false);
		}
	}
	
		
	public void bewegen() {
		dh.setxKoordBild(dh.getxKoordBild()+dh.getLauf()); 
		dh.setBildX1(dh.getBildX1()+dh.getLauf());
	        dh.setBildX2(dh.getBildX2()+dh.getLauf());
	}
	
	private class AL extends KeyAdapter{
		
		
		public AL(){
			
		}
		
		public void keyPressed(KeyEvent b){
			
			
			key = b.getKeyCode();
			
			if(key == KeyEvent.VK_RIGHT){
				dh.setLauf(2);
				dh.setNeuGezeichnet(true);
			}
		
			if(key == KeyEvent.VK_ESCAPE){
				System.exit(0);
			}
			
			//neu
//			if(key == KeyEvent.VK_SPACE){
//				if(Sprung.fertig == true)
//				Sprung();
//			}
						
		}
		
		public void keyReleased(KeyEvent b){
			
			key = b.getKeyCode();
			
			if(key == KeyEvent.VK_RIGHT){
				dh.setLauf(0);
			}
					
			if(key == KeyEvent.VK_ESCAPE){
				System.exit(0);
			}
		}
		
	}
}


DER CODE DER GUI dient dazu das was gezeichnet wird


Java:
public class SpielFrame extends JPanel implements ActionListener {
	
	//Deklaration der Attribute
	private DataHintergrund dh;
	private DataPlayer dp;
	private DataSpielFrame dsf;
	private JFrame fenster;
	
	
	//Konstruktor
	public SpielFrame() {
		dh = new DataHintergrund();
		dsf = new DataSpielFrame();
		dp = new DataPlayer();
		setFocusable(true);
	}
	
	
	
	//Deklaration der Operationen
	//Die Methode spielBeginn erstellt einen Frame und Fügt dem ein Bild hinzu
	public void spielBeginn() {
		fenster = new JFrame("Lee Run");
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenster.setSize(dsf.getFensterX(), dsf.getFensterY());
		//Neu char Lebt frage
		fenster.setVisible(dp.isLife());
		fenster.add(new EngineHintergrund());
		fenster.add(this);
		}
	
		
		
		public void paint(Graphics g){
		super.paint(g);
		Graphics2D f2 =(Graphics2D)g;
			
			if(dh.getxKoordBild()==510+(dh.getAnzahl1()*2350)){
				dh.setAnzahl1(dh.getAnzahl1()+1);
				dh.setBildX1(0);
			}
			if (dh.getxKoordBild() == 1690+(dh.getAnzahl2()*2350)){
				dh.setAnzahl2(dh.getAnzahl2()+1);
				dh.setBildX2(0);
			}
			
			if (dh.getxKoordBild() >= 510){
				f2.drawImage(dh.getHintergrundBild(),1200-dh.getBildX1(), 0, null);
			}
			
		f2.drawImage(dh.getHintergrundBild(), 1200-dh.getBildX2(), 0, null);
		}
		

		
		public void zeichneNeu(){
				repaint();
		}		
	}
 
Zuletzt bearbeitet:
Wäre nett, wenn du das noch in Java- Tags schreiben würdest. Das kann man so, in der Form, wie du das jetzt da stehen hast, schwer lesen 😉
 

Neue Themen


Zurück
Oben