DELPUI Loïc
11 months ago
1 changed files with 169 additions and 169 deletions
@ -1,170 +1,170 @@ |
|||||
from tkinter import * |
from tkinter import * |
||||
from File import * |
from File import * |
||||
from random import shuffle |
from random import shuffle |
||||
from tkinter import messagebox |
from tkinter import messagebox |
||||
import sqlite3 |
import sqlite3 |
||||
|
|
||||
class Carte: |
class Carte: |
||||
def __init__(self, valeur, couleur): |
def __init__(self, valeur, couleur): |
||||
self.valeur = valeur |
self.valeur = valeur |
||||
self.couleur = couleur |
self.couleur = couleur |
||||
def compare(self, other): |
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) |
#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: |
if self.valeur > other.valeur: |
||||
return 1 |
return 1 |
||||
elif self.valeur < other.valeur: |
elif self.valeur < other.valeur: |
||||
return 0 |
return 0 |
||||
return 2 |
return 2 |
||||
|
|
||||
class Jeux: |
class Jeux: |
||||
def __init__ (self, nbr_cartes): |
def __init__ (self, nbr_cartes): |
||||
self.nb = nbr_cartes |
self.nb = nbr_cartes |
||||
self.paquet = [] |
self.paquet = [] |
||||
for i in couleurs: |
for i in couleurs: |
||||
if self.nb == 52: |
if self.nb == 52: |
||||
for j in numeros: |
for j in numeros: |
||||
self.paquet.append(Carte(j, i)) |
self.paquet.append(Carte(j, i)) |
||||
else: |
else: |
||||
for j in numeros[5:]: |
for j in numeros[5:]: |
||||
self.paquet.append(Carte(j, i)) |
self.paquet.append(Carte(j, i)) |
||||
shuffle(self.paquet) |
shuffle(self.paquet) |
||||
|
|
||||
def distribue(self): |
def distribue(self): |
||||
while len(self.paquet) > 0: |
while len(self.paquet) > 0: |
||||
for player in players: |
for player in players: |
||||
player.enfiler(self.paquet.pop(0)) |
player.enfiler(self.paquet.pop(0)) |
||||
|
|
||||
def click(event): |
def click(event): |
||||
global status, cartes_tour |
global status, cartes_tour |
||||
|
|
||||
def afficher(): |
def afficher(): |
||||
for i in range(2): |
for i in range(2): |
||||
canvas.itemconfig(player_cartecolor[i], fill = "#fff") |
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_carte[i], text = cartes_tour[-i-1].valeur + cartes_tour[-i-1].couleur) |
||||
canvas.itemconfig(player_left[i], text = "Left : " + str(players[i].taille())) |
canvas.itemconfig(player_left[i], text = "Left : " + str(players[i].taille())) |
||||
if cartes_tour[-i-1].couleur in ["♥", "♦"]: |
if cartes_tour[-i-1].couleur in ["♥", "♦"]: |
||||
canvas.itemconfig(player_carte[i], fill = "#f00") |
canvas.itemconfig(player_carte[i], fill = "#f00") |
||||
else: |
else: |
||||
canvas.itemconfig(player_carte[i], fill = "#000") |
canvas.itemconfig(player_carte[i], fill = "#000") |
||||
|
|
||||
def retourne_carte(): |
def retourne_carte(): |
||||
for i in range(2): |
for i in range(2): |
||||
canvas.itemconfig(player_cartecolor[i], fill = "#f77") |
canvas.itemconfig(player_cartecolor[i], fill = "#f77") |
||||
canvas.itemconfig(player_carte[i], text = "") |
canvas.itemconfig(player_carte[i], text = "") |
||||
canvas.itemconfig(player_left[i], text = "Left : " + str(players[i].taille())) |
canvas.itemconfig(player_left[i], text = "Left : " + str(players[i].taille())) |
||||
|
|
||||
if players[0].taille() == 0: |
if players[0].taille() == 0: |
||||
messagebox.showinfo("Le joueur 2 a gagné", "LE JOUEUR 2 A GAGNÉ !") |
messagebox.showinfo("Le joueur 2 a gagné", "LE JOUEUR 2 A GAGNÉ !") |
||||
exit() |
exit() |
||||
if players[1].taille() == 0: |
if players[1].taille() == 0: |
||||
messagebox.showinfo("Le joueur 1 a gagné", "LE JOUEUR 1 A GAGNÉ !") |
messagebox.showinfo("Le joueur 1 a gagné", "LE JOUEUR 1 A GAGNÉ !") |
||||
exit() |
exit() |
||||
|
|
||||
x, y = event.x, event.y |
x, y = event.x, event.y |
||||
if x > 50 and x < 150 and y > 100 and y < 250: |
if x > 50 and x < 150 and y > 100 and y < 250: |
||||
if status == 1: |
if status == 1: |
||||
cartes_tour = [] |
cartes_tour = [] |
||||
cartes_tour.extend([players[0].defiler(), players[1].defiler()]) |
cartes_tour.extend([players[0].defiler(), players[1].defiler()]) |
||||
winner = cartes_tour[-2].compare(cartes_tour[-1]) |
winner = cartes_tour[-2].compare(cartes_tour[-1]) |
||||
if winner == 2: |
if winner == 2: |
||||
status = 2 |
status = 2 |
||||
else: |
else: |
||||
for carte in cartes_tour: |
for carte in cartes_tour: |
||||
players[winner].enfiler(carte) |
players[winner].enfiler(carte) |
||||
afficher() |
afficher() |
||||
elif status == 2: |
elif status == 2: |
||||
cartes_tour.extend([players[0].defiler(), players[1].defiler()]) |
cartes_tour.extend([players[0].defiler(), players[1].defiler()]) |
||||
retourne_carte() |
retourne_carte() |
||||
status = 3 |
status = 3 |
||||
else: |
else: |
||||
cartes_tour.extend([players[0].defiler(), players[1].defiler()]) |
cartes_tour.extend([players[0].defiler(), players[1].defiler()]) |
||||
winner = cartes_tour[-2].compare(cartes_tour[-1]) |
winner = cartes_tour[-2].compare(cartes_tour[-1]) |
||||
if winner == 2: |
if winner == 2: |
||||
status = 2 |
status = 2 |
||||
else: |
else: |
||||
status = 1 |
status = 1 |
||||
for carte in cartes_tour: |
for carte in cartes_tour: |
||||
players[winner].enfiler(carte) |
players[winner].enfiler(carte) |
||||
afficher() |
afficher() |
||||
Per1 = ("Joueur 1", str(players[0].taille()), cartes_tour[-2].valeur,) |
Per1 = ("Joueur 1", str(players[0].taille()), cartes_tour[-2].valeur,) |
||||
c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per1) |
c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per1) |
||||
Per2 = ("Joueur 2", str(players[1].taille()), cartes_tour[-1].valeur,) |
Per2 = ("Joueur 2", str(players[1].taille()), cartes_tour[-1].valeur,) |
||||
c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per2) |
c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per2) |
||||
c.execute("SELECT * FROM Cartes") |
c.execute("SELECT * FROM Cartes") |
||||
conn.commit() |
conn.commit() |
||||
|
|
||||
def info(): |
def info(): |
||||
messagebox.showinfo("Achtung : Informations Importantes", """Salut les quoicoubébous, |
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. |
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... |
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 : |
Voici les règles du jeu le plus baisé de tous les temps : |
||||
Je cite : |
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. |
'À 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. |
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.' |
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é :) |
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... |
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 : |
Voici l'équipe : |
||||
Alexi, chef d'équipe, amateur de NSI, ptit fan de loli |
Alexi, chef d'équipe, amateur de NSI, fan de loli |
||||
Loïc, loiciste extrémiste, amateur de NSI, grand amateur de quoicoubébous |
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 ! |
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""") |
Cliquer sur le paquet de gauche pour tryhard fort sur ce jeu UwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwuUwu""") |
||||
|
|
||||
couleurs = ["♥", "♦", "♣", "♠"] |
couleurs = ["♥", "♦", "♣", "♠"] |
||||
numeros = ["2", "3", "4", "5", "6", "7", "8", "9", "D", "J", "Q", "R", "S"] |
numeros = ["2", "3", "4", "5", "6", "7", "8", "9", "D", "J", "Q", "R", "S"] |
||||
#D=Dix |
#D=Dix |
||||
#J=Jack |
#J=Jack |
||||
#Q=Queen |
#Q=Queen |
||||
#R=Roi |
#R=Roi |
||||
#S=aS |
#S=aS |
||||
|
|
||||
def starting(nb_cartes): |
def starting(nb_cartes): |
||||
global jeu |
global jeu |
||||
jeu = Jeux(nb_cartes) |
jeu = Jeux(nb_cartes) |
||||
start.destroy() |
start.destroy() |
||||
|
|
||||
start = Tk() |
start = Tk() |
||||
start_title = Label(start, text = "La Bataille", font = ("Courrier New", 30, "bold")) |
start_title = Label(start, text = "La Bataille", font = ("Courrier New", 30, "bold")) |
||||
start_title.pack() |
start_title.pack() |
||||
button_32 = Button(start, text = "Jeu de 32 cartes", font = ("Courrier New", 20, "bold"), command = lambda: starting(32)) |
button_32 = Button(start, text = "Jeu de 32 cartes", font = ("Courrier New", 20, "bold"), command = lambda: starting(32)) |
||||
button_32.pack() |
button_32.pack() |
||||
button_52 = Button(start, text = "Jeu de 52 cartes", font = ("Courrier New", 20, "bold"), command = lambda: starting(52)) |
button_52 = Button(start, text = "Jeu de 52 cartes", font = ("Courrier New", 20, "bold"), command = lambda: starting(52)) |
||||
button_52.pack() |
button_52.pack() |
||||
start.mainloop() |
start.mainloop() |
||||
|
|
||||
players = [File_chaine(), File_chaine()] |
players = [File_chaine(), File_chaine()] |
||||
|
|
||||
conn = sqlite3.connect("Bataille.db") |
conn = sqlite3.connect("Bataille.db") |
||||
c = conn.cursor() |
c = conn.cursor() |
||||
c.execute('''CREATE TABLE if not exists Cartes(Joueur VARCHAR(255), NombreCartes INT, CarteJouée TEXT)''') |
c.execute('''CREATE TABLE if not exists Cartes(Joueur VARCHAR(255), NombreCartes INT, CarteJouée TEXT)''') |
||||
Per1 = ("Joueur 1", str(players[0].taille()), None) |
Per1 = ("Joueur 1", str(players[0].taille()), None) |
||||
c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per1) |
c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per1) |
||||
Per2 = ("Joueur 2", str(players[1].taille()), None) |
Per2 = ("Joueur 2", str(players[1].taille()), None) |
||||
c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per2) |
c.execute("INSERT INTO Cartes VALUES (?, ?, ?)", Per2) |
||||
c.execute("SELECT * FROM Cartes") |
c.execute("SELECT * FROM Cartes") |
||||
c.fetchall() |
c.fetchall() |
||||
conn.commit() |
conn.commit() |
||||
|
|
||||
jeu.distribue() |
jeu.distribue() |
||||
|
|
||||
window = Tk() |
window = Tk() |
||||
window.title("Bataille") |
window.title("Bataille") |
||||
window.geometry(f"700x400+300+200") |
window.geometry(f"700x400+300+200") |
||||
|
|
||||
canvas = Canvas(window, width = 650, height = 300, background = "#070") |
canvas = Canvas(window, width = 650, height = 300, background = "#070") |
||||
canvas.place(x = 25, y = 50) |
canvas.place(x = 25, y = 50) |
||||
|
|
||||
canvas.create_rectangle(50, 100, 150, 250, fill = "#f77") |
canvas.create_rectangle(50, 100, 150, 250, fill = "#f77") |
||||
canvas.create_rectangle(500, 100, 600, 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_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_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"))] |
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 = Button(window, text = "Achtung ! Information importante", command = info) |
||||
info_button.place(x = 260, y = 370) |
info_button.place(x = 260, y = 370) |
||||
|
|
||||
status = 1 |
status = 1 |
||||
|
|
||||
canvas.bind("<Button 1>", click) |
canvas.bind("<Button 1>", click) |
||||
|
|
||||
window.mainloop() |
window.mainloop() |
Loading…
Reference in new issue