ich muss für morgen ein Spiel abgeben, was ich programmiert habe. Jedoch komme ich einfach nicht weiter. Ich habe 4 Gewinnt programmiert und hänge jetzt bei der Programmierung fest, wie ein Gewinner bestimmt wird. Es wäre super lieb, wenn sich jemand die Zeit nehmen könnte und mir helfen könnte, mein Problem zu lösen!
Hier mein Code:
Code: Alles auswählen
import MModul
#Willkommen
print('Herzlich willkommen zu 4gewinnt')
print('Die Regeln:' )
print('1. Geben Sie, wenn Sie einen Stein setzen wollen die Zahl der Reihe an in der Sie den Stein legen wollen')
print('2. SIE können gewinnen, indem Sie 4 Steine in eine Reihe bekommen (hochkant, waagerecht oder schief)')
print(30*'*')
print('Viel Spaß. Spieler 1 (x). Spieler 2 (y)')
#Definition des Spielfeldes
print(' 1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ')
reihe1 = ['_','_','_','_','_','_','_']
reihe2 = ['_','_','_','_','_','_','_']
reihe3 = ['_','_','_','_','_','_','_']
reihe4 = ['_','_','_','_','_','_','_']
reihe5 = ['_','_','_','_','_','_','_']
reihe6 = ['_','_','_','_','_','_','_']
spielfeld = [reihe1, reihe2, reihe3 , reihe4, reihe5, reihe6]
#Ausgabe des Spielfeldes
reihe_2 = 0
while reihe_2 < 6:
print(spielfeld[reihe_2])
reihe_2 = reihe_2 + 1
#Spielschleife
gewonnen = 0
reihe_2 = 0
while gewonnen != 1:
spielfeld = MModul.setzen_1 (spielfeld)
print(' 1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ')
while reihe_2 < 6:
print(spielfeld[reihe_2])
reihe_2 = reihe_2 + 1
reihe_2 = 0
spielfeld,x,y = MModul.setzen_1(spielfeld)(x)
#spielfeld = MModul.setzen_2 (spielfeld)
print(' 1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ')
while reihe_2 < 6:
print(spielfeld[reihe_2])
reihe_2 = reihe_2 + 1
gewonnen = MModul.gewinnabfrage(spielfeld,x,y)
reihe_2 = 0
print('Herzlichen Glückwunsch, Sie haben gewonnen!')
Code: Alles auswählen
def setzen_1(spielfeld):
#Spieler 1 (x)
gesetzt = 0
reihe_zaehler = 5
print ('Spieler 1: ')
stelle = int(input('Bitte geben Sie die Stelle zum Setzen an: '))
index = stelle - 1
while gesetzt != 1:
if spielfeld[reihe_zaehler ][index] == 'x' or spielfeld[reihe_zaehler ][index] == 'y':
if reihe_zaehler != 0 :
reihe_zaehler = reihe_zaehler - 1
elif reihe_zaehler == 0 and spielfeld [0][index] == 'x' or spielfeld [0][index] == 'y':
stelle = int(input('Bitte geben Sie eine andere Stelle an: '))
index = stelle - 1
reihe_zaehler = 5
spielfeld[reihe_zaehler][index] = 'x'
gesetzt = gesetzt + 1
else:
if spielfeld [0][index] == 'x' or spielfeld [0][index] == 'y':
index = index
else:
spielfeld[reihe_zaehler][index] = 'x'
gesetzt = gesetzt + 1
x = index
y = reihe_zaehler
return spielfeld
def setzen_2(spielfeld):
#Spieler 2 (y)
gesetzt = 0
reihe_zaehler = 5
print ('Spieler 2: ')
stelle = int(input('Bitte geben Sie die Stelle zum Setzen an: '))
index = stelle - 1
while gesetzt != 1:
if spielfeld[reihe_zaehler ][index] == 'x' or spielfeld[reihe_zaehler ][index] == 'y':
if reihe_zaehler != 0 :
reihe_zaehler = reihe_zaehler - 1
elif reihe_zaehler == 0 and spielfeld [0][index] == 'x' or spielfeld [0][index] == 'y':
stelle = int(input('Bitte geben Sie eine andere Stelle an: '))
index = stelle - 1
reihe_zaehler = 5
spielfeld[reihe_zaehler][index] = 'y'
gesetzt = gesetzt + 1
else:
if spielfeld [0][index] == 'x' or spielfeld [0][index] == 'y':
index = index
else:
spielfeld[reihe_zaehler][index] = 'y'
gesetzt = gesetzt + 1
x = index
y = reihe_zaehler
return spielfeld
def gewinnabfrage(spielfeld,x,y): #x = Reihe, y = Spalte (beides mal 0 als Start für Index)
linkszaehler = 0 #Zaehler der gleichen Zeichen nach Links
rechtszaehler = 0 #Zaehler der gleichen Zeichen nach Rechts
zaehlernachrechts = 0 #aktuellerZaehlernachrechts
zaehlernachlinks = 0 #aktuellerZaehlernachlinks
laengelinks = x
while laengelinks < 0:
laengelinks = laengelinks + 1
laengerechts = 6 - x
if laengerechts > 4:
laengerechts = 4
if laengelinks > 4:
laengelinks = 4
while zaehlernachrechts < laengerechts:
if spielfeld[y][x] == spielfeld [y] [x+zaehlernachrechts]:
rechtszaehler += 1
zaehlernachrechts += 1
while zaehlernachlinks < laengelinks:
if spielfeld[y][x] == spielfeld [y] [x+zaehlernachlinks]:
linkszaehler += 1
zaehlernachlinks += 1
if rechtszaehler == 4 or linkszaehler == 4:
gewonnen = 1
return gewonnen