From 913afa92a2b79ab85af8c272fcbae45cd430709e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?DELPUI=20Lo=C3=AFc?= Date: Fri, 22 Dec 2023 15:07:59 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20'projet=20bataille.?= =?UTF-8?q?py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit uwu --- projet bataille.py | 338 ++++++++++++++++++++++----------------------- 1 file changed, 169 insertions(+), 169 deletions(-) diff --git a/projet bataille.py b/projet bataille.py index b7e32f8..e439598 100644 --- a/projet bataille.py +++ b/projet bataille.py @@ -1,170 +1,170 @@ -from tkinter import * -from File import * -from random import shuffle -from tkinter import messagebox -import sqlite3 - -class Carte: - def __init__(self, valeur, couleur): - self.valeur = valeur - self.couleur = couleur - def compare(self, other): - #Les valeurs revoyées ne respectent pas les consignes pour des raisons d'optimisation et d'allègement du programme (ils sont directement utilisées en tant qu'indice des listes) - if self.valeur > other.valeur: - return 1 - elif self.valeur < other.valeur: - return 0 - return 2 - -class Jeux: - def __init__ (self, nbr_cartes): - self.nb = nbr_cartes - self.paquet = [] - for i in couleurs: - if self.nb == 52: - for j in numeros: - self.paquet.append(Carte(j, i)) - else: - for j in numeros[5:]: - self.paquet.append(Carte(j, i)) - shuffle(self.paquet) - - def distribue(self): - while len(self.paquet) > 0: - for player in players: - player.enfiler(self.paquet.pop(0)) - -def click(event): - global status, cartes_tour - - def afficher(): - for i in range(2): - canvas.itemconfig(player_cartecolor[i], fill = "#fff") - canvas.itemconfig(player_carte[i], text = cartes_tour[-i-1].valeur + cartes_tour[-i-1].couleur) - canvas.itemconfig(player_left[i], text = "Left : " + str(players[i].taille())) - if cartes_tour[-i-1].couleur in ["♥", "♦"]: - canvas.itemconfig(player_carte[i], fill = "#f00") - else: - canvas.itemconfig(player_carte[i], fill = "#000") - - def retourne_carte(): - for i in range(2): - canvas.itemconfig(player_cartecolor[i], fill = "#f77") - canvas.itemconfig(player_carte[i], text = "") - canvas.itemconfig(player_left[i], text = "Left : " + str(players[i].taille())) - - if players[0].taille() == 0: - messagebox.showinfo("Le joueur 2 a gagné", "LE JOUEUR 2 A GAGNÉ !") - exit() - if players[1].taille() == 0: - messagebox.showinfo("Le joueur 1 a gagné", "LE JOUEUR 1 A GAGNÉ !") - exit() - - x, y = event.x, event.y - if x > 50 and x < 150 and y > 100 and y < 250: - if status == 1: - cartes_tour = [] - cartes_tour.extend([players[0].defiler(), players[1].defiler()]) - winner = cartes_tour[-2].compare(cartes_tour[-1]) - if winner == 2: - status = 2 - else: - for carte in cartes_tour: - players[winner].enfiler(carte) - afficher() - elif status == 2: - cartes_tour.extend([players[0].defiler(), players[1].defiler()]) - retourne_carte() - status = 3 - else: - cartes_tour.extend([players[0].defiler(), players[1].defiler()]) - winner = cartes_tour[-2].compare(cartes_tour[-1]) - if winner == 2: - status = 2 - else: - status = 1 - for carte in cartes_tour: - players[winner].enfiler(carte) - afficher() - Per1 = ("Joueur 1", str(players[0].taille()), cartes_tour[-2].valeur,) - c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per1) - Per2 = ("Joueur 2", str(players[1].taille()), cartes_tour[-1].valeur,) - c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per2) - c.execute("SELECT * FROM Cartes") - conn.commit() - -def info(): - messagebox.showinfo("Achtung : Informations Importantes", """Salut les quoicoubébous, -Notre mission que nous n'avons pas accepté (mais que l'on nous a fait accomplir de force) est de réaliser un jeu de bataille en utilisant une structure de donnée adaptée, et avec une interface graphique. Nous avions pour cela 6 heures de NSI + les nuits + les week-end + les divers activités quoicoubizarres. -Nous avons fait le minimum requis, c'est à dire une classe Carte, plus une classe Jeux... Puis nous avons fait le maximum possible, c'est à dire une jolie interface graphique loiciste extrémiste... -Voici les règles du jeu le plus baisé de tous les temps : -Je cite : -'À 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 a été réalisée avec Tkinter, elle permet de faire une partie contre l'ordinateur... Comme ce n'est pas interdit, nous avons affiché les cartes à un format graphique, car nous sommes en Terminale NSI et nous ne sommes pas bêtes, la preuve : regardez ma beauté :) -Au cas où s'il y a des quoicoubozos, D comme DIX (10, pas 509 (si vous avez compris ça, je vous donne 10 centimes)), J comme Jack, Q comme Queen, R comme Roi, et S comme aS... -Voici l'équipe : -Alexi, chef d'équipe, amateur de NSI, ptit fan de loli -Loïc, loiciste extrémiste, amateur de NSI, grand amateur de quoicoubébous -Marvyn, grand amateur de NSI, a soutenu Loïc comme un malade (ce qui est vital), quel coeur de loiciste ! -Cliquer sur le paquet de gauche pour tryhard fort sur ce jeu UwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwu""") - -couleurs = ["♥", "♦", "♣", "♠"] -numeros = ["2", "3", "4", "5", "6", "7", "8", "9", "D", "J", "Q", "R", "S"] -#D=Dix -#J=Jack -#Q=Queen -#R=Roi -#S=aS - -def starting(nb_cartes): - global jeu - jeu = Jeux(nb_cartes) - start.destroy() - -start = Tk() -start_title = Label(start, text = "La Bataille", font = ("Courrier New", 30, "bold")) -start_title.pack() -button_32 = Button(start, text = "Jeu de 32 cartes", font = ("Courrier New", 20, "bold"), command = lambda: starting(32)) -button_32.pack() -button_52 = Button(start, text = "Jeu de 52 cartes", font = ("Courrier New", 20, "bold"), command = lambda: starting(52)) -button_52.pack() -start.mainloop() - -players = [File_chaine(), File_chaine()] - -conn = sqlite3.connect("Bataille.db") -c = conn.cursor() -c.execute('''CREATE TABLE if not exists Cartes(Joueur VARCHAR(255), NombreCartes INT, CarteJouée TEXT)''') -Per1 = ("Joueur 1", str(players[0].taille()), None) -c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per1) -Per2 = ("Joueur 2", str(players[1].taille()), None) -c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per2) -c.execute("SELECT * FROM Cartes") -c.fetchall() -conn.commit() - -jeu.distribue() - -window = Tk() -window.title("Bataille") -window.geometry(f"700x400+300+200") - -canvas = Canvas(window, width = 650, height = 300, background = "#070") -canvas.place(x = 25, y = 50) - -canvas.create_rectangle(50, 100, 150, 250, fill = "#f77") -canvas.create_rectangle(500, 100, 600, 250, fill = "#f77") -player_cartecolor = [canvas.create_rectangle(200, 75, 300, 225, fill = "#fff"), canvas.create_rectangle(350, 75, 450, 225, fill = "#fff")] -player_left = [canvas.create_text(100, 175, text = "Left : " + str(players[0].taille())), canvas.create_text(550, 175, text = "Left : " + str(players[1].taille()))] -player_carte = [canvas.create_text(250, 150, text = "", font = ("Courrier New", 30, "bold")), canvas.create_text(400, 150, text = "", font = ("Courrier New", 30, "bold"))] - -info_button = Button(window, text = "Achtung ! Information importante", command = info) -info_button.place(x = 260, y = 370) - -status = 1 - -canvas.bind("