diff --git a/schiffe-versenken.py b/schiffe-versenken.py index b4a21f0..9a83b82 100644 --- a/schiffe-versenken.py +++ b/schiffe-versenken.py @@ -1,5 +1,3 @@ -# TO DO: Benachritigung bei komplettem Schiff-Abschuss? - import random, time matrixgr = 7 # Größe des Spielfeldes (7x7) @@ -193,13 +191,22 @@ def fuellFeld (Feld, belegFeld): def schiffVersenkt (spielerFeld, belegFeld, treffer): gr = getFeld (belegFeld, treffer [0], treffer [1]) + if gr == 1: + for i in range (-1, 2, 2): + if 0 <= treffer [0] + i < matrixgr: + setFeld (spielerFeld, treffer [0]+i, treffer [1], 1) + for i in range (-1, 2, 2): + if 0 <= treffer [1] + i < matrixgr: + setFeld (spielerFeld, treffer [0], treffer [1]+i, 1) + return True + schiff = [treffer] for i in range (-1, 2, 2): if 0 <= treffer [0] + i < matrixgr: if getFeld(belegFeld, treffer [0] + i, treffer [1]) == gr: e = 1 - while getFeld (belegFeld, treffer [0] + e*i, treffer [1]) == gr: + while 0<= treffer [0] + e*i < matrixgr and getFeld (belegFeld, treffer [0] + e*i, treffer [1]) == gr: schiff += [[treffer[0]+e*i, treffer [1]]] e += 1 @@ -207,7 +214,7 @@ def schiffVersenkt (spielerFeld, belegFeld, treffer): if 0 <= treffer [1] + i < matrixgr: if getFeld(belegFeld, treffer [0], treffer [1] + i) == gr: e = 1 - while getFeld (belegFeld, treffer [0], treffer [1] + e*i) == gr: + while 0<= treffer [1] + e*i < matrixgr and getFeld (belegFeld, treffer [0], treffer [1] + e*i) == gr: schiff += [[treffer[0], treffer [1]+e*i]] e += 1 @@ -251,7 +258,7 @@ def feldWahl (spielerFeld, belegSpFeld): if wert == 1 or wert == 3: print ("Dieses Feld wurde schon abgeschossen! Bitte ein anderes wählen!") - feldWahl (spielerFeld) + feldWahl (spielerFeld, belegSpFeld) return 0 # Rückgabe, damit die Funktion nicht mit falschem Wert weiterläuft setFeld (spielerFeld, feld[0],feld[1], 5) # Treffer wird eingetragen @@ -274,7 +281,7 @@ def feldWahl (spielerFeld, belegSpFeld): def Initialisiere (): # Erstellt die beiden Felder global gegnerFeld, eigenFeld, belegEigFeld, belegGegFeld - gegnerFeld= makeFeld () + gegnerFeld= makeFeld () belegGegFeld = makeFeld () fuellFeld (gegnerFeld, belegGegFeld) while summeFeld (gegnerFeld) != 34: @@ -360,8 +367,5 @@ def start (): print ("Das Spiel hat", int((time.time()-startzeit)//60), "Minuten", int(((time.time()-startzeit)%60)//1), "Sekunden gedauert.") w = str (input ("Noch eine Runde? [J: Ja/Irgendwas: Nein] ")) - if w.lower () == 'j': - start() - - -start() + if w.lower() == 'j': + start ()