core mechanics
This commit is contained in:
@ -1,8 +1,4 @@
|
||||
|
||||
## TO DO: NUR DIE SCHON ABGESCHOSSENEN FELDER ANZEIGEN LASSEN
|
||||
## TO DO: DIE SCHIFFE AUCH VERTIKAL PLATZIEREN --> FIXEN
|
||||
## TO DO: CHECKUMFELD FIXEN
|
||||
|
||||
|
||||
import random
|
||||
|
||||
@ -12,7 +8,9 @@ def makeFeld ():
|
||||
feld = [[[0] for i in range(matrixgr)] for e in range(matrixgr)] # Erzeugt ein mit Nullen befülltes Feld, was bedeutet, dass dort weder ein (zerstörtes) Schiff ist, noch ein fehlgeschlagener Angriff stattgefunden hat
|
||||
return feld
|
||||
|
||||
def printFeld (spielerFeld):
|
||||
def printFeld (spielerFeld, modus):
|
||||
print ("\n 1 2 3 4 5 6 7")
|
||||
NZeile = 'A'
|
||||
for i in spielerFeld:
|
||||
zeile = ''
|
||||
for n in i:
|
||||
@ -21,10 +19,14 @@ def printFeld (spielerFeld):
|
||||
elif n== [1]:
|
||||
zeile+=' [ . ] ' # Feld wurde abgeschossen
|
||||
elif n==[2]:
|
||||
zeile+=' [ ■ ] ' # Auf dem Feld ist ein ungetroffenes Schiff
|
||||
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
|
||||
print ('\n'+zeile)
|
||||
print ('\n' + NZeile + ' ' + zeile)
|
||||
NZeile = chr(ord(NZeile)+1)
|
||||
print ('\n')
|
||||
|
||||
def setFeld (spielerFeld, zeile, spalte, wert):
|
||||
@ -150,24 +152,68 @@ def fuellFeld (Feld):
|
||||
setSchiff (Feld, 1)
|
||||
|
||||
|
||||
print ("Gegnerisches Feld wird generiert...\n\n")
|
||||
def feldWahl (spielerFeld):
|
||||
feld = str(input("Wähle das Feld, das abgeschossen werden soll! "))
|
||||
if len(feld) != 2:
|
||||
print ("Fehlerhafte Eingabe! \n Ein Feld wird beispielsweise folgendermaßen angegeben:\n A1 [Enter]")
|
||||
feldWahl (spielerFeld)
|
||||
return 0 # Rückgabe, damit die Funktion nicht mit falschem Wert weiterläuft
|
||||
|
||||
feld = [ord(feld[0].lower())-97, int(feld[1])-1] # Weil die Zeilen traditionell nach Buchstaben benannt werden, muss erst der Buchstabe in seinen ASCII-Wert umgewandelt werden und dann um 97 verringert (ASCII 97 = 'a')
|
||||
|
||||
if not (0 <= feld [0] <= matrixgr-1 and 0 <= feld [1] <= matrixgr-1):
|
||||
print ("Dieses Feld existiert nicht! Bitte ein anderes wählen!")
|
||||
feldWahl (spielerFeld)
|
||||
return 0 # Rückgabe, damit die Funktion nicht mit falschem Wert weiterläuft
|
||||
|
||||
gegnerFeld= makeFeld ()
|
||||
fuellFeld (gegnerFeld)
|
||||
while summeFeld (gegnerFeld) != 34:
|
||||
wert = getFeld (spielerFeld,feld[0],feld[1])
|
||||
|
||||
if wert == 1 or wert == 3:
|
||||
print ("Dieses Feld wurde schon abgeschossen! Bitte ein anderes wählen!")
|
||||
feldWahl (spielerFeld)
|
||||
return 0 # Rückgabe, damit die Funktion nicht mit falschem Wert weiterläuft
|
||||
|
||||
setFeld (spielerFeld, feld[0],feld[1], wert + 1) # Treffer wird eingetragen
|
||||
printFeld (spielerFeld, 't')
|
||||
|
||||
|
||||
if wert+1 == 3:
|
||||
print ("TREFFER! \n Es darf direkt ein neues Feld gewählt werden!")
|
||||
feldWahl (spielerFeld)
|
||||
else:
|
||||
print ("Der Bot zieht nun...")
|
||||
|
||||
|
||||
|
||||
def Initialisiere ():
|
||||
global gegnerFeld, eigenFeld
|
||||
print ("Gegnerisches Feld wird generiert...\n\n")
|
||||
gegnerFeld= makeFeld ()
|
||||
fuellFeld (gegnerFeld)
|
||||
while summeFeld (gegnerFeld) != 34:
|
||||
gegnerFeld= makeFeld ()
|
||||
fuellFeld (gegnerFeld)
|
||||
|
||||
print ("Das gegnerische Feld wurde generiert!\nDieses wurde für dich zufällig generiert: \n")
|
||||
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 ()
|
||||
print ("Das gegnerische Feld wurde generiert!\nDieses wurde für dich zufällig generiert: ")
|
||||
akzeptiert = False
|
||||
eing = ''
|
||||
while eing != ('J' or 'j'):
|
||||
if eing != '':
|
||||
print ("Neues Feld wird generiert. Das kann etwas dauern...")
|
||||
eigenFeld = makeFeld ()
|
||||
fuellFeld (eigenFeld)
|
||||
printFeld (eigenFeld)
|
||||
eing = str(input("Ist dieses Feld akzeptabel? [J: Ja / Irgendwas: Nein, Neues!] "))
|
||||
while summeFeld (eigenFeld) != 34:
|
||||
eigenFeld= makeFeld ()
|
||||
fuellFeld (eigenFeld)
|
||||
printFeld (eigenFeld, 'a')
|
||||
eing = str(input("Ist dieses Feld akzeptabel? [J: Ja / Irgendwas: Nein, Neues!] "))
|
||||
|
||||
def start ():
|
||||
# SchwierigkeitsWahl ()
|
||||
Initialisiere ()
|
||||
print ("So sieht das gegnerische Feld aus:")
|
||||
printFeld (gegnerFeld, 't')
|
||||
while True:
|
||||
feldWahl (gegnerFeld)
|
||||
|
||||
start ()
|
||||
Reference in New Issue
Block a user