Skip to content
Extraits de code Groupes Projets
snakes_and_ladders.py 3,29 ko
Newer Older
  • Learn to ignore specific revisions
  • Nathanaël Kindidi's avatar
    Nathanaël Kindidi a validé
    import random
    from pprint import pprint
    import numpy as np
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    from dataclasses import dataclass, field, asdict
    
    Nathanaël Kindidi's avatar
    Nathanaël Kindidi a validé
    
    # Board de base jeu de l'oie
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    def jeudeloie(l):
    
    Nathanaël Kindidi's avatar
    Nathanaël Kindidi a validé
        turn = 2
        for i in range(100):
            l.insert(i, i+1)
        for j in range(99,-1,-10):
            if turn%2==0:
                print(l[j],"|",l[j-1],"|",l[j-2],"|",l[j-3],"|",l[j-4],"|",l[j-5],"|",l[j-6],"|",l[j-7],"|",l[j-8],"|",l[j-9])
                print("-------------------------------------------------------------------")
                turn-=1
            else:
                print(l[j-9],"|",l[j-8],"|",l[j-7],"|",l[j-6],"|",l[j-5],"|",l[j-4],"|",l[j-3],"|",l[j-2],"|",l[j-1],"|",l[j])
                print("-------------------------------------------------------------------")
                turn+=1
    l = []
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    # jeudeloie(l)
    
    Nathanaël Kindidi's avatar
    Nathanaël Kindidi a validé
    # Initialisation du board
    g = [[0 for j in range(15)]for i in range(15)]
    # pprint(g)
    
    # Liens entre les cases
    for i in range(9):
        g[i][i+1]=1
    for i in range(10,14):
        g[i][i+1]=1
    g[2][10]=1
    g[9][14]=1
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    # pprint(g)
    
    Nathanaël Kindidi's avatar
    Nathanaël Kindidi a validé
    
    # 3 types de dés
    def safe():
        choix = [0,1]
        return random.choices(choix,[0.5, 0.5])[0]
    
    def normal():
        choix = [0,1,2]
        return random.choices(choix,[0.33, 0.33, 0.33])[0]
    
    def risky():
        choix = [0,1,2,3]
        return random.choices(choix,[0.25, 0.25, 0.25, 0.25])[0]
    
    
    
    Adrien Payen's avatar
    Adrien Payen a validé
    def restart() :
        if i in layout == 1 :
            g[i] = g[0]
        return
    
    def Penalty() :
        if i in layout == 2 :
            g[i] = g[i-3]
        return
    
    def Prison() :
        if i in layout == 3 :
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
            pass
    
    Adrien Payen's avatar
    Adrien Payen a validé
            # passer son tour
    
    
    
    Nathanaël Kindidi's avatar
    Nathanaël Kindidi a validé
    # markovDecision(layout,circle)
    
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    # def markovDecision(layout, circle : bool) :
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
        # return Expec, Dice
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    # Fonction de modification du circle pour faire une boucle si True
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    def circle(bool):
    
    Adrien Payen's avatar
    Adrien Payen a validé
        if bool == True :
            g[14][0] = 1
            # pprint(g) # si le dés dépasse la case 15 alors il recommence au début
        return g
    
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    # pprint(circle(False))
    
    Nathanaël Kindidi's avatar
    Nathanaël Kindidi a validé
    
    np.random.seed(0)
    layout = np.ndarray([0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 1, 0])
    choices = [0,1,2,3]
    print(layout)
    print(np.linspace(1,15,15, dtype=np.float16))
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    # markovDecision(layout, circle(True))
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
    
    players = dict()
    player_values = list()
    
    def Create_players(players, player_values) : 
    
        while True :
            total_players = input("Choose total number of player (1): ").strip()
    
            if total_players not in ['1'] :
                print("Invalid input !")
            
            else :
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
                print("Total players in the game {}".format(total_players))
    
    Adrien Payen's avatar
    Adrien Payen a validé
    
                total_players = int(total_players)
                for player_index in range(1, total_players + 1 ) :
                    while True :
                        set_marker = input("Now set your sign player {} : (alphabet only)".format(player_index)).strip().upper()
                        if len(set_marker) != 1 or not(set_marker >= "A" and set_marker <= "Z") :
                                print("Invalid Sign Choosen !")
                        else :
                            player_values.append(set_marker) # market set
                            player_values.append(0) # position initiale en 0
                            
    
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    def board():
        g = [[0 for j in range(15)]for i in range(15)]
        # Liens entre les cases
        for i in range(9):
            g[i][i+1]=1
        for i in range(10,14):
            g[i][i+1]=1
        g[2][10]=1
        g[9][14]=1
        return g
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    @dataclass
    class Board:
        plateau:list[list]
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    b1 = Board(plateau=board())
    
    Nathanaël Kindidi's avatar
    ok  
    Nathanaël Kindidi a validé
    pprint(b1.plateau)