Snake JavaGameGrid startet nicht

Objektorientierte Programmiersprache auf Basis einer virtuellen Maschine (https://www.oracle.com/java/)
Antworten
sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Snake JavaGameGrid startet nicht

Beitrag von sashpta » Sa Jun 20, 2015 12:15 pm

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.

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Snake JavaGameGrid startet nicht

Beitrag von mfro » Sa Jun 20, 2015 12:52 pm

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.
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Snake JavaGameGrid startet nicht

Beitrag von sashpta » Sa Jun 20, 2015 12:56 pm

Ah oke vielen Dank, hab wohl vergessen den Name zu "Snake_0" zu ändern

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Snake JavaGameGrid startet nicht

Beitrag von Xin » Sa Jun 20, 2015 12:59 pm

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!?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Snake JavaGameGrid startet nicht

Beitrag von sashpta » Sa Jun 20, 2015 1:14 pm

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

Antworten