Animation geht nicht

Status
Nicht offen für weitere Antworten.

spong3bob

Aktives Mitglied
Hallo!
Ich glaube der Titel spricht schon für sich :D

Ich hoff es is erlaubt so lange Codes reinzuschreiben!

Code:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;

public class Spiel extends JPanel implements KeyListener,Mover
{

	private Navigator navi;
	private Level lvl;
	private Spieler p1;
	private Timer timer;
	private Image dbImage;
	private Graphics dbg;

	public Spiel(Navigator nav)
	{
		navi=nav;
		init();
	}

	public void init()
	{
		p1=new Spieler("Spieler1",15,15);
		lvl=new Level(38,32);
		setLayout(new BorderLayout());
		add(new JLabel(" "), BorderLayout.NORTH);
		add(new JLabel("   "), BorderLayout.WEST);
		add(new JLabel("   "), BorderLayout.EAST);
		add(lvl, BorderLayout.CENTER);
		start();
	}
	public void start()
	{
		timer=new Timer(this,2000);
		timer.start();
	}

public void keyPressed (KeyEvent key)
	{
		if(key.getKeyCode() == KeyEvent.VK_UP && p1.unten==false)
		{
			p1.oben=true;
			p1.unten=false;
			p1.links=false;
			p1.rechts=false;
		}else if(key.getKeyCode() == KeyEvent.VK_DOWN && p1.oben==false)
		{
			p1.oben=false;
			p1.unten=true;
			p1.links=false;
			p1.rechts=false;
		}else if(key.getKeyCode() == KeyEvent.VK_LEFT && p1.rechts==false)
		{
			p1.oben=false;
			p1.unten=false;
			p1.links=true;
			p1.rechts=false;
		}else if(key.getKeyCode() == KeyEvent.VK_RIGHT && p1.links==false)
		{
			p1.oben=false;
			p1.unten=false;
			p1.links=false;
			p1.rechts=true;
		}

	}
	public void keyTyped (KeyEvent key)
	{

	}

	public void keyReleased(KeyEvent key)
	{
	}


	public void move()
	{
		int x=p1.x;
		int y=p1.y;
		if(p1.oben)
		{
			y-=1;
		}
		if(p1.unten)
		{
			y+=1;
		}
		if(p1.links)
		{
			x-=1;
		}
		if(p1.rechts)
		{
			x+=1;
		}

		lvl.lvl[y][x].setValue(1);
		lvl.lvlZeichnen(p1.length);

	}
}

Code:
public class Spieler
{
	public String name;
	public boolean links,rechts,oben,unten;
	public int x,y;
	public int length;
	public int score;

	public Spieler(String name,int x, int y)
	{
		links=rechts=oben=unten=false;
		oben=true;
		this.name=name;
		this.x=x;
		this.y=y;
		score=0;
		length=5;
	}
}


Code:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Level extends JPanel
{
	public Tile[][] lvl;
	public int width=15;
	public Level(int x, int y)
	{
		this.setLayout(null);
		lvl=new Tile[y][x];
		for(int i=0; i<y; i++)
		{
			for(int s=0; s<x; s++)
			{
				if(i==0 || i==y-1 || s==0 || s==x-1)
					lvl[i][s]=new Tile(-1);
				else
					lvl[i][s]=new Tile(0);
			}
		}
		JLabel l_picture=new JLabel(new ImageIcon("Luft.gif"));
		l_picture.setBounds(0, 0, width*x, width*y);
		add(l_picture);
	}//Level




	public void lvlPruefen(int length1)
	{
		for(int i=0; i<lvl.length; i++)
		{
			for(int s=0; s<lvl[0].length; s++)
			{
				if(lvl[i][s].getValue()>0)
					lvl[i][s].setValue(lvl[i][s].getValue()+1);
				if((lvl[i][s].getValue()>length1))
						lvl[i][s].setValue(0);

			}
		}
	}


	public void lvlZeichnen(int l1)
	{
		lvlPruefen(l1);
		for(int i=0; i<lvl.length; i++)
		{
			for(int s=0; s<lvl[0].length; s++)
			{
				JLabel l_picture=new JLabel(new ImageIcon(lvl[i][s].getImage()));
				l_picture.setBounds(s*width, i*width, width, width);
				add(l_picture);
			}
		}
	}
}


