Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ws1516:interaktives_spiel_gegen_ki [2016/05/01 22:55] yuko [Minimühle] |
ws1516:interaktives_spiel_gegen_ki [2016/05/10 14:46] (aktuell) |
||
---|---|---|---|
Zeile 169: | Zeile 169: | ||
(4,4):[(4,2),(2,4) ] | (4,4):[(4,2),(2,4) ] | ||
} | } | ||
- | def alle_zuege(farbe, brett): | + | def alle_zuege(farbe, brett): |
'''gibt eine Liste für alle möglichen Züge einer Farbe aus''' | '''gibt eine Liste für alle möglichen Züge einer Farbe aus''' | ||
startpunkte = [] | startpunkte = [] | ||
Zeile 176: | Zeile 176: | ||
for i in felder_liste(brett, farbe): | for i in felder_liste(brett, farbe): | ||
if ein_zug(i, brett) != False: | if ein_zug(i, brett) != False: | ||
+ | wb.update(ein_zug(i, brett)) | ||
+ | return wb | ||
+ | |||
Zeile 222: | Zeile 225: | ||
k += n.count(farbe) | k += n.count(farbe) | ||
return k | return k | ||
+ | |||
+ | def wer_ist_am_zug(n, erste_farbe): | ||
+ | if (n-1)%2 == 0: | ||
+ | return erste_farbe | ||
+ | else: | ||
+ | if erste_farbe == w: | ||
+ | return s | ||
+ | else: | ||
+ | return w | ||
== Das Spiel beginnt: Legephase == | == Das Spiel beginnt: Legephase == | ||
== Das Spiel geht weiter: Ziehphase == | == Das Spiel geht weiter: Ziehphase == | ||
+ | |||
+ | |||
def move_to(start, ziel, farbe, brett): | def move_to(start, ziel, farbe, brett): | ||
Zeile 245: | Zeile 259: | ||
else: | else: | ||
return False | return False | ||
+ | |||
+ | def stein_wegnehmen(farbe, brett): | ||
+ | '''gibt eine liste mit allen steinen die nach einem zug weggenommen werden können''' | ||
+ | l=[] | ||
+ | for i in moegliche_zuege: | ||
+ | if brett[i[0]][i[1]] != farbe and brett[i[0]][i[1]] != 'x': | ||
+ | if i not in sum(pruefe_muehle(farbe, brett),[]): | ||
+ | l.append(i) | ||
+ | return l | ||
+ | |||
+ | def ziehen(brett, farbe): | ||
+ | '''sucht den besten Zug für eine der farben und führt ihn aus''' | ||
+ | if len(alle_zuege(farbe, brett)) == 0: | ||
+ | print str(farbe)+' hat verloren' | ||
+ | else: | ||
+ | start= random.choice(alle_zuege(farbe, brett).keys()) | ||
+ | ziel = random.choice(alle_zuege(farbe, brett)[start]) | ||
+ | move_to(start, ziel, farbe, brett) | ||
+ | |||
+ | def wegnehmen(vor_zug, nach_zug, brett, am_zug): | ||
+ | if vor_zug != nach_zug and len(nach_zug)>= len(vor_zug): | ||
+ | stein = random.choice(stein_wegnehmen(am_zug, brett)) | ||
+ | brett[stein[0]][stein[1]] = 'x' | ||
+ | print str(am_zug) +' hat einen Stein weggenommen' | ||
+ | |||
+ | == Spielend == | ||
+ | |||
+ | def spielende(brett): | ||
+ | '''Der Gewinner wird zurückgegeben''' | ||
+ | if len(alle_zuege(w, brett)) == 0 or spielstand(w, brett) <= 2: | ||
+ | return s | ||
+ | if len(alle_zuege(s, brett)) == 0 or spielstand(s, brett) <= 2: | ||
+ | return w | ||
+ | |||
+ | == Funktion für einen Zufälligen speilverlauf == | ||
+ | Steine setzen | ||
+ | |||
+ | def steine_setzen(farbe, brett): | ||
+ | neues_spiel(brett) | ||
+ | n=0 | ||
+ | while n<=11: | ||
+ | n= n+1 | ||
+ | am_zug = wer_ist_am_zug(n, farbe) | ||
+ | vor_zug = pruefe_muehle(am_zug, brett) | ||
+ | feld = random.choice(felder_liste(brett, 'x')) | ||
+ | brett[feld[0]][feld[1]] = am_zug | ||
+ | nach_zug = pruefe_muehle(am_zug,brett) | ||
+ | print str(am_zug)+' setzt:' | ||
+ | zeige_brett(brett) | ||
+ | print'_________________' | ||
+ | if wegnehmen(vor_zug, nach_zug, brett, am_zug) == True: | ||
+ | zeige_brett(brett) | ||
+ | print '__________' | ||
+ | |||
+ | n=0 | ||
+ | print 'Setzen:' | ||
+ | steine_setzen(w,spielbrett) | ||
+ | print 'Spielstart:' | ||
+ | |||
+ | while True: | ||
+ | if n == 0: | ||
+ | zeige_brett(spielbrett) | ||
+ | n=n+1 | ||
+ | am_zug = wer_ist_am_zug(n,w) | ||
+ | print '____________________' | ||
+ | print str(am_zug) +' zieht:' | ||
+ | vor_zug = pruefe_muehle(am_zug, spielbrett) | ||
+ | ziehen(spielbrett, am_zug) | ||
+ | nach_zug = pruefe_muehle(am_zug,spielbrett) | ||
+ | wegnehmen(vor_zug, nach_zug, spielbrett, am_zug) | ||
+ | zeige_brett(spielbrett) | ||
+ | if spielende(spielbrett) != None: | ||
+ | print 'spiel ist vorbei' | ||
+ | print n | ||
+ | break | ||
+ | |||
+ | |||
===== Planung und Protukol ===== | ===== Planung und Protukol ===== | ||