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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
| import random
import time
# Définition des cases avec num, type de case, terrain de droite, terrain de tauche, entrée ?
# Aucun terrain = 0 Fujiyama =1, Boomerang = 2, étoile = 3, président = 4, royal = 5, waikiki = 6, Taj Mahal = 7, Safari = 8
case = [[1],
[2,"construction",1,0,"non"],
[3,"achat terrain",1,2,"non"],
[4,"construction",1,2,"non"],
[5,"achat terrain",1,2,"non"],
[6,"construction",1,2,"non"],
[7,"entrée gratuite",1,0,"non"],
[8,"construction",0,0,"non"],
[9,"achat terrain",3,0,"non"],
[10,"achat terrain",3,4,"non"],
[11,"construction gratuite",3,4,"non"],
[12,"achat terrain",5,4,"non"],
[13,"construction",5,4,"non"],
[14,"achat terrain",5,4,"non"],
[15,"construction",5,4,"non"],
[16,"achat terrain",5,4,"non"],
[17,"construction",5,6,"non"],
[18,"achat terrain",5,6,"non"],
[19,"entrée gratuite",5,6,"non"],
[20,"construction",5,6,"non"],
[21,"achat terrain",5,6,"non"],
[22,"achat terrain",3,7,"non"],
[23,"construction",3,7,"non"],
[24,"achat terrain",3,7,"non"],
[25,"construction gratuite",3,7,"non"],
[26,"construction",0,7],"non",
[27,"construction",0,8,"non"],
[28,"construction",0,8,"non"],
[29,"achat terrain",3,8,"non"],
[30,"entrée gratuite",3,8,"non"],
[31,"construction",0,8,"non"],
]
# Définition des terrain avec nom, propriétaire, prix du terrain, rachat à 50% de la valeur si non construit, prix d'une entrée, prix du 1e, 2e, 3e, ... batiment
terrain = [[0,"Pas de terrain","aucun"],
[1,"Fujiyama","aucun",1000,500,100,2200,1400,1400,500],
[2,"Bommerang","aucun",500,250,100,1800,250],
[3,"Etoile","aucun",3000,1500,250,3300,2200,1800,1800,1800,4000],
[4,"Président","aucun",3500,1750,250,5000,3000,2250,1750,5000],
[5,"Royal","aucun",2500,1250,200,3600,2600,1800,1800,3000],
[6,"Waikiki","aucun",2500,1250,200,3500,2500,1750,1750,2500],
[7,"Taj Mahal","aucun",1500,750,100,2400,1000,500,1000],
[8,"Safari","aucun",2000,1000,150,2600,1200,1200,2000]]
#print("Le jeu Hotel se joue avec deux joueurs ...")
#time.sleep(1)
nom_joueur_1 = "Damien"
nom_joueur_2 = "Aurélie"
Position_joueur_1 = 0
Position_joueur_2 = 0
Compte_joueur_1 = 25000
Compte_joueur_2 = 25000
#Fonction pour prendre le premier nombre d'une liste : sera utilisé pour donner le prix de la construction à construire.
#Lorsque un batiment sera construit, changement de la valeur du bâtiment par le string "construit", cela ne sera donc plus pris en compte par isdigit
def premier_nombre(liste):
for item in liste:
if str(item).isdigit():
print(item)
break
def lancement_dé_construction():
liste_dé=["vert","vert","rouge","rouge","gratuit","x2"]
dé_construction = random.choice(liste_dé)
if dé_construction == "vert":
facteur_construction = 1
elif dé_construction == "rouge":
facteur_construction = "impossible"
elif dé_construction == "gratuit":
facteur_construction = 0
else:
facteur_construction = 2
return facteur_construction
def lancement_dé_avancé_joueur_1(nom_joueur) :
global Position_joueur_1
global Compte_joueur_1
avance = random.randint(1,6)
Position_joueur_1_avant_dé = Position_joueur_1
Position_joueur_1 += avance
if Position_joueur_1 > 31 :
Position_joueur_1 = Position_joueur_1 - 31
print(f"{nom_joueur}, dé : {avance} => case {Position_joueur_1}")
if Position_joueur_1_avant_dé < 8 and Position_joueur_1 > 7:
Compte_joueur_1 += 2000
print(f"vous venez de créditer votre solde de 2000, vous avez maintenant {Compte_joueur_1}")
return Position_joueur_1
def avance_pion_joueur_1 ():
global Compte_joueur_1
#Case 1, il n'y a rien à faire
if case[Position_joueur_1-1][0] == 1:
print("vous ne pouvez rien faire")
else :
#on teste si achat terrain
if case[Position_joueur_1-1][1] == "achat terrain":
if case[Position_joueur_1-1][2] == 0 and case[Position_joueur_1-1][3] == 0 :
print("il n'y a pas de terrain à acheter")
elif case[Position_joueur_1-1][2] == 0 :
if terrain[case[Position_joueur_1-1][3]][2] == "aucun":
achat_terrain = input (f"souhaitez-vous l'acheter {terrain[case[Position_joueur_1-1][3]][1]}? (O/N)")
if achat_terrain == "O":
terrain[case[Position_joueur_1-1][3]][2] = nom_joueur_1
Compte_joueur_1 -= terrain[case[Position_joueur_1-1][2]][3]
print(f"Il vous reste maintenant {Compte_joueur_1} dans votre portefeuille")
else:
print(f"{terrain[case[Position_joueur_1-1][3]][1]} est déjà la propriété de {terrain[case[Position_joueur_1-1][3]][2]}")
elif case[Position_joueur_1-1][3] == 0 :
if terrain[case[Position_joueur_1-1][2]][2] == "aucun":
achat_terrain = input (f"souhaitez-vous acheter {terrain[case[Position_joueur_1-1][2]][1]} ? (O/N)")
if achat_terrain == "O":
terrain[case[Position_joueur_1-1][2]][2] = nom_joueur_1
Compte_joueur_1 -= terrain[case[Position_joueur_1-1][2]][3]
print(f"Il vous reste maintenant {Compte_joueur_1} dans votre portefeuille")
else:
print(f"{terrain[case[Position_joueur_1-1][2]][1]} est déjà la propriété de {terrain[case[Position_joueur_1-1][2]][2]}")
else:
print(f"Vous êtes en possibilité théorique d'acheter {terrain[case[Position_joueur_1-1][3]][1]} et {terrain[case[Position_joueur_1-1][2]][1]}")
#attention problème car si on ne peut pas acheter un des deux terrains, on ne peut pas acheter l'autre
if terrain[case[Position_joueur_1-1][3]][2] == nom_joueur_2:
print(f"vous ne pouvez pas acheter {terrain[case[Position_joueur_1-1][3]][1]} car il appartient à {nom_joueur_2}")
elif terrain[case[Position_joueur_1-1][3]][2] == nom_joueur_1:
print(f"vous ne pouvez pas acheter {terrain[case[Position_joueur_1-1][3]][1]} car il t'appartient")
else:
achat_terrain = input (f"souhaitez-vous l'acheter {terrain[case[Position_joueur_1-1][3]][1]}? (O/N)")
if achat_terrain == "O":
terrain[case[Position_joueur_1-1][3]][2] = nom_joueur_1
Compte_joueur_1 -= terrain[case[Position_joueur_1-1][3]][3]
print(f"Il vous reste maintenant {Compte_joueur_1} dans votre portefeuille")
else :
if terrain[case[Position_joueur_1-1][2]][2] == nom_joueur_2:
print(f"vous ne pouvez pas acheter {terrain[case[Position_joueur_1-1][2]][1]} car il appartient à {nom_joueur_2}")
elif terrain[case[Position_joueur_1-1][2]][2] == nom_joueur_1:
print(f"vous ne pouvez pas acheter {terrain[case[Position_joueur_1-1][2]][1]} car il t'appartient")
else:
achat_terrain = input (f"souhaitez-vous l'acheter {terrain[case[Position_joueur_1-1][2]][1]}? (O/N)")
if achat_terrain == "O":
terrain[case[Position_joueur_1-1][2]][2] = nom_joueur_1
Compte_joueur_1 -= terrain[case[Position_joueur_1-1][2]][3]
print(f"Il vous reste maintenant {Compte_joueur_1} dans votre portefeuille")
print(terrain)
#on teste si entrée gratuite
elif case[Position_joueur_1-1][1] == "entrée gratuite":
print ("vous avez le droit à une entrée gratuite")
#on teste si construction gratuite
elif case[Position_joueur_1-1][1] == "construction gratuite":
print ("vous avez le droit à une construction gratuite")
# dernière possibilité : construire, voir fonction possibilité_construction_joueur_1()
else:
possibilité_construction_joueur_1()
def possibilité_construction_joueur_1():
# on teste si le joueur possède un terrain
if terrain[1][2] != nom_joueur_1 and terrain[2][2] != nom_joueur_1 and \
terrain[3][2] != nom_joueur_1 and terrain[4][2] != nom_joueur_1 and terrain[5][2] != nom_joueur_1 and \
terrain[6][2] != nom_joueur_1 and terrain[7][2] != nom_joueur_1 and terrain[8][2] != nom_joueur_1 :
print("Vous ne pouvez pas construire car aucun terrain.")
else :
construction_joueur_1()
return
def possibilité_entrée_joueur_1():
if terrain[1][2] != nom_joueur_1 and terrain[2][2] != nom_joueur_1 and \
terrain[3][2] != nom_joueur_1 and terrain[4][2] != nom_joueur_1 and terrain[5][2] != nom_joueur_1 and \
terrain[6][2] != nom_joueur_1 and terrain[7][2] != nom_joueur_1 and terrain[8][2] != nom_joueur_1 :
print("Vous ne pouvez pas mettre d'entrée car aucun terrain.")
return
def données_joueur_1():
print(f"{nom_joueur_1}, il vous reste sur votre compte : {Compte_joueur_1}")
#def test_construction():
def construction_joueur_1 ():
print ("vous pouvez construire sur :")
#print({premier_nombre(terrain[1][6:len(terrain[1])])})
if terrain[1][2] == nom_joueur_1:
print(f"1-{terrain[1][1]} : prix {premier_nombre(terrain[1][6:len(terrain[1])])}")
if terrain[2][2] == nom_joueur_1:
print(f"2-{terrain[2][1]} : prix {premier_nombre(terrain[2][6:len(terrain[2])])}")
if terrain[3][2] == nom_joueur_1:
print(f"3-{terrain[3][1]} : prix {premier_nombre(terrain[3][6:len(terrain[3])])}")
if terrain[4][2] == nom_joueur_1:
print(f"4-{terrain[4][1]} : prix {premier_nombre(terrain[4][6:len(terrain[4])])}")
if terrain[5][2] == nom_joueur_1:
print(f"5-{terrain[5][1]} : prix {premier_nombre(terrain[5][6:len(terrain[5])])}")
if terrain[6][2] == nom_joueur_1:
print(f"6-{terrain[6][1]} : prix {premier_nombre(terrain[6][6:len(terrain[6])])}")
if terrain[7][2] == nom_joueur_1:
print(f"7-{terrain[7][1]} : prix {premier_nombre(terrain[7][6:len(terrain[7])])}")
if terrain[8][2] == nom_joueur_1:
print(f"8-{terrain[8][1]} : prix {premier_nombre(terrain[8][6:len(terrain[8])])}")
choix = input("Quel est votre choix ? ") |
Partager