Browse Source

Transférer les fichiers vers ''

master
OUEDRAGO Seyba 2 days 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 File import File_chaine as File # importation de la classe File_chaine pour représenter les paquets
from random import shuffle from random import shuffle # importation de shuffle pour mélanger le paquet
class Carte: class Carte:
def __init__(self, valeur, couleur): def __init__(self, valeur, couleur):
# initialise une carte avec une valeur et une couleur
self.valeur = valeur self.valeur = valeur
self.couleur = couleur self.couleur = couleur
def compare(self, autre): 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: if self.valeur > autre.valeur:
return 1 return 1
elif self.valeur < autre.valeur: elif self.valeur < autre.valeur:
@ -15,57 +18,112 @@ class Carte:
return 0 return 0
def __str__(self): def __str__(self):
# retourne la carte
return str(self.valeur) + " " + self.couleur return str(self.valeur) + " " + self.couleur
class Jeu: class Jeu:
def __init__(self): def __init__(self, nom1="joueur1", nom2="joueur 2"):
self.paquet = [] # 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): couleurs = ["pique", "carreau", "coeur", "trèfle"] # Couleurs des cartes
f1 = File()
f2 = File()
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 valeur in range(nombre):
for couleur in couleurs: for couleur in couleurs:
self.paquet.append(Carte(valeur, couleur)) self.paquet.append(Carte(valeur, couleur))
shuffle(self.paquet)
for i in range(nombre*2): shuffle(self.paquet) # mélange du paquet
f1.enfiler(self.paquet[i])
# 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): # et l'autre moitié pour f2
f2.enfiler(self.paquet[i]) 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): def partie(self):
while not f1.est_vide() and not f2.est_vide(): # lance la partie de bataille jusqu'à ce qu'un joueur gagne
c1 = f1.defiler() while not self.f1.est_vide() and not self.f2.est_vide():
c2 = f2.defiler() c1 = self.f1.defiler() # carte du joueur 1
print(c1, c2,"\n") c2 = self.f2.defiler() # carte du joueur 2
print(c1, c2, "\n")
if c1.compare(c2) == 1: if c1.compare(c2) == 1:
f1.enfiler(c1) # joueur 1 gagne le tour et remet les cartes dans sa file
f1.enfiler(c2) self.f1.enfiler(c1)
self.f1.enfiler(c2)
elif c1.compare(c2) == -1: elif c1.compare(c2) == -1:
f2.enfiler(c1) # joueur 2 gagne le tour et remet les cartes dans sa file
f2.enfiler(c2) self.f2.enfiler(c1)
self.f2.enfiler(c2)
else: else:
f1.enfiler(c1) # en cas d'égalité
f2.enfiler(c2) while True:
print(f1, "\n\n", f2, "\n") pot = [c1, c2] # pot temporaire contenant les cartes en jeu
return ("udyjqogqvuiz jrnigeyfhzz'epjfioef je te baise ta mère utgfydres fdvkuhbeyufss idhge")
# vérifie si un joueur a assez de cartes pour continuer la bataille
"""c1 = Carte(5, "bleu") if self.f1.taille() < 2:
c2 = Carte(4, "vert") return "{} gagne ({} n'a pas assez de carte)".format(self.nom2, self.nom1)
c3 = Carte(6, "cyan") if self.f2.taille() < 2:
c4 = Carte(5, "bissap") return "{} gagne ({} n'a pas assez de carte)".format(self.nom1, self.nom2)
print(c1.compare(c4))""" # chaque joueur place une carte face cachée dans le pot
pot.append(self.f1.defiler())
jeu = Jeu() pot.append(self.f2.defiler())
f1, f2 = jeu.distribue(13)
print ("f1 :", f1) # chaque joueur place ensuite une carte face visible
print ("f2 :", f2) c1 = self.f1.defiler()
jeu.partie() 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