# Quaxlis 2D Tutorial....Probleme nach hinzufügen der Kollisionsabfrage



## Gossi (17. Okt 2011)

Hiho,

Ich habe mal wieder nen Problem:

Ich habe Quaxli's Tutorial bearbeitet und nun, nach dem Hinzufügen der Kollisionsabfrage, werden die Racketen nicht mehr angzeigt, obwohl die Funktionen alle aufgerufen werden.

Hier mal der Link zum Eclipse Projekt:
MEGAUPLOAD - The leading online storage and file delivery service

Für eure (hoffentlich erfolgreiche) Hilfe bin ich jez schon dankbar


----------



## Gossi (27. Okt 2011)

Keiner ne Idee?


----------



## hdi (27. Okt 2011)

Keiner hat Lust, sich von einem Popup-verseuchten One-Click-Hoster dein gesamtes Projekt runterzuladen, zu entpacken, und nach dem Fehler zu suchen. Wie wär's, wenn du den Fehler eingrenzt und uns hier direkt den enstsprechenden Code zeigst. Du sagst, nach Einfügen der Kollisionsabfrage werden die Raketen nicht mehr angezeigt. Also, poste mal den Code für Kollisionsabfrage und für's Zeichnen der Raketen.


----------



## Quaxli (27. Okt 2011)

Oder schau' wo Du Fehler beim Abschreiben gemacht hast.


----------



## Gossi (31. Okt 2011)

hdi hat gesagt.:


> Keiner hat Lust, sich von einem Popup-verseuchten One-Click-Hoster dein gesamtes Projekt runterzuladen, zu entpacken, und nach dem Fehler zu suchen. Wie wär's, wenn du den Fehler eingrenzt und uns hier direkt den enstsprechenden Code zeigst. Du sagst, nach Einfügen der Kollisionsabfrage werden die Raketen nicht mehr angezeigt. Also, poste mal den Code für Kollisionsabfrage und für's Zeichnen der Raketen.



Hier mal alle Funktionen/Methoden die mit den Raketen zu tun haben...


```
private void createRockets() {
		int x = 0;
		int y = (int) (Math.random() * getHeight());
		int hori = (int) (Math.random() * 2);

		if (hori == 0) {
			x -= 30;
		} else {
			x = getWidth() + 30;
		}

		Rocket rock = new Rocket(rocket, x, y, 100, this);
		if (x < 0) {
			rock.setHorizontalSpeed(100);
		} else {
			rock.setHorizontalSpeed(-100);
		}

		ListIterator<Sprite> it = actors.listIterator();
		it.add(rock);
	}
```


```
public void createExplosion(final int x, final int y) {
		ListIterator<Sprite> it = actors.listIterator();
		it.add(new Explosion(explosion, x, y, 100, this));
	}
```


```
@Override
	public void actionPerformed(final ActionEvent e) {
		if (isStarted() && e.getSource().equals(timer)) {
			createRockets();
		}

	}
```


```
private void doLogic() {
		for (ListIterator<Sprite> it = actors.listIterator(); it.hasNext();) {
			Sprite r = it.next();
			r.doLogic(delta);

			if (r.remove) {
				it.remove();
			}
		}

		for (int i = 0; i < actors.size(); i++) {
			for (int j = 0; j < actors.size(); j++) {
				Sprite s1 = actors.get(i);
				Sprite s2 = actors.get(j);
				s1.collidedWith(s2);
			}
		}

		if (copter.remove && gameover == 0) {
			gameover = System.currentTimeMillis();
		}
		if (gameover > 0) {
			if (System.currentTimeMillis() - gameover > 3000) {
				stopGame();
			}
		}
	}
```


```
@Override
	public boolean collidedWith(final Sprite s) {

		if (remove) {
			return false;
		}

		if (this.intersects(s)) {
			if (s instanceof Heli) {
				parent.createExplosion((int) getX(), (int) getY());
				parent.createExplosion((int) s.getX(), (int) s.getY());
				remove = true;
				s.remove = true;
				return true;
			}
			if (s instanceof Rocket) {
				parent.createExplosion((int) getX(), (int) getY());
				parent.createExplosion((int) s.getX(), (int) s.getY());
				remove = true;
				s.remove = true;
				return true;
			}
		}
		return false;
	}
```



