Bräuchte Hilfe bei meiner Aufgabe Schiffe Versenken?
Hallo, ich habe eine Aufgabe bekommen wo ich das Spiel Schiffe Versenken programmieren muss. Hätte eine Frage wie ich die Schiffe am besten platzieren könnte.
Methoden um die Schiffe zufällig im Spielfeld zu positionieren.
2 Antworten
Gar nicht so einfach. Das Problem ist, dass man ungeschickt anfangen kann und dann gar nicht alle Schiffe unterbringt. Ich sehe keinen Weg, der das garantiert verhindert. Wenn man stecken bleibt, bleibt wohl nur, einen Schritt rückwärts zu machen und zu hoffen, dass das nicht in einer Endlosschleife endet.
Sortiere die Schiffe (größtes zuerst)
Schiff = 1 (erstes Schiff, das platziert werden soll)
Solange Schiff <= #Schiffe UND kein Timeout:
Bestimme alle gültigen Positionen (Anker und Richtung) für das Schiff
Wenn keine Position existiert:
Wenn Schiff==1:
throw "Das Spielfeld ist zu klein."
--Schiff
entferne das Schiff
// alternativ: alle Schiffe entfernen
Sonst:
Platziere das Schiff an eine zufällige gültige Position
++Schiff
Ich nehme an, dass das Verfahren problemlos funktioniert, solange das Spielfeld nicht so klein ist, dass es nur wenige Möglichkeiten zulässt, alle Schiffe zu platzieren.
Definiere eine Klasse für die Schiffe in der du die Field Variablen:
1. Startposition (x, y)
2. Größe des Schiffs
3. Und Ausrichtung des Schiffs(mit einem Winkel angeben)
abspeicherts.
Und mit diesen Daten kannst du die Schiff ganz einfach auf einem Array abspeichern.