# Wie funktioniert hier ein Score ?



## kafka (30. Dez 2011)

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 und wie ich den Score dann anzeigen lassen soll??
Unten habe ich die Welt gepostet, mit meinem ansatz ganz unten:



```
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 (g[i].liegtAufDemBoden() == true) { g[i].explodiere(); }
				 if (ge[i] instanceof Schatz) { 
					 wert += ((Schatz) ge[i]).wert(); 
		 }
		
			
			
			}
			
			
		
		}
			 

			}
}
```


LG

Kafka


----------



## Marcinek (30. Dez 2011)

Hallo,

du hattest hierzu bereits ein Thread offen.

http://www.java-forum.org/java-basics-anfaenger-themen/129338-hilfe-komme-meinem-java-spiel.html

Gruß,

Martin


----------



## Helgon (30. Dez 2011)

Wie du ihn anzeigen lassen kannst? 

http://www.java-forum.org/awt-swing-swt/43939-zeichnen-swing-tutorial.html
Graphics2D (Java 2 Platform SE v1.4.2)


```
drawStrign()
```


----------



## kafka (30. Dez 2011)

Marcinek hat gesagt.:


> Hallo,
> 
> du hattest hierzu bereits ein Thread offen.
> 
> ...



Ich weiss  aber ich dachte, da es sich hierbei ja um ein spiel handelt, dass es deshalb besser ist in der kategorie Spiele die frage zu stelle. 

LG 

Kafka


----------



## Marcinek (30. Dez 2011)

Füge eine (abstrakte) Methode getScore() in der abstrakten Klasse "Gegenstand" ein.

Dann kannst du diese in den abgeleiteten Klassen entsprechend implementieren und die Punkte zurückgeben.

Da brauchste nix mit instance of zu machen. Dies deutet in den meisten Fällen auf ein fehlerhaftes Design hin.


----------

