# Virtuelle Dartscheibe



## buzz_lightzyear (30. Aug 2008)

Hallo,

ich habe bis jetzt mit Java eigentlich nur simple Konsolenapplikationen programmiert. Nun möchte ich mal weitegehen und eine virtuelle Dartscheibe programmieren. Das ganz soll so ausschauen: Man soll auf das getroffene Feld bzw. die getroffenen Felder klicken und das Programm soll automatisch rauf- oder runterzählen. Das mit dem Zählen ist auch nicht das problem, nur wie soll ich so eine Dartscheibe darstellen?

Kann mir jemand einen Tipp geben? 

danke & lg :?:


----------



## 0x7F800000 (31. Aug 2008)

was meinst du mit "rauf und runterzählen" was zählen? kann man in darts punkte verlieren oder wie?

zum zeichnen:
Am besten die dartscheibe als GIF abspeichern, und dann mit Graphics.drawImage() zeichnen.

zum erkennen der felder:
koordinaten des zielmarkers in polarkoordinaten umrechnen, dann:
-zwei spezialfälle für kleinen radius ("Auge") abfragen
-ansonsten dem raidius einen multiplikator zuordnen (zwei dünne ringe, wo es mehr pkte gibt als sonstwo)
-dem winkel eine punktzahl zuordnen (array mit 20 shorts) die sind ja zum glück alle gleichgroß, daher geht das recht einfach.

zum zielen:
ich würd mal vorschlagen: steuerung mit der maus, und einem brownsche-bewegung-mäßigen störzittern, das mit der zeit immer stärker wird. Ansonsten macht das spiel auf dem pc nicht allzuviel spaß


----------



## Marco13 (31. Aug 2008)

Die Scheibe per Hand selbst zu zeichnen wäre auch eine Möglichkeit. Mit graphics.drawOval bzw. graphics.fillOval kann man sich die Kreise zeichnen ...


----------



## r.w. (1. Sep 2008)

Oder mal ein anderer Ansatz, wenn man sich die Auswertung der Cursorposition sparen möchte:
Die Dartscheibe als Grafik (z.B. in Photoshop erstellen) und dabei die Werte in den Farben der
anzuklickenden Felder kodieren. Dann beschränkt sich die Auswertung im Quellcode auf die
Feststellung des RGB-Farbcodes unter der Mausposition, aus dem dann der anzuzeigende Wert
ermittelt werden kann. Die Dartscheibe muss allerdings farbsicher abgespeichert werden (z.B. als PNG).

Ist zwar vielleicht keine Antwort, die man in einem Java-Forum erwartet,   ;-)
aber ich fand die Idee so interessant, dass ich es gestern mal ausprobiert habe.  

VG r.w.


----------



## 0x7F800000 (1. Sep 2008)

nja, die idee ist zwar ein wenig pixelig, aber ziemlich elegant, muss ich sagen


----------



## Quaxli (2. Sep 2008)

r.w. hat gesagt.:
			
		

> ..
> Ist zwar vielleicht keine Antwort, die man in einem Java-Forum erwartet,   ;-)
> ..



Warum nicht? Man spart sich die ganze Rechnerei, ob ein Punkt innerhalb eines bestimmten Kreises liegt.

Wenn man es wengier pixelig mag: 2 Bilder entwerfen!

1. Die Zielscheibe, die angezeigt wird. Bunt, hochauflösend, alles was Du willst
2. Das Bild von 1. auf wenige eindeutige Farben reduziert

Das 1. Bild ist das was angezeigt wird. Das 2. Bild bleibt im Hintergrund, aber die Farbermittlung der Trefferzone läuft über das 2. Bild.

ABER:
Der Vorschlag insgesamt ist für eine runde Zielscheibe aber IMO etwas zu aufwändig. Es ist ja jetzt nicht höhere Mathematik, wenn man ermitteln will, ob ein Punkt innerhalb eines Kreises ist. Das ist eher eine Lösung für nicht-geometrische Zielscheiben.


----------



## r.w. (2. Sep 2008)

Da ich mich immer häufiger hier finde, musste ich mich jetzt doch mal anmelden. ;-)
Kurz zu mir: Auch wenn ich schon seit Jahren mit anderen Programmiersprachen zu tun habe,
betrachte ich mich, was Java betrifft, doch noch als Einsteiger. Die Sprache ist für mich als 
Apple- und PC-User in erster Linie durch ihre Plattformunabhängigkeit interessant. 

In diesem Forum bin ich bei der Suche nach Antworten, oder auch einfach nur beim Stöbern schon 
häufig fündig geworden. Aus eigener Erfahrung weiss ich, welche Arbeit und Verantwortung der 
Betrieb so eines Forums mit sich bringt. Darum direkt an dieser Stelle einmal "Thumbs Up" für die 
Macher und alle, die das Projekt mit Leben füllen. 




			
				Quaxli hat gesagt.:
			
		

> Wenn man es wengier pixelig mag: 2 Bilder entwerfen!
> ...


Soooo pixelig muss das gar nicht sein. Wenn man die Farben etwas geschickt codiert, kann man
sich das 2. Image auch sparen. Im Fall der Dartscheibe fallen so geringe Farbdifferenzen kaum auf. 
Ich hab das Image, mit dem ich getestet hab, gerade nicht zur Hand, kann es aber bei Bedarf 
später gerne mal hoch laden.




			
				Quaxli hat gesagt.:
			
		

> ...
> ABER:
> Der Vorschlag insgesamt ist für eine runde Zielscheibe aber IMO etwas zu aufwändig. Es ist ja jetzt nicht höhere Mathematik, wenn man ermitteln will, ob ein Punkt innerhalb eines Kreises ist. Das ist eher eine Lösung für nicht-geometrische Zielscheiben.



In dem Punkt hast Du allerdings Recht. Das Erstellen der PNG-Datei hat in diesem Fall länger gedauert, als die Programmierung.  
Es ging mir hier aber auch nur grundsätzlich um einen anderen, vielleicht nicht so offensichtlichen, Lösungsansatz.

VG ROlf


----------



## r.w. (2. Sep 2008)

Sorry, Doppelposting durch Verbindungsstörung.


----------