Quaxli hat gesagt.:


> Oder schau' wo Du Fehler beim Abschreiben gemacht hast.



Hab ich schon ^^

PS:
Ich hab auch schon in die verschiedenen Methoden syso's gemacht, die Methoden werden richtig aufgerufen.


----------



## Quaxli (7. Nov 2011)

So, Fehler ist gefunden, nachdem ich den kompletten Code zur Verfügung hatte.
Doch ein Falsch-Abschreiber.   - einmal nicht genau hingeguckt und schon ist's passiert 
(Es sind immer die Kleinigkeiten, die den meisten Ärger machen )

Für alle die es interessiert hier nochmal die Lösung:

Statt


```
for (int i = 0; i < actors.size(); i++) {
            for (int j = 0; j < actors.size(); j++) {
                Sprite s1 = actors.get(i);
                Sprite s2 = actors.get(j);
                s1.collidedWith(s2);
            }
        }
```

muß es in Zeile 2 heißen


```
for (int i = 0; i < actors.size(); i++) {
            for (int j = i+1; j < actors.size(); j++) {
                Sprite s1 = actors.get(i);
                Sprite s2 = actors.get(j);
                s1.collidedWith(s2);
            }
        }
```

da sonst durch j =0 die Rakete mit sich selbst "kollisionsgeprüft" wird und aus dem Spiel fliegt.


----------



## Gossi (8. Nov 2011)

Quaxli hat gesagt.:


> da sonst durch j =0 die Rakete mit sich selbst "kollisionsgeprüft" wird und aus dem Spiel fliegt.



-.- danke für die schnelle Hilfe, hab dir den Code doch gestern ers geschickt


----------



## Quaxli (8. Nov 2011)

Es ist ja eigentlich mein Code - da kennt man sich aus


----------



## Gossi (8. Nov 2011)

Quaxli hat gesagt.:


> Es ist ja eigentlich mein Code - da kennt man sich aus



Jo, nochmals danke, aber ist es normal das die Explosionen bleiben, oder ist das wieder nen Fehler beim abschreiben gewesen ^^


----------



## Quaxli (8. Nov 2011)

Du solltest mehr lesen - besonders das E-Mail, daß ich Dir zurück geschrieben habe. 

In der Klasse Sprite gibt es noch einen kleinen Tippfehler: In der Methode doLogic steht bei Dir


```
if (animation > delta)
```

es muß aber heißen:


```
if (animation > delay)
```

Dann funktionieren alle Animationen auch die der Raketen und des Helikopters


----------



## Gossi (8. Nov 2011)

Dann funktionieren alle Animationen auch die der Raketen und des Helikopters [/QUOTE]

Danke, hab leider das problem, dass ich hier auf der Arbeit nur mitm Handy draußen inner Raucherpause mein E-Mail-Fach abrufen kann


----------



## Gossi (9. Nov 2011)

So, ich habe nochmal ne .jar fertig gemacht.

Was kann das Spiel?
-Die Grundlagen aus Quaxlis Tutorial
-Mit "M" können die Sounds an-/ausgeschaltet werden
-Eingabe des Spielernamens (pflicht)
-Highscore Funktion
-Auswahl des Schwierigkeitsgrades (Leicht, Normal und Schwer)
-Für jede Schwierigkeitsstufe einen eigenen Highscore
-Ablage des Highscores ins Hom-Verzeichnis des Users

Was soll noch dazu kommen?
-Ablage der Scores in eine Datei (immo 3), is net schwer, aber bin immo zu faul xD
-Bessere gestaltung des Gui
-Handbuch ^^
-Pause-Funktion
-Level-System um die Schwierigkeit im Spiel zu erhöhen...

Anhang anzeigen 3651


----------



## Mofi (9. Nov 2011)

Ich geh mal davon aus, dass du ein wenig Feedback haben willst 

Was mir aufgefallen ist:
- Die Wolken fliegen oben über den Text, so dass man ihn nicht lesen kann
- Helis Propeller ist nicht immer zu sehen, wenn man in den dunkleren Bereich fliegt
- Das Spiel hängt sich bei mir früher oder später auf (Hab nur leicht und normal getestet)
- Wenn ich meinen Namen eingegeben habe und danach die Schwierigkeit einstellen soll, steht da immernoch "Playername" im Text und Titel (Wirkt merkwürdig...^^)

Ansonsten zum Spielprinzip...Ist halt Quaxlis Helispiel  
Wobei ich es leicht träge finde, da Heli langsamer fliegt...Für mich wirkt er dadurch schwerfälliger und als würde es ihm schwer fallen den Raketen auszuweichen. Ist aber auch nur ein Gefühl und andere können das durchaus auch anders empfinden  

Also für mich ist der normale Modus zu schwer, aber ich bin in der Hinsicht auch etwas unfähig. Bei Leicht bin ich nicht weit gekommen, da mir das Spiel eingefroren ist. Schwer wollte ich nicht testen 

Wie die Highscore aussieht, konnt ich nicht feststellen. Ich weiß nicht obs daran liegt, dass das Spiel abgestürtzt ist oder obs am Rechner liegt, aber ich hab keine Dateien gefunden.

Ich weiß, dass hier eher Kritikpunkte stehen...Aber es ist schwierig die Idee zu beurteilen, wenn es eigentlich nicht deine war ^^ zumindestens fühlt es sich so an, weil das Spiel bzw die Idee aus Quaxlis Tutorial ist.


----------



## Gossi (9. Nov 2011)

Mofi hat gesagt.:


> Ich geh mal davon aus, dass du ein wenig Feedback haben willst
> 
> Was mir aufgefallen ist:
> - Die Wolken fliegen oben über den Text, so dass man ihn nicht lesen kann
> ...



Ich möchte ja auch gerne Kritik bekommen und dieses SPiel erstmal ausreizen bevor ich dann mal vom Grunde an anfange nen eigenes Spiel zu schreiben.


----------



## Gossi (9. Nov 2011)

Gossi hat gesagt.:


> So, ich habe nochmal ne .jar fertig gemacht.
> *
> Was kann das Spiel?*
> -Die Grundlagen aus Quaxlis Tutorial
> ...



Version 0.2.5 Beta is fertig.

Hab mich mal um nen paar Kleinigkeiten gekümmrt die Mofi angesprochen hatte, hoffe es läuft jez besser

Anhang anzeigen 3656


----------



## Mofi (9. Nov 2011)

Es waren nicht viele Punkte...einmal 77 und beim anderen weiß ich nicht mehr so genau...Da bin ich mehrmals gestorben bis es abgestürtzt ist.

Der Rechner ist hier Windows xp Wo man sich immer irgendwie im Netzwerk anmeldet, daher weiß ich auch nicht genau wie das abläuft...Dadurch ist der Pfad vllt falsch...Keine Ahnung. Auf normalen Home Rechner sollte es vermutlich funktionieren 

Was sonst der Rechner hat (RAM, GraKa) kann ich dir nicht sagen, da ich nicht nachschauen kann...Aber wenn ich dran denke (eher unwahrscheinlich, da ich alles mögliche vergesse) schau ich heut Abend zuhause mal ob dein Spiel da besser funktioniert.


Als Anhaltspunkt: Dein Spiel hier hat 64 fps.

(Als Vergleich: Meine angefangenen Spiele haben hier auch 64 fps und zuhause 92 fps. Daher kann der Rechner nicht viel drauf haben )


----------



## Gossi (10. Nov 2011)

So, ich habe nochmal ne .jar fertig gemacht.

Was kann das Spiel?
-Die Grundlagen aus Quaxlis Tutorial
-Mit "M" können die Sounds an-/ausgeschaltet werden
-Eingabe des Spielernamens (pflicht)
-Highscore Funktion
-Auswahl des Schwierigkeitsgrades (Leicht, Normal und Schwer)
-Für jede Schwierigkeitsstufe einen eigenen Highscore
-Ablage des Highscores ins Hom-Verzeichnis des Users
-Level-System um die Schwierigkeit im Spiel zu erhöhen..

Neu:
-Handbuch (Steht zwar nicht viel drinne, aber egal)
-Menü
-Spielername und Schwierigkeit muss nicht jedesmal neu eingegeben werden (ändern über das Menü)

Sonstiges:
-Bugfixes

Was soll noch dazu kommen?
-Ablage der Scores in eine Datei (immo 3), is net schwer, aber bin immo zu faul xD

Anhang anzeigen 3660


----------

