From ac78675529ccf0474ec17e4876f4610dba535274 Mon Sep 17 00:00:00 2001 From: Paul Martin Date: Sun, 2 Jul 2023 17:53:19 +0200 Subject: [PATCH] perfect --- schiffe-versenken.py | 88 +++++++++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 37 deletions(-) diff --git a/schiffe-versenken.py b/schiffe-versenken.py index be8432f..b0a29b3 100644 --- a/schiffe-versenken.py +++ b/schiffe-versenken.py @@ -9,32 +9,47 @@ def makeFeld (): return feld -def printFeld (spielerFeld, modus): - print ("\n"+ spielerFeld [matrixgr]) - print ("\n 1 2 3 4 5 6 7") - NZeile = 'A' - for i in spielerFeld: - zeile = '' - for n in i: - if n == [0]: - zeile+=' [ ] ' # Feld ist leer - elif n== [1]: - zeile+=' [ . ] ' # Feld wurde abgeschossen - elif n==[2]: - if modus == 'a': # Zeige ALLE Felder an - zeile+=' [ ■ ] ' # Auf dem Feld ist ein ungetroffenes Schiff - elif modus == 't': # Zeige NUR TREFFER an - zeile+=' [ ] ' - elif n==[3]: - zeile+=' [ X ] ' # Das Schiff auf dem Feld wurde getroffen - - if ord(NZeile.lower())-97 < matrixgr: - print ('\n' + NZeile + ' ' + zeile) - else: - print ('\n' + ' ' + zeile) +def printFelder(): + # Von Feld1 werden nur die abgeschossenen Felder gezeigt, von Feld2 alle. - NZeile = chr(ord(NZeile)+1) - print ('\n') + output = [[gegnerFeld [matrixgr]],[' ' + eigenFeld [matrixgr]]] + + for i in output: + i+= [" 1 2 3 4 5 6 7 "] + + + if len (gegnerFeld) != len(eigenFeld): + return ("Error: Listen nicht gleich lang!!") + felder = [gegnerFeld, eigenFeld] + for f in range (2): + NZeile = 'A' + for i in felder[f]: + zeile = '' + for n in i: + if n == [0]: + if f == 1: # Zeige ALLE Felder an + zeile+=' [ ] ' # Feld ist leer + elif f==0: # Zeige NUR TREFFER an, ~ um vom eigenen Feld zu differenzieren + zeile+=' [ ~ ] ' + elif n== [1]: + zeile+=' [ . ] ' # Feld wurde abgeschossen + elif n==[2]: + if f == 1: # Zeige ALLE Felder an + zeile+=' [ ■ ] ' # Auf dem Feld ist ein ungetroffenes Schiff + elif f== 0: # Zeige NUR TREFFER an + zeile+=' [ ~ ] ' + elif n==[3]: + zeile+=' [ X ] ' # Das Schiff auf dem Feld wurde getroffen + + if ord(NZeile.lower())-97 < matrixgr: + output [f] += [NZeile + ' ' + zeile] + else: + output [f] += [' ' + zeile] + NZeile = chr(ord(NZeile)+1) + + for i in range (0,len(output[0])): + print (output [0][i], ' ' + output [1][i]) + print ("") def setFeld (spielerFeld, zeile, spalte, wert): @@ -172,7 +187,6 @@ def fuellFeld (Feld): def feldWahl (spielerFeld): - printFeld (spielerFeld, 't') feld = str(input("Wähle das Feld, das abgeschossen werden soll! ")) feld.replace (" ", "") if (len(feld) != 2 ) or (not feld[0].isalpha ()) or (not feld[1].isdigit()): @@ -196,11 +210,11 @@ def feldWahl (spielerFeld): return 0 # Rückgabe, damit die Funktion nicht mit falschem Wert weiterläuft setFeld (spielerFeld, feld[0],feld[1], 5) # Treffer wird eingetragen - printFeld (spielerFeld, 't') + printFelder() if wert+1 == 3: - print ("TREFFER! \n Es darf direkt ein neues Feld gewählt werden!") + print ("TREFFER!\nEs darf direkt ein neues Feld gewählt werden!") feldWahl (spielerFeld) else: print ("Leider kein Treffer! Der Bot zieht nun...") @@ -214,20 +228,19 @@ def Initialisiere (): gegnerFeld= makeFeld () fuellFeld (gegnerFeld) gegnerFeld += ['Gegnerisches Feld:'] - print ("Das gegnerische Feld wurde generiert!\nDieses wurde für dich zufällig generiert: ") + print ("Das gegnerische Feld wurde generiert!") akzeptiert = False eing = '' while eing != ('J' or 'j'): - if eing != '': - print ("Neues Feld wird generiert. Das kann etwas dauern...") eigenFeld = makeFeld () fuellFeld (eigenFeld) while summeFeld (eigenFeld) != 34: eigenFeld= makeFeld () fuellFeld (eigenFeld) eigenFeld += ['Eigenes Feld:'] - printFeld (eigenFeld, 'a') + printFelder() eing = str(input("Ist dieses Feld akzeptabel? [J: Ja / Irgendwas: Nein, Neues!] ")) + print ("\n\n\n") def SchwierigkeitsWahl (): @@ -246,6 +259,7 @@ def SchwierigkeitsWahl (): def botwahl (spielerFeld, diff): + print (diff) diff *= 10 wurf = random.randint (-5, 105) feld = [random.randint (0, matrixgr-1), random.randint (0, matrixgr-1)] @@ -259,11 +273,11 @@ def botwahl (spielerFeld, diff): feld = [random.randint (0, matrixgr-1), random.randint (0, matrixgr-1)] setFeld (spielerFeld, feld[0], feld[1], 5) - printFeld (spielerFeld, 'a') + printFelder() if treffer: print ("Der Bot hat getroffen! Er darf noch ein Feld wählen!") - time.sleep (1) - botwahl (spielerFeld, diff/11) + time.sleep (2) + botwahl (spielerFeld, diff/10.25) else: print ("Der Bot hat nicht getroffen! Du bist nun dran!") @@ -274,11 +288,11 @@ def botwahl (spielerFeld, diff): def start (): level = SchwierigkeitsWahl () Initialisiere () + printFelder () while zweicheck (eigenFeld) and zweicheck (gegnerFeld): feldWahl (gegnerFeld) - time.sleep (1) - botwahl (eigenFeld, level) time.sleep (2) + botwahl (eigenFeld, level) start () \ No newline at end of file