Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1516:interaktives_spiel_gegen_ki

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

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 =====
  
ws1516/interaktives_spiel_gegen_ki.1462136115.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)