| 

.NET C# Java Javascript Exception

4
Hallo das bekannte Spiel Schiffeversenken mithilfe von PictureBoxen und mit 2 mehrdimensionale Arrays (X und Y) geschrieben.

Ob es ein 2er 3er etc. Schiff ist wird mit dem Namen angegeben name = 2erShip
oder name = water.

Jetzt schießt der Computergegner nur zufällig irgendwo hin.

Will aber das der Systematisch die Schiffe versenkt.

Also:

Schießen, wenn Treffer dann gleich daneben nochmal schießen, wenn Treffer dann weiter und weiter...
wenn kein Treffer, dann in die andere Richtung.

Wenn versenkt, dann wieder zufällig schießen.


Hat jemand ein Ansatz?
23.05.2011
ZebRa 221 1 8
2 Antworten
3
Na, du hast deinen Algorithmus doch schon selbst ganz gut beschrieben: Wenn Treffer, dann gleich daneben nochmal schießen. Wo hapert es denn genau? Wobei man beim ersten Treffer natürlich noch raten muss, in welcher Richtung das Schiff ausgehend vom Treffer liegt (oben, unten, links oder rechts). Diese Richtung würde ich raten (1:4 Chance) ab dem zweiten Treffer in der richtigen Richtung halt "weiterschießen" (x/Y-Achse eins rauf/runter, je nach geratenem Richtungsmodus). Wenn kein Treffer mehr und Schiff noch nciht "versenkt", dann ausgehend von der Position vom ersten Treffer (merken!) das gleiche nochmals in der Gegenrichtung.

Ist schon etwas Rumprogrammiererei, wenn man es so straight-forward macht. Aber die Aufgabe klingt eh nach einer Übung... und du willst doch sicher nicht "schummeln", oder? Viel Spaß! ;-)
23.05.2011
Achso 340 1 6
1
Genau so würde ich es machen. Der Computer muss - genau so wie ein menschlicher Gegner - raten. Wenn der Computer alles von vorn herein weiß, ist es ja auch langweilig.
johny7 23.05.2011
2
Man kann den Algorithmus noch weiter verfeinern, indem man auf Präferenzen des Gegners eingeht oder systematisch vorgeht:
- Das Raten systematisieren, indem man zuerst jedes vierte Feld beschiesst, dann jedes dritte usw.
- Das systematische Beschiessen anpassen, je nach noch nicht versenken Schiffen
- Schiffs-Cluster erkennen
- Präferenz der Lage der Schiffe (horizontal/vertikal) erkennen
24.05.2011
oopexpert 455 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH