Browse Source

Supprimer 'projet bataille.py'

master
DELPUI Loïc 9 months ago
parent
commit
7b4df2372f
  1. 173
      projet bataille.py

173
projet bataille.py

@ -1,173 +0,0 @@
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 maxinmum 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 à lenvers, puis une autre carte à lendroit, et on compare à
nouveau les valeurs. En cas de nouvelle égalité, on réitère le processus. Le gagnant remporte lensemble des
cartes jouées.
Si un joueur ne peut plus jouer car il na plus de carte, il a perdu la partie.'
Concernant l'interface graphique, elle a été réalisée avec Tkinter, elle permet de faire un 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 s'il y a des quoicoubozos, D veut dire 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, a fait le SQL
Loïc, loiciste extrémiste, amateur de NSI, a fait le mécanisme du jeu et l'interface graphique
Marvyn, a soutenu Loïc comme un malade, quel coeur de loiciste ! (à confirmer...)""")
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("<Button 1>", click)
window.mainloop()
Loading…
Cancel
Save