Schiffe versenken programmieren?

3 Antworten

Beim Schiffe Versenken hat jeder Spieler ein 10 mal 10 Feld, in das er verschiedene Schiffe am Anfang des Spiels einträgt. Wie viele ist unterschiedlich, ich glaube Standard ist 4 mal 2er und je einmal einen 3er, 4er und 5er. (Ein 2er z.B. belegt zwei Kästchen/Felder nebeneinander). Die Schiffe dürfen nicht Seite an Seite nebeneinader liegen, nur Ecke an Ecke. Beim Spielablauf "schießen" die Spieler abwechselnd auf eine Position (die x-Achse ist idR mit 1-10 betitelt, die y-Achse mit A-J) z.B. "F3". Der andere Spieler sagt dann, ob auf diesem Feld ein Treffer ist, in diesem Fall darf der andere Spieler erneut "schießen", oder daneben ist, oder das schiff "versenkt" ist, auch dann darf der andere Spieler erneut. Beide spieler notieren sich auf einem zweiten Spielfeld mit, wohin sie schon geschossen haben und wo die gegnerischen Schiffe dementsprechend liegen. Einer hat gewonnen, wenn alle gegnerischen Schiffe versenkt sind...

Zur Umsetzung: Ich denke es würden zwei zweidimensionale Arrays sinn ergeben, eins für jeden Spieler. Hier kannst du z.B. booleans einspeichern, je nachdem ob hier ein Schiff ist oder nicht... Wenn dann eine Usereingabe kommt wie "A1", dann nimmst du das erste Zeichen, machst daraus eine Zahl, ziehst dann von beiden Zahlen 1 ab und hast so deine Adresse im Array, also 0,0 und du kannst zurückgebeben, ob hier ein Schiff ist oder nicht... Bei der Festlegung, wo ein Schiff ist, kommt es darauf an ob Mensch gegen Mensch oder Mensch gegen Computer spielen soll... Ersteres ist deutlich einfacher: Hier überprüfst du nur, ob Startpunkt und Endpunkt des Schiffes nah genug aneinander sind und ob daneben kein Schiff ist... Das ganze machst du - je nachdem wie viele Schiffe erstellt werden sollen - in einer Schleife. Wenn der Computer Schiffe erstellen soll könntest du per Zufall ein Feld aussuchen, und mit einem zweiten Zufall die Richtung. Wenn die Richtung z.B. nach rechts ist, dann wird auf die x-koorinate bei einem 4er Schiff 3 drauf addiert, und alles dazwischen ausgefüllt. Auch hier musst du aber prüfen dass sich keine Schiffe berühren oder kreuzen.

Ich hoffe ich konnte dir ein wenig helfen...

Woher ich das weiß:Hobby – Programmiere seit eineinhalb Jahren

Lade dir eine App herunter wo man das spielen kann. Dann lernst du die Spielregeln