Mastermind programmieren
Verfasst: Dienstag 20. Juni 2017, 09:31
Guten Tag,
ich bin Python Anfänger und versuche das Spiel Mastermind mit dazugehöriger GUI zu programmieren. Hier ein Link falls jemand das Spiel nicht kennen sollte. https://de.wikipedia.org/wiki/Mastermind_(Spiel)
Um die GUI zu programmieren sind Kenntnisse in Objektorientierter Programmierung Voraussetzung oder sehe ich das falsch? Ich habe das grundlegende Spiel schon programmiert, jedoch bin ich mir nicht sicher ob das so richtig ist oder wie man es besser machen sollte. Wie gesagt bin Anfänger
. Wäre cool wenn einige Experten sich mal meine Code anschauen und mir Tipps geben, auch gerne zur späteren Umsetzung der GUI! Habe vor die GUI mit PyQt5 zu machen.
Hier der Code:
ich bin Python Anfänger und versuche das Spiel Mastermind mit dazugehöriger GUI zu programmieren. Hier ein Link falls jemand das Spiel nicht kennen sollte. https://de.wikipedia.org/wiki/Mastermind_(Spiel)
Um die GUI zu programmieren sind Kenntnisse in Objektorientierter Programmierung Voraussetzung oder sehe ich das falsch? Ich habe das grundlegende Spiel schon programmiert, jedoch bin ich mir nicht sicher ob das so richtig ist oder wie man es besser machen sollte. Wie gesagt bin Anfänger

Hier der Code:
Code: Alles auswählen
import random
class Spiel:
def __init__(self):
random.seed() # Bei jedem Start der Berechnung mit gleichem Startwert
self.farben = []
for i in range(0,4):
self.farben.append(random.randint(1,6))
def spielen(self):
x = self.farben
for i in range(1,8):
c = Master(i)
y = c.kombination() # Vier Zahlen vom Spieler werden in eine Liste geschrieben um diese vergleichen zu können
self.erg = c.raten(x,y) # Auswertung der gesteckten Kombination
## Ergebnis
print("\nHinweis: "+str(self.erg)+"\n")
if self.erg == ['+','+','+','+']:
print("=== Richtig===\nDu hast die Lösung in "+ str(i) +" Versuchen gefunden!")
elif self.erg != ['+','+','+','+'] and i ==7:
print("===Game Over===\nDu hast es nicht geschafft die richtige Lösung zu finden.")
else:
print("===Falsch===\nDu hast noch "+ str(7-i)+" Versuch(e)\n")
print("Die richtige Lösung lautet: "+ str(x))
class Master:
def __init__(self,i):
self.versuche = i
def kombination(self):
print("Bitte Kombination stecken!")
b = []
self.counter = 0
while self.counter <4:
try:
b.append(int(input("Bitte Platz " +str(self.counter+1) + " stecken:")))
if b[self.counter] > 6 or b[self.counter] < 1:
del b[self.counter]
continue
else:
self.counter += 1
except ValueError:
print("Keine gültige Eingabe")
print("\nEingesteckte Kombination: " + str(b))
return b
def raten(self,a,b): # Die Kombinationen werden verglichen und zwei Listen erstellt (z_s & z_w).
# In z_s werden die Volltreffer eingetragen, in z_w die Halbtreffer.
z_w = [] # Ein + ist dabei ein Volltreffer ein o ein Halbtreffer
z_s = []
for k in range(1,7):
zaehler_a = 0
zaehler_b = 0
zaehler_schwarz = 0
for i in range(0,4):
if a[i] == k and b[i] == k:
z_s.append('+')
zaehler_schwarz += 1
elif a[i] == k:
zaehler_a += 1
elif b[i] == k:
zaehler_b += 1
if zaehler_a>0 and zaehler_b == zaehler_a and (zaehler_a-zaehler_schwarz ==1 or zaehler_a-zaehler_schwarz ==2):
z_w.append('o')
elif zaehler_a>0 and zaehler_b > zaehler_a and zaehler_a-zaehler_schwarz ==1:
z_w.append('o')
elif zaehler_a>0 and zaehler_a > zaehler_b and zaehler_b-zaehler_schwarz ==1:
z_w.append('o')
t = z_s + z_w
return t
# Hauptprogramm
s = None
s = Spiel()
s.spielen()