示例#1
0
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)
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)
示例#7
0
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
示例#9
0
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)
示例#11
0
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] = []
    """    
示例#12
0
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
示例#13
0
        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