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
DER CODE DER GUI dient dazu das was gezeichnet wird
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: