Hilfe, komme nicht weiter in meinem JAVA-Spiel

kafka

Mitglied
Hallo liebes Forum,

ich beschäftige mich seit ca. 1 Jahr mit JAVA, bin also ein Anfänger. In der folgenden Auszug aus meinem Spiel "Goldregen" in dem es die Klassen: Welt,Abfall,Schatz, Gefahrgut(Bombe) und die abstrakte Klasse Gegenstand gibt geht es darum dass in der Welt die Abfälle,Schätze und Bomben vom Himmel fallen und man mit der Maus die Schätze einsammeln muss um einen Punkt zu kriegen, wenn man die Afälle berührt sollte es einen Minuspunkt geben und wenn die Bomben berührt werden sollte GAME OVER sein.
Mein Problem liegt darin das ich gelesen habe das man mit der Methode "instanceof" arbeiten kann um einen Score zählen zulassen, weiss aber nicht wie das wirklich funktionieren soll ???:L und wie ich den Score dann anzeigen lassen soll??
Unten habe ich die Welt gepostet, mit meinem ansatz ganz unten:


Java:
package goldenes_paket;

import basiX.*;

public class Welt {

	private Fenster f;

	private Maus m;

	private Schatz[] s;

	private Gefahrgut[] g;

	private Abfall[] a;

	private int max = 20, anzahl = 0, wert = 0;

	private Gegenstand[] ge;

	public Welt() {

		f = new Fenster("GOLDREGEN", 600, 400);
		f.ladeBildInZeichenflaeche("/Bilder/hintergrund.jpg");
		m = new Maus();

		// s = new Schatz[10];

		// g = new Gefahrgut[10];

		// a = new Abfall[15];

		ge = new Gegenstand[max];

		/*
		 * for (int i = 0; i < 10; i++) { a[i] = new Abfall(Hilfe.zufall(50,
		 * 400), 0, 50, 50, 350); a[i].setzeFallgeschwindigkeit(0.15); }
		 * 
		 * for (int i = 0; i < 10; i++) { s[i] = new Schatz(Hilfe.zufall(50,
		 * 400), 0, 50, 50, 350); } for (int i = 0; i < 10; i++) { g[i] = new
		 * Gefahrgut(Hilfe.zufall(50, 400), 0, 50, 50, 350);
		 * g[i].setzeFallgeschwindigkeit(0.25); }
		 */

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new Welt().fuehreAus();
	}

	public void fuehreAus() {
		Hilfe.kurzePause();

		Dialog.info("Goldregen", "1.Schatz= 1 Punkt  2. Abfall = -1 Punkt   BOMBE = GAME OVER");
		
		while (true) {

			if (anzahl < max && Hilfe.zufall(0, 100) < 15) {
				switch (Hilfe.zufall(1, 3)) {
				case 1:
					ge[anzahl] = new Schatz(Hilfe.zufall(1, 600), 40, Hilfe.zufall(10,
							25), Hilfe.zufall(10, 25), 500);
					break;
				case 2:
					ge[anzahl] = new  Abfall(Hilfe.zufall(1, 600), 40, Hilfe.zufall(10,
							25), Hilfe.zufall(10, 25), 500);
					break;
				case 3: 
					ge[anzahl] = new Gefahrgut(Hilfe.zufall(1, 600), 40,Hilfe.zufall(10,
							25), Hilfe.zufall(
							10, 25), 350);
					break;
				}
				anzahl++;
			}
		

//?????????????????????????????????????????????????

	for (int i = 0; i < anzahl; i++) {
				ge[i].falle();
				ge[i].reagiereAufMaus(m.hPosition(), m.vPosition());
			
				 if (ge[i] instanceof Schatz) { 
					 wert += ((Schatz) ge[i]).wert(); 
		 }
		
			
			
			}
			
			
		
		}
			 

			}
}

LG

Kafka
 
Ich würde an deiner Stelle damit anfangen, dass du am Anfang nur Gegenstände von einem Typ fallen lässt. Wenn du das hinbekommen hast, kannst du es ja weiter ausbauen.
 
Ich glaube instanceOf ist fuer dich nicht das richtige Mittel,
und man sollte sich immer sehr ganau ueberlegen ob man es wirklich braucht.
In vielen faellen macht ein besseres design eine instanceOf abfrage ueberflussig.

wann braucht man instanceOf?
mit instanceOf hast du die moeglichkeit, wenn du gegen eine Abstrate Klasse oder ein Interface impl. hast
wieder auf die wirklichen Instanzen zu kommen
Java:
for(Baum b : wald){
  if(b instanceOf Tanne){
     //mach was mit nadeln
  }else if(b instanceOf Eiche){
  // mach was mit blattern
 }
}
hier waere eine Klasse NadelBaum sicherlich schoener, aber instanceOf kann einem machmal
davor bewahren alles nochmal machen zu muessen

Da du aber schon die abstracte Klasse Gegenstand hast solltest du dort die Methode wert() schom impl.
und diese dann im Schatz und im Abfall ueberschreiben
 

Zurück
Oben