Seite 1 von 1

Snake JavaGameGrid startet nicht

Verfasst: Sa Jun 20, 2015 12:15 pm
von sashpta
Hey,
ich bin grade dabei das Spiel Snake mit dem JavaGameGrid (http://www.java-online.ch/gamegrid/inde ... me.inc.php) zu programmieren.

Hab den Code mitlerweile soweit, dass man Snake mit der Tastatur bewegen können sollte und, dass der Schwanz von der Snake dem Kopf folgt, und, dass da Mäuse spawnen (glaube so wies jetzt ist spawnen viele auf ein mal, was ja eigentlich nicht sein sollte, aber das ist jetzt erst mal egal).

So nun das Problem, wenn ich den Code im JavaEditor starten will, sagt er mir, dass es Fehler gibt, wenn es welche gibt^^ wenn ich dann alle Fehler beseitigt hab und auf starten drücke, passiert einfach nichts. Das *grüne Starten Zeichen*, wird kurz zu nem roten Kreis, aber kurz danach wieder zum *grünen Starten Zeichen*. Sprich das Programm öffnet sich nicht so wie es sollte. (http://gyazo.com/a4255315d02312bd65b479210f584e65)

Hat irgendwer ne Idee wie ich dieses Problem lösen kann?
Es passiert ja nicht mal was, wenn ich nur das Spielfeld als Code habe :(
ist aber nur bei dem Snake Spiel so, alles andere geht, aber ich finde meine Fehler nicht :?

Code vom Spiel:

Code: Alles auswählen

import ch.aplu.jgamegrid.*;
import java.awt.Color;
import java.util.ArrayList;
import java.awt.event.KeyEvent;

public class Snake_0 extends GameGrid
{
	public Snake_0()
	{
		
		super(20 , 20 ,20, Color.darkGray, false);
		Snake snake = new Snake();
	
		addActor(snake, new Location(10, 10));
		snake.setDirection(Location.NORTH);

		for (int i = 0; i < 10; i++)
			addActor(new Mouse(), getRandomEmptyLocation());

		addKeyListener(snake);

		show();
		doRun();
		}


	public static void main(String[] args)
	{
		new Snake();
	}
}

// ______________ Snake ______________
class Snake extends Actor implements GGKeyListener
	{
		private ArrayList<TailSegment> tail = new ArrayList<TailSegment>();
		
		public Snake()
		{
			super(true, "sprites/snakeHead.gif");
		}

		public boolean keyPressed(KeyEvent evt)
		{
			switch (evt.getKeyCode())
			{
				case KeyEvent.VK_UP:
				setDirection(270);
				break;
				case KeyEvent.VK_RIGHT:
				setDirection(0);
				break;
				case KeyEvent.VK_LEFT:
				setDirection(180);
				break;
				case KeyEvent.VK_DOWN:
				setDirection(90);
				break;
			}
			move();
			tryToEat();

			return true;
		}

		public boolean keyReleased(KeyEvent evt)
		{
			return true;
		}

		public void initTail()
		{
			for (int i = 0; i < 3; i++)
    		{
      			TailSegment segment = new TailSegment();
      			gameGrid.addActor(segment, new Location(getX(), getY() + i + 1));
      			tail.add(segment);
    		}
		}

		public void act()
		{
			if (nbCycles == 0)
				initTail();

			int lastIndex = tail.size() - 1;
			for (int i = lastIndex; i > 0; i--)
				tail.get(i).setLocation(tail.get(i-1).getLocation());
			tail.get(0).setLocation(getLocation());
			move();

		}

		public void tryToEat()
		{
			Actor actor = gameGrid.getOneActorAt(getLocation(), Mouse.class);
			if (actor != null)
				actor.hide();
		}
			
	}
		
class Mouse extends Actor
{
	public Mouse()
	{
		super("sprites/sMouse.gif");
	}
}


// ____________ Snake Schwanz ________

class TailSegment extends Actor
{
	public TailSegment()
	{
		super("sprites/snakeTail.gif");
	}
}
Code nur vom Spielfeld

Code: Alles auswählen

import ch.aplu.jgamegrid.*;
import java.awt.Color;
import java.util.ArrayList;
import java.awt.event.KeyEvent;

public class Snake_0 extends GameGrid
{
  public Snake_0()
  {
      
      super(20 , 20 ,20, Color.darkGray, false);

    
      show();
      doRun();
    }
  
  
  public static void main(String[] args)
  {
      new Snake();
  }
}


Da ich den Order mit dem Sprites, Code und so nicht anhängen kann weil er zu groß ist schreib ich hier mal den Dropbox Link hin :)

https://www.dropbox.com/sh/1nxl69a63yi3 ... JEPga?dl=0

Hoffe ihr könnt mir helfen.

Re: Snake JavaGameGrid startet nicht

Verfasst: Sa Jun 20, 2015 12:52 pm
von mfro
Dein Programm tut genau das, was Du programmiert hast.

Deine main()-Methode instanziert ein Objekt der Klasse Snake, nur um es gleich anschließend wieder wegzuwerfen. Anschließend wird das Programm verlassen.

Der ganze Rest des Programms wird nie aufgerufen. Schau' dir deinen Programmfluß mal genau an.

Re: Snake JavaGameGrid startet nicht

Verfasst: Sa Jun 20, 2015 12:56 pm
von sashpta
Ah oke vielen Dank, hab wohl vergessen den Name zu "Snake_0" zu ändern

Re: Snake JavaGameGrid startet nicht

Verfasst: Sa Jun 20, 2015 12:59 pm
von Xin
sashpta hat geschrieben:Ah oke vielen Dank, hab wohl vergessen den Name zu "Snake_0" zu ändern
Die Klasse Snake gab es aber trotzdem? ^^

Wieso nummerst Du Klassennamen durch!?

Re: Snake JavaGameGrid startet nicht

Verfasst: Sa Jun 20, 2015 1:14 pm
von sashpta
Na auf der Seite ist ja der Anfang von dem Code und da steht das auch mit Snake_0 und da meins nicht ging hab ich das mit abgeschrieben :D