Aide python tkinter à placer plusieurs points dans des cases
Bonjour,
Je cherche a créer un jeu. J'ai besoin d'aide pour placer les points. Je dois pouvoir poser 2 points dans les colonnes 3 sur les cases du coté et 4 au milieux.
import tkinter as tk
wind = tk.Tk()
canvas = tk.Canvas(wind, width=500, height=500, highlightthickness = 0,bg = "black")
canvas.pack()
class Interfaces:
def __init__(self):
"""
Initialise les variables de la classe
"""
self.config_window()
def config_window(self):
"""
Configuration de la fenêtre graphique
"""
# Nom de la fenêtre
wind.title("Games")
# Taille de la fenêtre
wind.geometry("700x400")
# Couleur de la fenêtre
wind.config(background = "black")
interface = Interfaces()
class Player:
def __init__(self, color):
"""
Initialise les variables de la classe
"""
self.color = color
def change_color(self, square):
canvas.itemconfig(square, fill=self.color)
class Case:
def __init__(self, rows=5, columns=10, players=2):
"""
Initialise les variables de la classe
"""
self.rows = rows
self.columns = columns
self.players = players
self.squares = []
self.current_player = 0
self.colors = ["red", "blue", "green", "yellow", "orange", "purple", "pink", "white"]
self.players_list = [Player(self.colors[i]) for i in range(self.players)]
self.square_colors = {}
self.carre()
def carre(self, color = "red"):
"""
Création de la grille à base de case
"""
for i in range(self.columns):
for j in range(self.rows):
x1 = i * 50
y1 = j * 50
x2 = x1 + 45 - (1 if i == self.columns - 1 else 0)
y2 = y1 + 45 - (1 if j == self.rows - 1 else 0)
square = canvas.create_rectangle(x1, y1, x2, y2, fill= "black", outline=color)
self.squares.append(square)
self.square_colors[square] = "black"
canvas.tag_bind(square, "<1>", self.color_square)
def color_square(self, event):
"""
Fonction appelée lorsque un carré est cliqué
"""
square = event.widget.find_closest(event.x, event.y)[0]
if self.square_colors[square] != "black":
return
x, y = event.x, event.y
current_player = self.current_player
current_color = self.players_list[current_player].color
#calculer les coordonnées du coin supérieur gauche de la case
x1, y1, x2, y2 = canvas.coords(square)
x = x1 + 5
y = y1 + 5
point = canvas.create_oval(x, y, x + 10, y + 10, fill=current_color)
self.square_colors[square] = current_color
self.current_player = (self.current_player + 1) % self.players
try:
self.player_label.destroy()
except:
pass
self.player_label = tk.Label(wind, text=f"Joueur {current_player + 1} {current_color}", font=("Helvetica",12), fg=current_color)
self.player_label.pack()
class Play:
def __init__(self, wind):
"""
Initialise les variables de la classe
"""
self.wind = wind
self.create_widgets()
self.start_button = tk.Button(self.wind, text="Commencez", command=self.start_game)
self.start_button.pack()
def create_widgets(self):
"""
I
"""
row_label = tk.Label(self.wind, text="Lignes:")
row_label.pack()
self.row_entry = tk.Entry(self.wind)
self.row_entry.pack()
column_label = tk.Label(self.wind, text="Colonnes:")
column_label.pack()
self.column_entry = tk.Entry(self.wind)
self.column_entry.pack()
player_label = tk.Label(self.wind, text="Joueurs:",)
player_label.pack()
self.player_entry = tk.Entry(self.wind)
self.player_entry.pack()
def start_game(self):
self.rows = int(self.row_entry.get())
self.columns = int(self.column_entry.get())
self.players = int(self.player_entry.get())
self.grid = Case(self.rows, self.columns, self.players)
play = Play(wind)
wind.mainloop()
Merci
Modération : Merci de mettre le code en forme comme expliqué ici
A voir également:
- Aide python tkinter à placer plusieurs points dans des cases
- Placer des points sur une carte - Guide
- Comment insérer des points de suite sur word - Guide
- Citizen code python avis - Accueil - Outils
- Grille tombola vierge à imprimer 50 cases - Télécharger - Création musicale
- Dessin avec des points ✓ - Forum Windows