IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Python/ Thonny déplacement pion Isola


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycée
    Inscrit en
    mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 17
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycée

    Informations forums :
    Inscription : mai 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Python/ Thonny déplacement pion Isola
    Bonjour, j'ai un projet où je dois crée le jeu isola sur Python, actuellement j'ai 2 probleme, dans la fonction "test_deplacement", je ne sais pas comment faire pour vérifier si le déplacement se fait autour du pion, et aussi dans la fonction "deplace_joueur" j'ai tester plusieurs fois mais je n'arrive pas a faire que l'ancien emplacement du pion devienne une case "O"

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    #Procédure d'affichage d'une liste de listes contenant des -1,0,1,2.
    # A noter que le joueur blanc de la vidéo est repéré par A et le noir par B
    def affiche(matrice):
        ch=''
        for lig in range(len(matrice)-1):
            for col in range(len(matrice[0])-1):
                if matrice[lig][col]==-1 and (lig==0 or col==0 and col+lig<8):
                    ch=ch+str(col+lig)
                elif matrice[lig][col]==-1 and (col==0 and col+lig>=8):
                    ch=ch+''
                elif matrice[lig][col]==-1:
                    ch=ch+'X'   
                elif matrice[lig][col]==0:
                    ch=ch+'A'
                elif matrice[lig][col]==1:
                    ch=ch+'B'
                else:
                    ch=ch+'O'
            ch=ch+'\n'
        print(ch)
     
    #Fonction qui détruit une case, c'est à dire qui place un -1 dans la matrice au bon endroit et qui retourne la matrice modifiée.
    def detruit(ligne,colonne,matrice):
        while matrice[ligne][colonne]==-1:
            print("case déja détruite, rechoisissais s'il vous plait")
            colonne=int(input('Dans quelle colonne voulez-vous détruire? '))
            ligne=int(input('Dans quelle ligne voulez-vous détruire? '))
     
        while matrice[ligne][colonne]==0:
            print("case occupé par un joueur, rechoisissais s'il vous plait")
            colonne=int(input('Dans quelle colonne voulez-vous détruire? '))
            ligne=int(input('Dans quelle ligne voulez-vous détruire? '))
            print('\n')
            detruit(ligne,colonne,jeu)
     
        while matrice[ligne][colonne]==1:
            print("case occupé par un joueur, rechoisissais s'il vous plait")
            colonne=int(input('Dans quelle colonne voulez-vous détruire? '))
            ligne=int(input('Dans quelle ligne voulez-vous détruire? '))
            print('\n')
            detruit(ligne,colonne,jeu)
     
        if matrice[ligne][colonne]==2:
            matrice[ligne][colonne]=-1
        return matrice
     
    #Fonction qui retourne le n-uplets (ligne, colonne) correspondant à la position du joueur
    def coordonnees(joueur,matrice):   
        return (lig,col)
    # Fonction qui teste si le déplacement du joueur est possible dans la case dont les coordonnées ligne, colonne sont données
    # elle retourne True si le déplacement est possible (autour du pion et dans une case libre) et False sinon
    def test_deplacement(ligne,colonne,joueur,matrice):
     
        if matrice[ligne][colonne]==-1:
            print("False")
        elif joueur in matrice[ligne]>=3:
            print("False")
        else:
            print("True")
        pass
     
    # Fonction qui retourne la matrice indiquant que le joueur (0 ou 1) se trouve dans la case de coordonnées : ligne, colonne
    def deplace_joueur(ligne,colonne,joueur,matrice):
        matrice[ligne][colonne]=0
        return matrice
     
    # Fonction qui teste si un joueur(0 ou 1) est isolé ou pas : elle retourne True s'il est isolé et False sinon
    def test_isola1(joueur, matrice):
     
        joueur=1
        pass
     
    # Fonction qui permet de changer le tour du joueur
    def jouer(ligne,colonne,joueur,matrice):
        colonne=int(input("A, dans quelle colonne voulez-vous allé ? "))
        ligne=int(input("A, dans quelle ligne voulez-vous allé ? "))
        test_deplacement(ligne,colonne,joueur,matrice)
        jeu=deplace_joueur(ligne,colonne,joueur,matrice)
        print('\n')
        affiche(jeu)
        print('\n')
        detruit(ligne,colonne,matrice)
        print('\n')
        if joueur==0:
            test_isola1(joueur,matrice)
        else:
            test_isola2(joueur,matrice)
     
    #####################
    #Programme principal#
    #####################   
    #Initialisation de la variable jeu
    joueur=0
    col=0
    lig=0
     
    jeu=[[-1,-1,-1,-1,-1,-1,-1,-1,-1],
         [-1,2,2,2,0,2,2,2,-1],
         [-1,2,2,2,2,2,2,2,-1],
         [-1,2,2,2,2,2,2,2,-1],
         [-1,2,2,2,2,2,2,2,-1],
         [-1,2,2,2,2,2,2,2,-1],
         [-1,2,2,2,2,2,2,2,-1],
         [-1,2,2,2,1,2,2,2,-1],
         [-1,-1,-1,-1,-1,-1,-1,-1,-1]]
    affiche(jeu)
     
     
    jouer(lig,col,joueur,jeu)
     
     
    import doctest
    doctest.testmod(verbose=False)

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    25 765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 25 765
    Points : 201 025
    Points
    201 025
    Billets dans le blog
    82
    Par défaut
    Bonjour,

    Il ne faut pas hésiter à faire des dessins. Si la case destination est une case de trouvant autour de la case d'origine, alors le joueur peut se déplacer. Autour, généralement, implique un déplacement d'indice 1, dans un tableau (car le plateau de jeu est un tableau). Bref, il faut faire quelque chose comme : if matrice[joueur.x+1][joueur.y+1] == matrice[dest.x][dest.y]: mais dans les huit directions.
    Ce serait faire un if avec huit conditions, c'est possible, mais pas propre.
    Vous pouvez partir sur une approche plus mathématique en disant : joueur.x - dest.x <= 1 and joueur.x - dest.x >= -1 et de même pour la coordonnées y. Cela reviendrait au même : est-ce que la destination est à une distance d'une case de la position précédente.
    Ensuite, si oui, il faut détruire la case précédente. Soit matrice[joueur.x][joueur.y] = -1 et placer le joueur sur la nouvelle case.

    Et pour la condition de victoire, il faut vérifier sur une des huit cases adjacentes est libre. On peut réutiliser les tests comme je l'ai montré au tout début de mon message.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycée
    Inscrit en
    mai 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 17
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycée

    Informations forums :
    Inscription : mai 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    merc pour cette réponce, et non l'ancien emplacement du pion ne dois pas etre détruit mais remplacer pas un "O" donc si j'ai bien compris il faut faire matrice[joueur.x][joueur.y] = 2

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    25 765
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 25 765
    Points : 201 025
    Points
    201 025
    Billets dans le blog
    82
    Par défaut
    Si vous voulez mettre un 'O', il faut mettre un 'O' dans le tableau
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. déplacement de pions jeu de dames
    Par Supral dans le forum Tkinter
    Réponses: 18
    Dernier message: 22/04/2015, 22h20
  2. Déplacement d'un pion sur un échiquier avec Qt 5
    Par Invité dans le forum Contribuez
    Réponses: 1
    Dernier message: 06/05/2013, 21h28
  3. Déplacement d'un pion sur un échiquier
    Par Invité dans le forum Contribuez
    Réponses: 7
    Dernier message: 20/09/2012, 14h22
  4. Jeu - Déplacement d'un pion
    Par Nowwis dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/01/2010, 13h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo