Browse Source

Modif

master
vandepoele.e 2 years ago
parent
commit
74673e8e59
  1. 34
      main.py
  2. BIN
      util/.window.py.swp
  3. 114
      util/File.py
  4. 34
      util/bataille.py
  5. 12
      util/window.py

34
main.py

@ -2,7 +2,7 @@ from bataille import *
from lib.Pile import Pile_lst
def bataille():
tour = 1
'''Fonction permettant de lancer le jeu'''
jeux = Jeux()
carte_j1, carte_j2 = jeux.depiler()
nom = str(input("Entrez votre nom"))
@ -10,9 +10,29 @@ def bataille():
j2 = Joueur(carte_j2, "Bot")
p_j1 = Pile_lst()
p_j2 = Pile_lst()
while not j1.paquet_j.est_vide() and not j2.paquet_j.est_vide():
valeur_carte_j1 = j1.tire_carte()
valeur_carte_j2 = j2.tire_carte()
p_j1.empile(valeur_carte_j1)
p_j2.empile(valeur_carte_j2)
p_j1.sommet().compare(p_j2.sommet)
while not j1.paquet_j.est_vide() and not j2.paquet_j.est_vide():#tant que les joueurs ont des cartes on continue.
p_j1.empile(j1.tire_carte())
p_j2.empile(j2.tire_carte())
gagne = p_j1.sommet().compare(p_j2.sommet())
#comparaison du gagnant du duels de cartes:
if gagne == 1:
#si la valeur de self est supérieure à la valeur de other.
j1.paquet_j.append(p_j2.depiler())
elif gagne == 2:
#si la valeur de other est supérieure à la valeur de self.
j2.paquet_j.append(p_j1.depiler())
else:
#si les deux valeurs sont les mêmes, bataille !
for loop in range(2):
p_j1.empile(j1.tire_carte())
p_j2.empile(j2.tire_carte())
if j1.paquet_j.est_vide() and j2.paquet_j.est_vide():
print("parti nul")
elif j1.paquet_j.est_vide():
print("Le perdant est le joueur 1")
else:
print("Le perdant est le joueur 2")

BIN
util/.window.py.swp

Binary file not shown.

114
util/File.py

@ -1,114 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
class File_lst:
"""Implémentation d'une file par une liste."""
def __init__(self):
"""Crée une file vide."""
self.__file = []
def est_vide(self):
"""Indique si la file est vide."""
return self.__file == []
def enfiler(self, valeur):
"""Enfile l'élément valeur."""
self.__file.append(valeur)
def defiler(self):
"""Défile la tête de la file et la renvoie."""
return self.__file.pop(0)
def taille(self):
"""Renvoie la taille de la file."""
return len(self.__file)
def tete(self):
"""Renvoie la tête de la file (sans la défiler)."""
return self.__file[0]
def __str__(self):
s = "tete->"
for val in self.__file:
s += str(val) + "->"
return s + "queue"
class Maillon:
"""Un maillon d'une liste doublement chaînée."""
def __init__(self, precedent, valeur, suivant):
self.valeur = valeur
self.precedent = precedent
self.suivant = suivant
def __str__(self):
return str(self.valeur)
class File_chaine:
"""Implémentation d'une file par une liste doublement chaînée."""
def __init__(self):
"""Crée une file vide."""
self.__debut = self.__fin = None
self.__taille = 0
def est_vide(self):
"""Indique si la file est vide."""
return self.__taille == 0
def enfiler(self, valeur):
"""Enfile l'élément valeur."""
maillon = Maillon(self.__fin, valeur, None)
if self.est_vide():
self.__debut = self.__fin = maillon
else:
self.__fin.suivant = maillon
self.__fin = maillon
self.__taille += 1
def defiler(self):
"""Défile la tête de la file et la renvoie."""
if self.est_vide():
raise IndexError("Impossible de défiler une file vide.")
valeur = self.__debut.valeur
self.__taille -= 1
if self.est_vide():
self.__debut = self.__fin = None
else:
self.__debut = self.__debut.suivant
self.__debut.precedent = None
return valeur
def taille(self):
"""Renvoie la taille de la file."""
return self.__taille
def tete(self):
"""Renvoie la tête de la file (sans la défiler)."""
if self.est_vide():
raise IndexError("Une file vide n'a pas de tête.")
return self.__debut.valeur
def __str__(self):
s = "tete->"
maillon = self.__debut
while maillon is not None:
s += str(maillon) + "->"
maillon = maillon.suivant
return s + "queue"
if __name__ == "__main__":
f = File_lst()
print(f.est_vide())
f.enfiler('A')
f.enfiler('B')
f.enfiler('C')
print(f.est_vide())
print(f.tete())
print(f)
print(f.taille())
print(f.defiler())
print(f.defiler())
print(f.defiler())
print(f.est_vide())

34
util/bataille.py

@ -1,7 +1,14 @@
from random import *
from File import File_lst as File
from lib.File import File_lst as File
class Carte:
"""
Classe représentant une carte
Arguments:
valeur: int -- Valeur allant de 1 à 13
couleur: int -- Allant de 0 à 3 (Carreau, Coeur, Pique, Trefle)
"""
def __init__(self, valeur, couleur):
self.valeur = valeur
self.couleur = couleur
@ -18,23 +25,20 @@ class Carte:
class Jeux:
def __init__(self, nbcartes):
self.paquet = File()
self.couleur = File()
#Cartes 1 à 10 et 11 pour Valet, 12 pour Dame et 13 pour Roi
if nbcartes == 32:
pq = File()
crt = [1, 7, 8, 9, 10, 'Valet', 'Dame', 'Roi']
couleur = ['Coeur', 'Pique', 'Carreaux', 'Trefle']
for i in range(len(crt)):
pq.enfiler(crt)
for i in range(3):
x = Carte(pq.defiler(),couleur[i])
print(pq)
#x.empiler(pq.defiler())
for i in range(4):
crt = [1, 7, 8, 9, 10, 11, 12, 13]
couleur = [0, 1, 2, 3]
for val in range(len(crt)):
rd = randint(0, len(crt)-1)
self.paquet.enfiler(crt[rd])
self.couleur.enfiler(couleur[i])
crt.pop(rd)
else:
pq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Valet', 'Dame', 'Roi']
pq = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
for i in range(len(pq)):
rd = randint(0, len(pq)-1)
self.paquet.enfiler(pq[rd])
pq.pop(rd)
def distribue(self):
cp = self.paquet

12
util/window.py

@ -1,4 +1,5 @@
from tkinter import Tk, Label, Button
from PIL import Image, ImageTk
class Window(Tk):
@ -32,8 +33,13 @@ class Window(Tk):
self.c1.grid(row=2, column=0)
self.c2.grid(row=2, column=2)
def card_to_image(card):
r = range(56-card.valeur*4, 52-card.valeur*4 , -1)
for i in r:
print(i)
if __name__ == "__main__":
app = Window(None, None)
app.show_cards()
app.mainloop()
card_to_image(Carte(2, 4))
#app = Window(None, None)
#app.show_cards()
#app.mainloop()

Loading…
Cancel
Save