Code:
import java.io.*;

public class Tile
{
	private int value;
	private String image;
	public Tile(int v)
	{
		value=v;
		setTile();
	}

	public int getValue()
	{
		return value;
	}

	public void setValue(int v)
	{
		value=v;
		setTile();
	}

	public String getImage()
	{
		return image;
	}

	public void setTile()
	{
		if(value==-1)
		{
			File f1=new File("Wand.gif");
			image=f1.getAbsolutePath();
		}else if(value>1)
		{
			File f1=new File("Schlange.gif");
			image=f1.getAbsolutePath();
		}
		else
		{
			File f1=new File("Luft.gif");
			image=f1.getAbsolutePath();
		}
	}
}

Code:
public class Timer extends Thread {
  private Mover move;
  private long wait;

  public Timer(Mover move, long wait) {
    this.move = move;
    this.wait = wait;
  }

  public void run() {
    while(!isInterrupted()) {
      try {
        Thread.sleep(wait);
        move.move();
      }
      catch(InterruptedException e) {
        interrupt();
      }
    }
  }
}


Code:
public interface Mover
{
	public void move();
}
 
S

SlaterB

Gast
erlaubt ist alles, aber wenig aussichtsreich,
Problem beschreiben + wenig Code sind sinnvoll,

bzw. viel Code ist ja recht nett, wenn er zum Testen gebraucht wird/ einfach dazu gehört,
dann aber bitte einigermaßen erklären was was ist, wo der Fehler steckt, Ablauf usw.
 

spong3bob

Aktives Mitglied
ok...
was das problem ist... wenn ichs wüsst würd ichs beheben :D
aber ich versuchs amal ein bisschen besser zu erklären ...
also, das ganze wird ein spiel (Snake)
d.h. ich speichere in einem Array (lvl) für jedes Element vom Spiel (Rechteckige bereiche z.B. Wand, Schlangestück) die Infos ab (Die Klasse Tile enthält diese infos)
das Array soll dann veranschaulicht werden (in der Klasse Level die methode zeichneLvl) so.. und jetzt komm ich dann schon zu meinem problem... per steuerung soll man die Snake bewegen können, d.h. ich hab eine Thread erzeugt (Timer) und beziehe diesen in mein Spiel ein (in der Klasse Spiel) jedes mal, wenn der "abläuft" soll die schlange in eine richtung fahren (je nachdem, was als letztes gedrückt wurde) und das lvl wird neu gezeichnet (ist eigentlich unnötiger aufwand, muss ich noch beheben) d.h. das schlangestück wird im array auf der neuen Position "eingefügt" und alles neu gezeichnet...
das problem ist jetzt, dass er das nicht macht..
kA, was er genau nicht macht, aber meine Snake bewegt sich NICHT!!!

Ich hoff das ganze is jetzt verständlicher....
und hoffe auf Lösungsvorschläge...
 
S

SlaterB

Gast
nun, dann solltest du zunächst mal ein bisschen mehr über die Abläufe in deinem Programm in Erfahrung bringen..,

z.B. im Timer, da gehört in die Schleife ein
System.out.println("neuer Schleifendurchlauf, rufe move() auf");

erscheint dies alle 2 Sekunden? wenn nicht dann läuft da wohl gar kein Timer..

---------

allerdings scheint mir deine Zeichen-Operation von Grund auf im Argen zu liegen,

was soll bitte
new ImageIcon(lvl.getImage())
sein?

wenn sich in deinem Programm noch nie eine Schnecke bewegt hat, reicht dann nicht erstmal EIN Bild zu haben?
müssen es gleich verschiede Level, verschiede Icons noch wer weiß was alles sein?
das macht es doch unnötig kompliziert,

na wie auch immer, klappt diese Taktik der vielen Bilder und vielen JLabel eigentlich?
kannst du in Tests mehrere davon zeichnen?
vielleicht wird das nur nicht neugezeichnet?

hilft
revalidate();
repaint();
und ähnliches, sind die Bilder überhaupt vorhanden?

du musst wahrscheinlich auch die alten Labels entfernen oder sollen die weiter angezeigt werden?
sparsamer ist vielleicht, die alten Labels weiterzuverwenden,
nur ihre Bounds neu zu setzen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Animation läuft nicht korrekt AWT, Swing, JavaFX & SWT 8
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
DeBoiJoshua 2D-Grafik Gif Animation will nicht laden AWT, Swing, JavaFX & SWT 1
S JavaFX WebView zeigt keine Animation AWT, Swing, JavaFX & SWT 5
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Ruckelfreie Animation AWT, Swing, JavaFX & SWT 20
L JavaFX Animation, erst zeichnen dann anzeigen AWT, Swing, JavaFX & SWT 4
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
J Java FX Koordinaten NACH Animation setzen, wie? AWT, Swing, JavaFX & SWT 9
Pr0m3theus Animation nach Event AWT, Swing, JavaFX & SWT 6
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
javampir 2D-Grafik Effizienz bei animation AWT, Swing, JavaFX & SWT 0
C Pixel-Rendering/Animation Performance in BufferedImage AWT, Swing, JavaFX & SWT 1
wolfgang63 JavaFX Animation, Kreise im vorgegebem Takt durchs Fenster laufen lassen AWT, Swing, JavaFX & SWT 3
P Ansatz für 2D Animation gesucht AWT, Swing, JavaFX & SWT 2
Thallius HHübsche Kopier Animation? AWT, Swing, JavaFX & SWT 5
L JPanel kleine "Animation" AWT, Swing, JavaFX & SWT 7
E Animation läuft nicht mehr flüssig AWT, Swing, JavaFX & SWT 8
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
B 2D-Grafik Dynamisches Erstellen von Images und deren Animation AWT, Swing, JavaFX & SWT 4
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
J GIF Animation AWT, Swing, JavaFX & SWT 2
B Swing Thread+Animation AWT, Swing, JavaFX & SWT 7
R Swing Animation mit JLayeredPane? AWT, Swing, JavaFX & SWT 8
K 3D-Grafik Animation AWT, Swing, JavaFX & SWT 4
U Gif Animation mit JLabel AWT, Swing, JavaFX & SWT 3
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Animation flackert AWT, Swing, JavaFX & SWT 8
R Polygon-Animation mit Darstellungsfehlern AWT, Swing, JavaFX & SWT 5
StupidAttack Animation, JComponent AWT, Swing, JavaFX & SWT 3
S SWT Rudimentäre Bild Animation AWT, Swing, JavaFX & SWT 3
C Animation auf einem JPanel AWT, Swing, JavaFX & SWT 3
A paintComponent() - Animation AWT, Swing, JavaFX & SWT 2
S Ich brauche eine Idee: Animation mit teil eines Bildes AWT, Swing, JavaFX & SWT 16
H "Animation" AWT, Swing, JavaFX & SWT 2
S Animation korrekt darstellen AWT, Swing, JavaFX & SWT 8
Developer_X Nach Animation Button adden AWT, Swing, JavaFX & SWT 3
Developer_X Swing JPanel-THE ANIMATION AWT, Swing, JavaFX & SWT 3
T JFrame und Scale-Animation AWT, Swing, JavaFX & SWT 8
M Animation berechnen AWT, Swing, JavaFX & SWT 4
M Animation auf JPanel per Knopfdruck AWT, Swing, JavaFX & SWT 12
P Problem bei Animation AWT, Swing, JavaFX & SWT 2
K Animation auf GUI AWT, Swing, JavaFX & SWT 3
R ruckelfreie animation AWT, Swing, JavaFX & SWT 8
T Animation will nicht trotz Thread. AWT, Swing, JavaFX & SWT 14
S animation Flackern trotz doppelpufferung wieso? AWT, Swing, JavaFX & SWT 2
m@nu Animation in GlassPane: Performanceeinbruch JFrame maximiert AWT, Swing, JavaFX & SWT 17
rudi.schraml Animation von Robotern auf FactoryFloor - repaint()? AWT, Swing, JavaFX & SWT 7
J Animation - Runnable AWT, Swing, JavaFX & SWT 3
O Animation in einem JPanel AWT, Swing, JavaFX & SWT 2
H Animation startet nicht/ Thread AWT, Swing, JavaFX & SWT 6
N Animation nach einem bestimmten Ereignis starten lassen? AWT, Swing, JavaFX & SWT 4
A Problem mit Animation AWT, Swing, JavaFX & SWT 4
M Animation mit Keylistener AWT, Swing, JavaFX & SWT 2
Juelin Text und Backgroundcolor im Label geht nicht AWT, Swing, JavaFX & SWT 7
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
B Swing Menü geht nicht AWT, Swing, JavaFX & SWT 5
izoards Bild ausdrucken - PageFormat setzen geht nicht AWT, Swing, JavaFX & SWT 5
J import javafx.fxml* bei JavaFX 13 geht nicht mehr AWT, Swing, JavaFX & SWT 7
S PatentComponent geht nicht? AWT, Swing, JavaFX & SWT 3
H automatische Anzahl der Spalten ermitteln -> geht nicht AWT, Swing, JavaFX & SWT 6
B JavaFX Wo liegt mein Gedankenfehler ??? KeyEvent geht nicht ... AWT, Swing, JavaFX & SWT 8
J Warum geht das nicht? if-else usw..... compilieren geht nicht -- HILFE!!! AWT, Swing, JavaFX & SWT 10
LexeB4F setValueAT geht nicht... wieso? AWT, Swing, JavaFX & SWT 14
T JLabel in die Mitte(JLabel.CENTER geht nicht) AWT, Swing, JavaFX & SWT 12
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
B Swing Form undecorated: Beim Bewegen geht die Maus immer automatisch zur linken Seite. AWT, Swing, JavaFX & SWT 7
I JavaFX - MP3 geht nicht AWT, Swing, JavaFX & SWT 4
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Swing Update von swing-TableModels per Thread. Eins geht, das andere nicht, warum? AWT, Swing, JavaFX & SWT 12
S KeyListener geht nicht AWT, Swing, JavaFX & SWT 12
B JInternalFrame Focus setzten geht nicht AWT, Swing, JavaFX & SWT 2
D Swing fullscreen switch geht nicht richtig AWT, Swing, JavaFX & SWT 8
F Icongröße ändern, geht das ? AWT, Swing, JavaFX & SWT 2
Q Swing MouseListener auf JTable geht nicht AWT, Swing, JavaFX & SWT 2
0 JTable Spaltenbreite automatisch an Inhalt anpassne geht nicht AWT, Swing, JavaFX & SWT 3
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
K Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran? AWT, Swing, JavaFX & SWT 7
R JTextField mit abgerundeten Ecken - Geht über Grenze hinaus AWT, Swing, JavaFX & SWT 4
B Java und ansprechende Benutzeroberflächen - geht das? AWT, Swing, JavaFX & SWT 16
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
C Java2D Transparenz geht bei einfärben verloren AWT, Swing, JavaFX & SWT 7
T transparent geht nicht (btw: rechteck) AWT, Swing, JavaFX & SWT 13
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Y LookAndFeel Nimbus einschalten geht nicht AWT, Swing, JavaFX & SWT 31
M Bild aus .jar Archiv laden geht nicht AWT, Swing, JavaFX & SWT 6
L Stopp Button geht nicht AWT, Swing, JavaFX & SWT 2
S JDesktopPane bei Button-Klick anzeigen geht nicht AWT, Swing, JavaFX & SWT 5
D JList Scrollbar machen geht nicht AWT, Swing, JavaFX & SWT 4
J Label mit transparentem hintergrund - geht das? AWT, Swing, JavaFX & SWT 21
H Sub-Dialog von modalem JDialog aus aufrufen - geht das? AWT, Swing, JavaFX & SWT 6
B Panels stapeln, geht das? AWT, Swing, JavaFX & SWT 7
P SetBounds auf JPanel geht nicht! AWT, Swing, JavaFX & SWT 2
S SWT Composite mit Layout Manager geht nicht AWT, Swing, JavaFX & SWT 4
S JPanel geht über Rand hinaus AWT, Swing, JavaFX & SWT 7
E setAlwaysOnTop geht verloren AWT, Swing, JavaFX & SWT 3
B Swing Variable in JTextfield geht nicht AWT, Swing, JavaFX & SWT 10
B Swing setDefaultButton geht nicht - Komponente fängt Events ab AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben