diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/Pile.py b/Pile.py new file mode 100644 index 0000000..3f198b5 --- /dev/null +++ b/Pile.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from listeChaine import ListeChaine + +class Pile_lst: + """Implémentation d'une pile par une liste.""" + def __init__(self): + """Crée une pile vide.""" + self.__pile = [] + + def est_vide(self): + """Indique si la pile est vide.""" + return self.__pile == [] + + def empiler(self, valeur): + """Empile la valeur.""" + self.__pile.append(valeur) + + def depiler(self): + """Dépile le sommet de la pile et le renvoie.""" + return self.__pile.pop() + + def taille(self): + """Renvoie la taille de la pile.""" + return len(self.__pile) + + def sommet(self): + """Renvoie le sommet de la pile (sans le dépiler).""" + return self.__pile[-1] + + def __str__(self): + s = "|" + for val in self.__pile: + s = str(val) + "->" + s + return s + + +class Pile_chaine: + """Implémentation d'une pile par une liste chaînée.""" + def __init__(self): + """Crée une pile vide.""" + self.__pile = ListeChaine() + self.__taille = 0 + + def est_vide(self): + """Indique si la pile est vide.""" + return self.__taille == 0 + + def empiler(self, valeur): + """Empile la valeur.""" + self.__pile.ajoute(valeur) + self.__taille += 1 + + def depiler(self): + """Dépile le sommet de la pile et le renvoie.""" + if self.est_vide(): + raise IndexError("Impossible de dépiler une pile vide.") + valeur = self.__pile.tete() + self.__pile = self.__pile.queue() + self.__taille -= 1 + return valeur + + def taille(self): + """Renvoie la taille de la pile.""" + return self.__taille + + def sommet(self): + """Renvoie le sommet de la pile (sans le dépiler).""" + if self.est_vide(): + raise IndexError("Une pile vide n'a pas de sommet.") + return self.__pile.tete() + + def __str__(self): + return str(self.__pile) + "->|" + + +if __name__ == "__main__": + p = Pile_lst() + print(p.est_vide()) + p.empiler('A') + p.empiler('B') + p.empiler('C') + print(p.est_vide()) + print(p.sommet()) + print(p) + print(p.taille()) + print(p.depiler()) + print(p.depiler()) + print(p.depiler()) + print(p.est_vide()) diff --git a/README.txt b/README.txt index f8e03b5..30bd045 100644 --- a/README.txt +++ b/README.txt @@ -2,23 +2,30 @@ Votre mission, si vous l’acceptez (et même si vous ne l’acceptez pas), est utilisant une structure de donnée adaptée, et avec une interface graphique. Vous aurez pour cela 6 heures (les trois séances jusqu’aux vacances de Noël). Plus précisément, on attend au minimum : -• Une classe Carte ayant -– deux attributs valeur et couleur -– une méthode compare qui prend en paramètre une autre carte other, et qui renvoie -1 si la valeur de self est supérieure à la valeur de other ; -−1 si la valeur de other est supérieure à la valeur de self ; -0 si les deux valeurs sont les mêmes. -• Une classe Jeux ayant -– Un attribut paquet contenant toutes les cartes du jeux. Le nombre de cartes (32 ou 54) sera un paramètre -du constructeur. Ce paquet sera créé puis mélangé dans le constructeur. -– Une méthode distribue qui renvoie deux Files contenant la moitié des cartes du paquet chacune. On -utilisera la classe File du cours (disponible sur Moodle). -À chaque tour de jeu, chaque joueur joue la carte supérieure de son paquet. Le joueur ayant la carte de plus -grande valeur récupère les deux cartes et les remets sous son paquet. -En cas d’égalité, chaque joueur ajoute une carte à l’envers, puis une autre carte à l’endroit, et on compare à -nouveau les valeurs. En cas de nouvelle égalité, on réitère le processus. Le gagnant remporte l’ensemble des -cartes jouées. + + + • Une classe Carte ayant + – deux attributs valeur et couleur + – une méthode compare qui prend en paramètre une autre carte other, et qui renvoie: 1 si la valeur de self est supérieure à la valeur de other ; + −1 si la valeur de other est supérieure à la valeur de self ; + 0 si les deux valeurs sont les mêmes. + + + • Une classe Jeux ayant + – Un attribut paquet contenant toutes les cartes du jeux. Le nombre de cartes (32 ou 52) sera un paramètre du constructeur. Ce paquet sera créé puis mélangé dans le constructeur. + – Une méthode distribue qui renvoie deux Files contenant la moitié des cartes du paquet chacune. On utilisera la classe File du cours (disponible sur Moodle). + + +À chaque tour de jeu, chaque joueur joue la carte supérieure de son paquet. Le joueur ayant la carte de plus grande valeur récupère les deux cartes et les remets sous son paquet. + +En cas d’égalité, chaque joueur ajoute une carte à l’envers, puis une autre carte à l’endroit, et on compare à nouveau les valeurs. En cas de nouvelle égalité, on réitère le processus. +Le gagnant remporte l’ensemble des cartes jouées. + Si un joueur ne peut plus jouer car il n’a plus de carte, il a perdu la partie. + + + + Concernant l’interface graphique, elle sera réalisée en Tkinter, et permettra de faire une partie contre l’or- dinateur. Il n’est pas nécessaire d’afficher les cartes à un format graphique (même si ce n’est bien sûr pas interdit) : on pourra se contenter de textes de la forme « 3 de carreau » ou « roi de pique ». \ No newline at end of file diff --git a/bataille.py b/bataille.py index 927ad33..19197ec 100644 --- a/bataille.py +++ b/bataille.py @@ -42,4 +42,4 @@ class Joueur: def tire_carte(self): self.derniere_carte = self.paquet_j.defiler() - return self.derniere_carte \ No newline at end of file + return self.derniere_carte diff --git a/img/1.png b/img/1.png new file mode 100644 index 0000000..3ff8aa6 Binary files /dev/null and b/img/1.png differ diff --git a/img/10.png b/img/10.png new file mode 100644 index 0000000..f8d5deb Binary files /dev/null and b/img/10.png differ diff --git a/img/11.png b/img/11.png new file mode 100644 index 0000000..f0f7d79 Binary files /dev/null and b/img/11.png differ diff --git a/img/12.png b/img/12.png new file mode 100644 index 0000000..465d962 Binary files /dev/null and b/img/12.png differ diff --git a/img/13.png b/img/13.png new file mode 100644 index 0000000..70c085b Binary files /dev/null and b/img/13.png differ diff --git a/img/14.png b/img/14.png new file mode 100644 index 0000000..ca08035 Binary files /dev/null and b/img/14.png differ diff --git a/img/15.png b/img/15.png new file mode 100644 index 0000000..99d1ef3 Binary files /dev/null and b/img/15.png differ diff --git a/img/16.png b/img/16.png new file mode 100644 index 0000000..2b98730 Binary files /dev/null and b/img/16.png differ diff --git a/img/17.png b/img/17.png new file mode 100644 index 0000000..888cdd6 Binary files /dev/null and b/img/17.png differ diff --git a/img/18.png b/img/18.png new file mode 100644 index 0000000..66ea2f1 Binary files /dev/null and b/img/18.png differ diff --git a/img/19.png b/img/19.png new file mode 100644 index 0000000..30f93d2 Binary files /dev/null and b/img/19.png differ diff --git a/img/2.png b/img/2.png new file mode 100644 index 0000000..536a3be Binary files /dev/null and b/img/2.png differ diff --git a/img/20.png b/img/20.png new file mode 100644 index 0000000..2dcf08e Binary files /dev/null and b/img/20.png differ diff --git a/img/21.png b/img/21.png new file mode 100644 index 0000000..2228cec Binary files /dev/null and b/img/21.png differ diff --git a/img/22.png b/img/22.png new file mode 100644 index 0000000..273a1fe Binary files /dev/null and b/img/22.png differ diff --git a/img/23.png b/img/23.png new file mode 100644 index 0000000..f649c8d Binary files /dev/null and b/img/23.png differ diff --git a/img/24.png b/img/24.png new file mode 100644 index 0000000..d5833b2 Binary files /dev/null and b/img/24.png differ diff --git a/img/25.png b/img/25.png new file mode 100644 index 0000000..539f327 Binary files /dev/null and b/img/25.png differ diff --git a/img/26.png b/img/26.png new file mode 100644 index 0000000..b7446cb Binary files /dev/null and b/img/26.png differ diff --git a/img/27.png b/img/27.png new file mode 100644 index 0000000..6e274b2 Binary files /dev/null and b/img/27.png differ diff --git a/img/28.png b/img/28.png new file mode 100644 index 0000000..48dbe15 Binary files /dev/null and b/img/28.png differ diff --git a/img/29.png b/img/29.png new file mode 100644 index 0000000..aca12f2 Binary files /dev/null and b/img/29.png differ diff --git a/img/3.png b/img/3.png new file mode 100644 index 0000000..534cf09 Binary files /dev/null and b/img/3.png differ diff --git a/img/30.png b/img/30.png new file mode 100644 index 0000000..ee77ee9 Binary files /dev/null and b/img/30.png differ diff --git a/img/31.png b/img/31.png new file mode 100644 index 0000000..1a99572 Binary files /dev/null and b/img/31.png differ diff --git a/img/32.png b/img/32.png new file mode 100644 index 0000000..8d97797 Binary files /dev/null and b/img/32.png differ diff --git a/img/33.png b/img/33.png new file mode 100644 index 0000000..9293ed3 Binary files /dev/null and b/img/33.png differ diff --git a/img/34.png b/img/34.png new file mode 100644 index 0000000..edc65b5 Binary files /dev/null and b/img/34.png differ diff --git a/img/35.png b/img/35.png new file mode 100644 index 0000000..5a26cbb Binary files /dev/null and b/img/35.png differ diff --git a/img/36.png b/img/36.png new file mode 100644 index 0000000..b21a3ee Binary files /dev/null and b/img/36.png differ diff --git a/img/37.png b/img/37.png new file mode 100644 index 0000000..451ac6a Binary files /dev/null and b/img/37.png differ diff --git a/img/38.png b/img/38.png new file mode 100644 index 0000000..5cf3bcf Binary files /dev/null and b/img/38.png differ diff --git a/img/39.png b/img/39.png new file mode 100644 index 0000000..a8a4236 Binary files /dev/null and b/img/39.png differ diff --git a/img/4.png b/img/4.png new file mode 100644 index 0000000..d98a7c4 Binary files /dev/null and b/img/4.png differ diff --git a/img/40.png b/img/40.png new file mode 100644 index 0000000..4bf1de9 Binary files /dev/null and b/img/40.png differ diff --git a/img/41.png b/img/41.png new file mode 100644 index 0000000..cc72540 Binary files /dev/null and b/img/41.png differ diff --git a/img/42.png b/img/42.png new file mode 100644 index 0000000..2c93a21 Binary files /dev/null and b/img/42.png differ diff --git a/img/43.png b/img/43.png new file mode 100644 index 0000000..30d06de Binary files /dev/null and b/img/43.png differ diff --git a/img/44.png b/img/44.png new file mode 100644 index 0000000..dd2418b Binary files /dev/null and b/img/44.png differ diff --git a/img/45.png b/img/45.png new file mode 100644 index 0000000..d9435b4 Binary files /dev/null and b/img/45.png differ diff --git a/img/46.png b/img/46.png new file mode 100644 index 0000000..c8d38f0 Binary files /dev/null and b/img/46.png differ diff --git a/img/47.png b/img/47.png new file mode 100644 index 0000000..72a3bda Binary files /dev/null and b/img/47.png differ diff --git a/img/48.png b/img/48.png new file mode 100644 index 0000000..5132549 Binary files /dev/null and b/img/48.png differ diff --git a/img/49.png b/img/49.png new file mode 100644 index 0000000..c46843a Binary files /dev/null and b/img/49.png differ diff --git a/img/5.png b/img/5.png new file mode 100644 index 0000000..cf1f723 Binary files /dev/null and b/img/5.png differ diff --git a/img/50.png b/img/50.png new file mode 100644 index 0000000..ae7ba22 Binary files /dev/null and b/img/50.png differ diff --git a/img/51.png b/img/51.png new file mode 100644 index 0000000..ed95e56 Binary files /dev/null and b/img/51.png differ diff --git a/img/52.png b/img/52.png new file mode 100644 index 0000000..8278642 Binary files /dev/null and b/img/52.png differ diff --git a/img/6.png b/img/6.png new file mode 100644 index 0000000..3072ea3 Binary files /dev/null and b/img/6.png differ diff --git a/img/7.png b/img/7.png new file mode 100644 index 0000000..7274ece Binary files /dev/null and b/img/7.png differ diff --git a/img/8.png b/img/8.png new file mode 100644 index 0000000..17ba2c2 Binary files /dev/null and b/img/8.png differ diff --git a/img/9.png b/img/9.png new file mode 100644 index 0000000..fd9d3b5 Binary files /dev/null and b/img/9.png differ diff --git a/main.py b/main.py new file mode 100644 index 0000000..9538ebc --- /dev/null +++ b/main.py @@ -0,0 +1,14 @@ +from bataille import * + +def bataille(): + tour = 1 + jeux = Jeux() + carte_j1, carte_j2 = jeux.depiler() + nom = str(input("Entrez votre nom")) + j1 = Joueur(carte_j1, nom) + j2 = Joueur(carte_j2, "Bot") + 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() + carte_j1.compare(carte_j2) + \ No newline at end of file diff --git a/window.py b/window.py new file mode 100644 index 0000000..bc68f6d --- /dev/null +++ b/window.py @@ -0,0 +1,39 @@ +from tkinter import Tk, Label, Button + +class Window(Tk): + + def __init__(self, p1, p2): + """Initialise la fenêtre et prends les deux joueurs en arguments""" + Tk.__init__(self) + + self.title("Bataille") + self.minsize(1300, 600) + self.geometry("1300x600") + self.config(background="green") + + self.build_window() + self.p1 = p1 + self.p2 = p2 + self.c1 = None + self.c2 = None + + def build_window(self): + self.title = Label(text="Bataille", font=("Courrier", 32)) + self.title.grid(row=1, column=1) + self.button = Button(self, text="Jouer") #, command=) + + def show_cards(self): + if self.c1 is not None: + self.c1.destroy() + if self.c2 is not None: + self.c2.destroy() + self.c1 = Label(text=self.p1.derniere_carte, font=("Courrier", 48)) + self.c2 = Label(text=self.p2.derniere_carte, font=("Courrier", 48)) + self.c1.grid(row=2, column=0) + self.c2.grid(row=2, column=2) + + +if __name__ == "__main__": + app = Window(None, None) + app.show_cards() + app.mainloop()