コード例 #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
ファイル: awele.py プロジェクト: claracvs/ProjetJeu
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
ファイル: puissance.py プロジェクト: mdeville/2I013
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)
コード例 #6
0
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)
コード例 #8
0
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
コード例 #10
0
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(
コード例 #14
0
    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