Browse Source

Transférer les fichiers vers ''

master
OUEDRAGO Seyba 22 hours ago
parent
commit
84f8d596ac
  1. 110
      bataille.py
  2. 136
      projet_bataille.py

110
bataille.py

@ -0,0 +1,110 @@
from File import File_chaine as File
from random import shuffle
class Carte:
def __init__(self, valeur, couleur):
self.valeur = valeur
self.couleur = couleur
def compare(self, autre):
if self.valeur > autre.valeur:
return 1
elif self.valeur < autre.valeur:
return -1
else:
return 0
def __str__(self):
return str(self.valeur) + " " + self.couleur
class Jeu:
def __init__(self, nom1="joueur1", nom2="joueur 2"):
self.paquet = []
self.f1 = None
self.f2 = None
self.nom1 = nom1
self.nom2 = nom2
def distribue(self, nb_total_cartes):
self.paquet = []
self.f1 = File()
self.f2 = File()
couleurs = ["pique", "carreau", "coeur", "trèfle"]
nombre = nb_total_cartes // 4
for valeur in range(nombre):
for couleur in couleurs:
self.paquet.append(Carte(valeur, couleur))
shuffle(self.paquet)
for i in range(nombre * 2):
self.f1.enfiler(self.paquet[i])
for i in range(nombre * 2, nombre * 4):
self.f2.enfiler(self.paquet[i])
return self.f1, self.f2
def partie(self):
while not self.f1.est_vide() and not self.f2.est_vide():
c1 = self.f1.defiler()
c2 = self.f2.defiler()
print(c1, c2, "\n")
if c1.compare(c2) == 1:
self.f1.enfiler(c1)
self.f1.enfiler(c2)
elif c1.compare(c2) == -1:
self.f2.enfiler(c1)
self.f2.enfiler(c2)
else:
while True:
pot = [c1, c2]
if self.f1.taille() < 2:
return "{} gagne ({} n'a pas assez de carte)".format(self.nom2, self.nom1)
if self.f2.taille() < 2:
return "{} gagne ({} n'a pas assez de carte)".format(self.nom1, self.nom2)
pot.append(self.f1.defiler())
pot.append(self.f2.defiler())
c1 = self.f1.defiler()
c2 = self.f2.defiler()
print(c1, c2)
pot.extend([c1, c2])
if c1.compare(c2) == 1:
for c in pot:
self.f1.enfiler(c)
break
elif c1.compare(c2) == -1:
for c in pot:
self.f2.enfiler(c)
break
print(self.f1, "\n\n", self.f2, "\n")
if self.f1.est_vide():
return "{} gagne".format(self.nom2)
else:
return "{} gagne".format(self.nom1)
nom1 = input("Nom du joueur 1 : ")
nom2 = input("Nom du joueur 2 : ")
nb_total_cartes = int(input("Nombre total de cartes dans le paquet : "))
jeu = Jeu(nom1, nom2)
f1, f2 = jeu.distribue(nb_total_cartes)
print(f"{nom1} :", f1)
print(f"{nom2} :", f2)
print(jeu.partie())

136
projet_bataille.py

@ -1,12 +1,15 @@
from File import File_chaine as File
from random import shuffle
from File import File_chaine as File # importation de la classe File_chaine pour représenter les paquets
from random import shuffle # importation de shuffle pour mélanger le paquet
class Carte:
def __init__(self, valeur, couleur):
# initialise une carte avec une valeur et une couleur
self.valeur = valeur
self.couleur = couleur
def compare(self, autre):
# compare la carte actuelle avec une autre carte
# retourne 1 si self > autre, -1 si self < autre et 0 si elles sont égal
if self.valeur > autre.valeur:
return 1
elif self.valeur < autre.valeur:
@ -15,57 +18,112 @@ class Carte:
return 0
def __str__(self):
# retourne la carte
return str(self.valeur) + " " + self.couleur
class Jeu:
def __init__(self):
self.paquet = []
def __init__(self, nom1="joueur1", nom2="joueur 2"):
# initialise un jeu
self.paquet = [] # liste contenant toutes les cartes
self.f1 = None # file du joueur 1
self.f2 = None # file du joueur 2
self.nom1 = nom1 # nom du joueur 1
self.nom2 = nom2 # nom du joueur 2
def distribue(self, nb_total_cartes):
# distribue les cartes entre les deux joueurs
self.paquet = [] # réinitialisation du paquet
self.f1 = File() # initialisation de la file du joueur 1
self.f2 = File() # initialisation de la file du joueur 2
def distribue(self, nombre):
f1 = File()
f2 = File()
couleurs = ["pique", "carreau", "coeur", "trèfle"] # Couleurs des cartes
couleurs = ["pique", "carreau", "coeur", "trèfle"]
nombre = nb_total_cartes // 4 # Nombre de cartes par couleur
# création du paquet complet
for valeur in range(nombre):
for couleur in couleurs:
self.paquet.append(Carte(valeur, couleur))
shuffle(self.paquet)
for i in range(nombre*2):
f1.enfiler(self.paquet[i])
shuffle(self.paquet) # mélange du paquet
# distribue la moitié def cartes pour f1
for i in range(nombre * 2):
self.f1.enfiler(self.paquet[i])
for i in range(nombre*2, nombre*4):
f2.enfiler(self.paquet[i])
# et l'autre moitié pour f2
for i in range(nombre * 2, nombre * 4):
self.f2.enfiler(self.paquet[i])
return f1, f2
return self.f1, self.f2 # Retourne les deux files
def partie(self):
while not f1.est_vide() and not f2.est_vide():
c1 = f1.defiler()
c2 = f2.defiler()
print(c1, c2,"\n")
# lance la partie de bataille jusqu'à ce qu'un joueur gagne
while not self.f1.est_vide() and not self.f2.est_vide():
c1 = self.f1.defiler() # carte du joueur 1
c2 = self.f2.defiler() # carte du joueur 2
print(c1, c2, "\n")
if c1.compare(c2) == 1:
f1.enfiler(c1)
f1.enfiler(c2)
# joueur 1 gagne le tour et remet les cartes dans sa file
self.f1.enfiler(c1)
self.f1.enfiler(c2)
elif c1.compare(c2) == -1:
f2.enfiler(c1)
f2.enfiler(c2)
# joueur 2 gagne le tour et remet les cartes dans sa file
self.f2.enfiler(c1)
self.f2.enfiler(c2)
else:
f1.enfiler(c1)
f2.enfiler(c2)
print(f1, "\n\n", f2, "\n")
return ("udyjqogqvuiz jrnigeyfhzz'epjfioef je te baise ta mère utgfydres fdvkuhbeyufss idhge")
"""c1 = Carte(5, "bleu")
c2 = Carte(4, "vert")
c3 = Carte(6, "cyan")
c4 = Carte(5, "bissap")
print(c1.compare(c4))"""
jeu = Jeu()
f1, f2 = jeu.distribue(13)
print ("f1 :", f1)
print ("f2 :", f2)
jeu.partie()
# en cas d'égalité
while True:
pot = [c1, c2] # pot temporaire contenant les cartes en jeu
# vérifie si un joueur a assez de cartes pour continuer la bataille
if self.f1.taille() < 2:
return "{} gagne ({} n'a pas assez de carte)".format(self.nom2, self.nom1)
if self.f2.taille() < 2:
return "{} gagne ({} n'a pas assez de carte)".format(self.nom1, self.nom2)
# chaque joueur place une carte face cachée dans le pot
pot.append(self.f1.defiler())
pot.append(self.f2.defiler())
# chaque joueur place ensuite une carte face visible
c1 = self.f1.defiler()
c2 = self.f2.defiler()
print(c1, c2)
pot.extend([c1, c2]) # Ajoute ces cartes au pot
# vérifie qui gagne cette bataille
if c1.compare(c2) == 1:
for c in pot:
self.f1.enfiler(c)
break
elif c1.compare(c2) == -1:
for c in pot:
self.f2.enfiler(c)
break
# affiche l'état actuel des deux files
print(self.f1, "\n\n", self.f2, "\n")
# détermine le gagnant final
if self.f1.est_vide():
return "{} gagne".format(self.nom2)
else:
return "{} gagne".format(self.nom1)
nom1 = input("Nom du joueur 1 : ") # demande le nom du joueur 1
nom2 = input("Nom du joueur 2 : ") # demande le nom du joueur 2
nb_total_cartes = int(input("Nombre total de cartes dans le paquet : ")) # Nombre total de cartes
jeu = Jeu(nom1, nom2) # création du jeu avec les noms des joueurs
f1, f2 = jeu.distribue(nb_total_cartes) # distribution des cartes
print(f"{nom1} :", f1) # affiche la file du joueur 1
print(f"{nom2} :", f2) # affiche la file du joueur 2
print(jeu.partie()) # lance la partie et affiche le résultat final

Loading…
Cancel
Save