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 - Accueil - Outils
- Pourquoi je reçois des points d'interrogation à la place des smileys iphone - Forum Samsung
- Copiez l'image dans un logiciel d'édition d'images ou un outil en ligne comme js paint ou pixlr e. remplissez les cases en suivant le code couleur. des cases supplémentaires vont se remplir automatiquement. que représente le dessin ? ✓ - Forum Windows