def joueCoup(jeu, coup): v = game.getCaseVal(jeu, coup[0], coup[1]) game.setCaseVal(jeu, coup[0], coup[1], 0) distribue(jeu, coup, v) game.addCoupJoue(jeu, coup) game.changeJoueur(jeu) game.resetCoupsValides(jeu)
def joueCoup(jeu,coup): v=game.getCaseVal(jeu,coup[0],coup[1]) game.setCaseVal(jeu,coup[0],coup[1],0) distribue(jeu,coup,v) game.addCoupJoues(jeu,coup) jeu[2]=None game.changeJoueur(jeu)
def joueCoup(jeu, coup): game.addCoupJoue(jeu, coup) j = game.getJoueur(jeu) s = jeu[-1] e = encadrements(jeu,coup,True) adv = (j%2) + 1 game.setCaseVal(jeu, coup[0], coup[1], j) for d in e: l = coup[0] c = coup[1] while True : l+=d[0] c+=d[1] if game.getCaseVal(jeu,l,c)==j : break game.setCaseVal(jeu,l,c,j) s[j-1]+=1 s[adv-1]-=1 jeu[-1] = [0, 0] for i in range(8): for j in range(8): sc = game.getCaseVal(jeu, i, j) if (sc != 0): jeu[-1][sc - 1] += 1 game.changeJoueur(jeu) game.resetCoupsValides(jeu)
def joueCoup(jeu, coup) : """jeu*coup->jeu re-initialise le jeu en fonction du coup joue """ nb_graines = game.getCaseVal(jeu, coup[0], coup[1]) game.setCaseVal(jeu, coup[0], coup[1], 0) distribueJeu(jeu, coup, nb_graines) jeu[3].append(coup) jeu[2]=None game.changeJoueur(jeu)
def joueCoup(jeu, coup): game.addCoupJoue(jeu, coup) j = game.getJoueur(jeu) i = 0 while i < 6 and game.getCaseVal(jeu, i, coup[1]) == 0: i += 1 game.setCaseVal(jeu, i - 1, coup[1], j) game.changeJoueur(jeu) game.resetCoupsValides(jeu)
def joueCoup(jeu,coup): """jeu*coup->void Joue un coup a l'aide de la fonction distribue Hypothese:le coup est valide """ v=game.getCaseVal(jeu,coup[0],coup[1]) game.setCaseVal(jeu,coup[0],coup[1],0) distribue(jeu,coup,v) game.addCoupJoue(jeu,coup) game.changeJoueur(jeu) game.razCoupsValides(jeu)
def joueCoup(jeu, coup): save = game.getCopieJeu( jeu ) #on simule d'abord le coup pour vérifier que celui-ci ne va pas affamer l'adversaire v = game.getCaseVal(save, coup[0], coup[1]) game.setCaseVal(save, coup[0], coup[1], 0) case = distribue( save, coup, v ) #la fonction distribue renvoie la derniere case ou une graine a ete depose score = game.getScore(save, game.getJoueur(save)) while case[0] == game.getJoueurAdverse(save) - 1 and ( save[0][case[0]][case[1]] == 2 or save[0][case[0]][case[1]] == 3): score = score + recolte(save, case) case = nextCase(save, case)
def retournePieces(jeu, coup, direction): """jeu * coup* Pair[int int] -> Pair[nat nat] Attribue au joueur courant les pieces encadres selon la direction donnee a partir du coup Retourne le nombre de pieces perdues ou gagnees par chacun des deux joueurs La direction est definie de la meme maniere que dans la fonction checkEncadrement """ ret = [0, 0] sud = direction[0] est = direction[1] l = coup[0] c = coup[1] l += sud c += est if (l > 7) or (l < 0) or (c > 7) or (c < 0): raise Exception('Pas d encadrement ici!') j = game.getJoueur(jeu) v = game.getCaseVal(jeu, l, c) if (v == j) or (v == 0): raise Exception('Pas d encadrement ici !') game.setCaseVal(jeu, l, c, j) if (j == 1): ret[0] += 1 ret[1] -= 1 else: ret[0] -= 1 ret[1] += 1 while True: l += sud c += est #print str(l)+','+str(c) if (l > 7) or (l < 0) or (c > 7) or (c < 0): raise Exception('Pas d encadrement ici !') v = game.getCaseVal(jeu, l, c) if (v == 0): raise Exception('Pas d encadrement ici !') #print str(v)+','+str(j) if (v == j): return ret else: game.setCaseVal(jeu, l, c, j) if (j == 1): ret[0] += 1 ret[1] -= 1 else: ret[0] -= 1 ret[1] += 1 return ret
def joueCoup(jeu, coup): """jeu*coordonnees -> void met a jour le jeu avec le coup joue""" joueur = game.getJoueur(jeu) print "coup joue : {}".format(coup) jeu[3].append(coup) case = [coup[0], coup[1]] adversaire = joueur % 2 + 1 game.setCaseVal(jeu, coup[0], coup[1], joueur) jeu[4][joueur - 1] += 1 #print "encadrement :{}".format(encadrements(jeu, coup, True)) for d in encadrements(jeu, coup, True): #print "direction :{}".format(d) case = [coup[0], coup[1]] case[0] += d[0] case[1] += d[1] while game.getCaseVal(jeu, case[0], case[1]) == adversaire: game.setCaseVal(jeu, case[0], case[1], joueur) #print "case retournee :{}".format(jeu[0][case[0]][case[1]]) #print "case : {}".format (case) jeu[4][joueur - 1] += 1 jeu[4][adversaire - 1] -= 1
def joueCoup(jeu, coup): """jeu*coup->void Joue un coup: - Cherche toutes les directions d'encadrement - Pour toutes les directions trouvees, lance la fonction retournePieces pour retourner les pieces encadrees - Met a jour les scores selon le nombre de pieces retournees Hypothese:le coup est valide """ l = trouveEncadrements(jeu, coup) a = [retournePieces(jeu, coup, x) for x in l] j = game.getJoueur(jeu) sc = [0, 0] if (j == 1): sc[0] = 1 else: sc[1] += 1 game.setCaseVal(jeu, coup[0], coup[1], j) s = reduce(lambda x, y: [x[0] + y[0], x[1] + y[1]], a, sc) game.addScore(jeu, 1, s[0]) game.addScore(jeu, 2, s[1]) game.addCoupJoue(jeu, coup) game.changeJoueur(jeu) game.razCoupsValides(jeu)
def joueCoup(jeu, coup): """ jeu[0][coup[0]][coup[1]]=jeu[1] jeu[4][jeu[1]]+=1 #ajout de points au score d=getEncadrements(jeu,coup,True) for x in d: retournePions(jeu,coup,d) jeu[3].append(coup) jeu[2]=None jeu[1]=jeu[1]%2+1 global r version: """ #retournePions(jeu,coup,d) j = game.getJoueur(jeu) adv = game.getJoueurAdverse(jeu) score = game.getScores(jeu) enca = getEncadrements(jeu, coup, True) for d in enca: l = coup[0] c = coup[1] game.setCaseVal(jeu, l, c, j) while True: l += d[0] c += d[1] if game.getCaseVal(jeu, l, c) == j: break game.setCaseVal(jeu, l, c, j) score[j - 1] += 1 score[adv - 1] -= 1 game.setPlayerScore(jeu, j, score[j - 1] + 1) game.setPlayerScore(jeu, adv, score[adv - 1]) game.changeJoueur(jeu) jeu[3] = [] """
def joueCoup(jeu,coup): v=game.getCaseVal(jeu,coup[0],coup[1]) game.setCaseVal(jeu,coup[0],coup[1],0) distribue(jeu,coup,v) game.addCoupJoues(jeu,coup) jeu[2]=None game.changeJoueur(jeu) def distribue(jeu,coup,v): case= coup while(v>0): coup=nextCase(jeu,coup) if(coup==case): continue game.setCaseVal(jeu,coup[0],coup[1],game.getCaseVal(jeu,coup)+1) v=v-1 def nextCase(jeu,coup): nxtCase=coup if coup[0]==0: if coup[1]==0: nxtCase[0]=coup[0]+1 else : nxtCase[1]=coup[1]-1 if coup[0]==1: if coup[1]==5: nxtCase[0]=coup[0]-1 else : nxtCase[1]=coup[1]+1
jeu ) #on simule d'abord le coup pour vérifier que celui-ci ne va pas affamer l'adversaire v = game.getCaseVal(save, coup[0], coup[1]) game.setCaseVal(save, coup[0], coup[1], 0) case = distribue( save, coup, v ) #la fonction distribue renvoie la derniere case ou une graine a ete depose score = game.getScore(save, game.getJoueur(save)) while case[0] == game.getJoueurAdverse(save) - 1 and ( save[0][case[0]][case[1]] == 2 or save[0][case[0]][case[1]] == 3): score = score + recolte(save, case) case = nextCase(save, case) if advAffame(save): distribue(jeu, coup, v) else: game.setCaseVal(jeu, coup[0], coup[1], 0) case = distribue(jeu, coup, v) score = game.getScore(jeu, game.getJoueur(jeu)) while case[0] == game.getJoueurAdverse(jeu) - 1 and ( jeu[0][case[0]][case[1]] == 2 or jeu[0][case[0]][case[1]] == 3): score = score + recolte(jeu, case) case = nextCase(jeu, case) game.setAtmPlayerScore(jeu, score) game.changeJoueur(jeu) return def finJeu(jeu): if (jeu[0] == [[0 for i in range(6)] for j in range(2)]) or getCoupsValides(jeu) == [] or len(
Note3: On ne mange rien si le coup affame l'adversaire """ c=case while nb>0: c=nextCase(jeu,c) if c[0]==case[0] and c[1]==case[1]: continue game.addCaseVal(jeu,c[0],c[1],1) nb-=1 n=0 old=[] while peutManger(jeu,c): v=game.getCaseVal(jeu,c[0],c[1]) old.append(v) game.setCaseVal(jeu,c[0],c[1],0) game.addScore(jeu,game.getJoueur(jeu),v) n+=1 c=nextCase(jeu,c,False) if (len(old)>0) and adversaireAffame(jeu): #print('Adversaire affame, on ne peut pas manger') n=1 while(n<=len(old)): c=nextCase(jeu,c,True) g=old[-n] game.setCaseVal(jeu,c[0],c[1],g) #print('on rend '+str(g)+' dans la case '+str(c)) game.addScore(jeu,game.getJoueur(jeu),-g) n+=1