Bräuchte Hilfe bei meiner Aufgabe Schiffe Versenken?

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.