Hallo miteinander,
ich wollt mich mal an Snake probieren und stoße auf folgendes Problem:
Ich habe eine Klasse die von Canvas erbt und beim initialisieren des Applets richtig zeichnet (Spielfeld ohne schlange).
Wenn ich jetzt aber die repaint() methode außerhalb der paint() mehtode aufrufe, dann passiert nix! Die grüne schlange erscheint erst, wenn ich die Größe des Applet-Fensters mit der Maus verändere.
Das heisst der Rest des Codes funktioniert, da ich das Spielfeld mit einem Array darstelle und beim initialisieren alles mit Nullen gefüllt ist. Erst mit dem Buttonklick wird die Schlange "aufs" Array gesetzt.
Die Paint-Methode durchforstet mittels for-Schleifen das Spielfeld nach != 0 und malt dann ein grünes Kästchen (soll die Schlange sein).
Hier ein bisschen code:
bin wirklich ratlos, so weit ich weiss sollte es doch funktionieren... hab mit google geforstet aber nischt gefunden ;( - oder ich beherrsche die Kunst des suchens nicht.
Bin für jede Mühe dankbar
lg. Turmfalke
ich wollt mich mal an Snake probieren und stoße auf folgendes Problem:
Ich habe eine Klasse die von Canvas erbt und beim initialisieren des Applets richtig zeichnet (Spielfeld ohne schlange).
Wenn ich jetzt aber die repaint() methode außerhalb der paint() mehtode aufrufe, dann passiert nix! Die grüne schlange erscheint erst, wenn ich die Größe des Applet-Fensters mit der Maus verändere.
Das heisst der Rest des Codes funktioniert, da ich das Spielfeld mit einem Array darstelle und beim initialisieren alles mit Nullen gefüllt ist. Erst mit dem Buttonklick wird die Schlange "aufs" Array gesetzt.
Die Paint-Methode durchforstet mittels for-Schleifen das Spielfeld nach != 0 und malt dann ein grünes Kästchen (soll die Schlange sein).
Hier ein bisschen code:
Java:
import java.awt.*;
public class GameArea extends Canvas
{
/**
*
*/
private static final long serialVersionUID = 1L;
private int fieldMax, feldgroesse;
private static int gameAreaArray[][] = new int[20][20];
private static boolean start;
private Lines lines;
private Snake snake;
public GameArea()
{
//Spielfeld initialisieren
this.setBackground(Color.black);
initField();
lines = new Lines();
snake = new Snake();
start = false;
}
public void initField()
{
fieldMax = 500;
feldgroesse = fieldMax/20;
for (int i=0; i<20 ;i++)
{
for(int j=0; j<20; j++)
{gameAreaArray[i][j]=0;}
}
}
public void aktualGameAreaArray(int X, int Y, int Value)
{
gameAreaArray[X][Y] = Value;
}
public void aktualGameAreaField() //Button Klick
{
if (start == false)
{
for (int i=1;i<5;i++)
{
int x = 6+i;
int y = 4;
aktualGameAreaArray(x,y,i);
snake.snakeDir(i, "East");
System.out.println("Test");
}
System.out.println("repaint aufgerufen");
[B]repaint();[/B]
System.out.println("ausgeführt?");
snake.setSnakeLength(4);
}
}
public void [B]paint[/B] (Graphics g)
{
lines.paint(g, fieldMax); //gitterlinien
for (int x=0;x<20;x++)
{
for(int y=0;y<20;y++)
{
if(gameAreaArray[x][y]>0)
{
snake.paint(g, x, y, feldgroesse);
[I]//snake ist das Objekt, indem ich das kästchen male.[/I]
}
}
}
}
}
bin wirklich ratlos, so weit ich weiss sollte es doch funktionieren... hab mit google geforstet aber nischt gefunden ;( - oder ich beherrsche die Kunst des suchens nicht.
Bin für jede Mühe dankbar
lg. Turmfalke