Je crois que c'est fini
|
After Width: | Height: | Size: 678 B |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 814 B |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
|
After Width: | Height: | Size: 10 KiB |
@@ -1,6 +1,7 @@
|
|||||||
import tkinter
|
import tkinter
|
||||||
from tkinter import filedialog
|
from tkinter import filedialog
|
||||||
import os
|
import os
|
||||||
|
import math
|
||||||
|
|
||||||
class Terrain:
|
class Terrain:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -60,11 +61,22 @@ class Gui:
|
|||||||
self.filemenu.add_command(label="exit", command=self.root.quit)
|
self.filemenu.add_command(label="exit", command=self.root.quit)
|
||||||
self.menubar.add_cascade(label="file", menu=self.filemenu)
|
self.menubar.add_cascade(label="file", menu=self.filemenu)
|
||||||
|
|
||||||
|
self.action_to_show = []
|
||||||
|
|
||||||
# topbar
|
# topbar
|
||||||
self.root.config(menu=self.menubar)
|
self.root.config(menu=self.menubar)
|
||||||
|
|
||||||
|
# image des actions
|
||||||
|
|
||||||
|
self.tir_reussi = tkinter.PhotoImage(file='img/tir_reussi.png')
|
||||||
|
self.tir_rate = tkinter.PhotoImage(file='img/tir_rate.png')
|
||||||
|
self.lance_reussi = tkinter.PhotoImage(file='img/lance_reussi.png')
|
||||||
|
self.lance_rate = tkinter.PhotoImage(file='img/lance_rate.png')
|
||||||
|
self.rebond_def = tkinter.PhotoImage(file='img/rebond_def.png')
|
||||||
|
self.rebond_off = tkinter.PhotoImage(file='img/rebond_off.png')
|
||||||
|
self.faute = tkinter.PhotoImage(file='img/faute.png')
|
||||||
|
self.passe_dec = tkinter.PhotoImage(file='img/passe_dec.png')
|
||||||
|
|
||||||
|
|
||||||
self.root.bind("<Control-o>", self.browse_open)
|
self.root.bind("<Control-o>", self.browse_open)
|
||||||
self.root.bind("<Control-n>", self.new)
|
self.root.bind("<Control-n>", self.new)
|
||||||
@@ -141,16 +153,29 @@ class Gui:
|
|||||||
self.statsubmenu.add_command(label=self.team.players[3], command=lambda: self.draw_player(self.team.players[3]))
|
self.statsubmenu.add_command(label=self.team.players[3], command=lambda: self.draw_player(self.team.players[3]))
|
||||||
self.statsubmenu.add_command(label=self.team.players[4], command=lambda: self.draw_player(self.team.players[4]))
|
self.statsubmenu.add_command(label=self.team.players[4], command=lambda: self.draw_player(self.team.players[4]))
|
||||||
self.statmenu.add_cascade(label="player", menu=self.statsubmenu)
|
self.statmenu.add_cascade(label="player", menu=self.statsubmenu)
|
||||||
self.statmenu.add_command(label='team', command=self.draw_team)
|
self.statmenu.add_command(label='team', command=lambda: self.draw_player('*'))
|
||||||
|
|
||||||
# actions menubar
|
# actions menubar
|
||||||
self.actionmenu = tkinter.Menu(self.menubar, tearoff=0)
|
self.actionmenu = tkinter.Menu(self.menubar, tearoff=0)
|
||||||
self.actionmenu.add_checkbutton(0, label='tirs', background='red')
|
self.actionmenu.add_checkbutton(0, label='tirs', command=lambda: self.check_action('tirs'))
|
||||||
|
self.actionmenu.add_checkbutton(0, label='lance', command=lambda: self.check_action('lance'))
|
||||||
|
self.actionmenu.add_checkbutton(0, label='rebonds', command=lambda: self.check_action('rebond'))
|
||||||
|
self.actionmenu.add_checkbutton(0, label='passe', command=lambda: self.check_action('passe'))
|
||||||
|
self.actionmenu.add_checkbutton(0, label='faute', command=lambda: self.check_action('faute'))
|
||||||
|
for i in range(5):
|
||||||
|
self.actionmenu.invoke(i)
|
||||||
|
|
||||||
|
|
||||||
# menu contextuel des actions
|
# menu contextuel des actions
|
||||||
self.action = tkinter.Menu(self.root, tearoff=0)
|
self.action = tkinter.Menu(self.root, tearoff=0)
|
||||||
self.action.add_command(label='marque', command=lambda: self.action_menu('marque'))
|
self.action.add_command(label='tir réussi', command=lambda: self.action_menu('tm'))
|
||||||
self.action.add_command(label='rate', command=lambda: self.action_menu('rate'))
|
self.action.add_command(label='tir raté', command=lambda: self.action_menu('tr'))
|
||||||
|
self.action.add_command(label='lancé franc réussi', command=lambda: self.action_menu('lfm'))
|
||||||
|
self.action.add_command(label='lancé franc raté', command=lambda: self.action_menu('lfr'))
|
||||||
|
self.action.add_command(label='faute', command=lambda: self.action_menu('f'))
|
||||||
|
self.action.add_command(label='rebond offensif', command=lambda: self.action_menu('ro'))
|
||||||
|
self.action.add_command(label='rebond défensif', command=lambda: self.action_menu('rd'))
|
||||||
|
self.action.add_command(label='passe décisive', command=lambda: self.action_menu('pd'))
|
||||||
|
|
||||||
# Menu contextuel des joueurs
|
# Menu contextuel des joueurs
|
||||||
self.menu = tkinter.Menu(self.root, tearoff = 0)
|
self.menu = tkinter.Menu(self.root, tearoff = 0)
|
||||||
@@ -163,13 +188,20 @@ class Gui:
|
|||||||
self.bind_click = "<Button-1>"
|
self.bind_click = "<Button-1>"
|
||||||
self.bind_ctrl_s = "<Control-s>"
|
self.bind_ctrl_s = "<Control-s>"
|
||||||
|
|
||||||
|
def check_action(self, action):
|
||||||
|
if action in self.action_to_show:
|
||||||
|
self.action_to_show.remove(action)
|
||||||
|
else:
|
||||||
|
self.action_to_show.append(action)
|
||||||
|
|
||||||
def changemode(self, newmode):
|
def changemode(self, newmode):
|
||||||
if self.mode != newmode:
|
if self.mode != newmode:
|
||||||
if newmode == 'stat':
|
if newmode == 'stat':
|
||||||
self.menubar.add_cascade(label='stat', menu=self.statmenu)
|
self.menubar.add_cascade(label='stat', menu=self.statmenu)
|
||||||
self.menubar.add_cascade(label='actions', menu=self.actionmenu)
|
self.menubar.add_cascade(label='actions', menu=self.actionmenu)
|
||||||
else:
|
else:
|
||||||
self.menubar.delete(3)
|
for i in range(2):
|
||||||
|
self.menubar.delete(3)
|
||||||
self.mode = newmode
|
self.mode = newmode
|
||||||
items = self.canvas.find_all()
|
items = self.canvas.find_all()
|
||||||
while len(items) > 4:
|
while len(items) > 4:
|
||||||
@@ -192,18 +224,40 @@ class Gui:
|
|||||||
"""enregistre temporairement l'action"""
|
"""enregistre temporairement l'action"""
|
||||||
self.clean_terrain()
|
self.clean_terrain()
|
||||||
# test si l'action est dans la liste des 3 points
|
# test si l'action est dans la liste des 3 points
|
||||||
if ((self.team.posx-0)**2) + ((self.team.posy-self.terrain.height/2)**2) <= self.terrain.three_points**2 or ((self.team.posx-self.terrain.width)**2) + ((self.team.posy-self.terrain.height/2)**2) <= self.terrain.three_points**2:
|
if action == 'tm':
|
||||||
score = 2
|
self.canvas.create_image(self.team.posx-20, self.team.posy-20, image=self.tir_reussi, anchor='nw')
|
||||||
else:
|
if ((self.team.posx-0)**2) + ((self.team.posy-self.terrain.height/2)**2) <= self.terrain.three_points**2 or ((self.team.posx-self.terrain.width)**2) + ((self.team.posy-self.terrain.height/2)**2) <= self.terrain.three_points**2:
|
||||||
score = 3
|
score = 2
|
||||||
if action == 'marque':
|
else:
|
||||||
self.canvas.create_oval(self.team.posx-12, self.team.posy-12, self.team.posx+12, self.team.posy+12, fill='green')
|
score = 3
|
||||||
else:
|
if action == 'tr':
|
||||||
self.canvas.create_oval(self.team.posx-12, self.team.posy-12, self.team.posx+12, self.team.posy+12, fill='red')
|
self.canvas.create_image(self.team.posx-20, self.team.posy-20, image=self.tir_rate, anchor='nw')
|
||||||
|
score = 0
|
||||||
|
if action == 'lfm':
|
||||||
|
self.canvas.create_image(self.team.posx-20, self.team.posy-20, image=self.lance_reussi, anchor='nw')
|
||||||
|
score = 1
|
||||||
|
if action == 'lfr':
|
||||||
|
self.canvas.create_image(self.team.posx-20, self.team.posy-20, image=self.lance_rate, anchor='nw')
|
||||||
|
score = 0
|
||||||
|
if action == 'ro':
|
||||||
|
self.canvas.create_image(self.team.posx-20, self.team.posy-20, image=self.rebond_off, anchor='nw')
|
||||||
|
score = 0
|
||||||
|
if action == 'rd':
|
||||||
|
self.canvas.create_image(self.team.posx-20, self.team.posy-20, image=self.rebond_def, anchor='nw')
|
||||||
|
score = 0
|
||||||
|
if action == 'f':
|
||||||
|
self.canvas.create_image(self.team.posx-20, self.team.posy-20, image=self.faute, anchor='nw')
|
||||||
|
score = 0
|
||||||
|
if action == 'pd':
|
||||||
|
self.canvas.create_image(self.team.posx-20, self.team.posy-20, image=self.passe_dec, anchor='nw')
|
||||||
|
score = 0
|
||||||
|
|
||||||
|
|
||||||
if self.file.temp_data == '':
|
if self.file.temp_data == '':
|
||||||
self.root.title(self.file.name+' *')
|
self.root.title(self.file.name+' *')
|
||||||
self.file.temp_data += self.team.ac_player+' '+action+' '+str(score)+' '+str(self.team.posx)+' '+str(self.team.posy)+'\n'
|
self.file.temp_data += self.team.ac_player+' '+action+' '+str(score)+' '+str(self.team.posx)+' '+str(self.team.posy)+'\n'
|
||||||
|
|
||||||
|
|
||||||
def clean_terrain(self):
|
def clean_terrain(self):
|
||||||
"""Nettoie le terrain"""
|
"""Nettoie le terrain"""
|
||||||
items = self.canvas.find_all()
|
items = self.canvas.find_all()
|
||||||
@@ -211,28 +265,32 @@ class Gui:
|
|||||||
self.canvas.delete(items[-1])
|
self.canvas.delete(items[-1])
|
||||||
items = self.canvas.find_all()
|
items = self.canvas.find_all()
|
||||||
|
|
||||||
def draw_team(self, *event):
|
def draw_player(self, player, *event):
|
||||||
"""dessine les actions de toute l'équipe"""
|
"""dessine les actions de toute l'équipe"""
|
||||||
self.clean_terrain()
|
self.clean_terrain()
|
||||||
for line in self.file.content[2:]:
|
for line in self.file.content[2:]:
|
||||||
# forme type: joueur action points x y
|
# forme type: joueur action points x y
|
||||||
params = line.strip().split(' ')
|
params = line.strip().split(' ')
|
||||||
if params[1] == 'marque':
|
if params[0] == player or player == '*': # nom du joueur
|
||||||
self.canvas.create_oval(int(params[3])-12, int(params[4])-12, int(params[3])+12, int(params[4])+12, fill='green')
|
if 'tirs' in self.action_to_show:
|
||||||
else:
|
if params[1] == 'tm':
|
||||||
self.canvas.create_oval(int(params[3])-12, int(params[4])-12, int(params[3])+12, int(params[4])+12, fill='red')
|
self.canvas.create_image(int(params[3]), int(params[4]), image=self.tir_reussi, anchor='nw')
|
||||||
|
if params[1] == 'tr':
|
||||||
def draw_player(self, player):
|
self.canvas.create_image(int(params[3]), int(params[4]), image=self.tir_rate, anchor='nw')
|
||||||
"""dessine les actions d'un joueur"""
|
if 'lance' in self.action_to_show:
|
||||||
self.clean_terrain()
|
if params[1] == 'lfm':
|
||||||
for line in self.file.content[2:]:
|
self.canvas.create_image(int(params[3]), int(params[4]), image=self.lance_reussi, anchor='nw')
|
||||||
# forme type: joueur action points x y
|
if params[1] == 'lfr':
|
||||||
params = line.strip().split(' ')
|
self.canvas.create_image(int(params[3]), int(params[4]), image=self.lance_rate, anchor='nw')
|
||||||
if params[0] == player: # nom du joueur
|
if 'faute' in self.action_to_show and params[1] == 'f':
|
||||||
if params[1] == 'marque':
|
self.canvas.create_image(int(params[3]), int(params[4]), image=self.faute, anchor='nw')
|
||||||
self.canvas.create_oval(int(params[3])-12, int(params[4])-12, int(params[3])+12, int(params[4])+12, fill='green')
|
if 'rebond' in self.action_to_show:
|
||||||
else:
|
if params[1] == 'ro':
|
||||||
self.canvas.create_oval(int(params[3])-12, int(params[4])-12, int(params[3])+12, int(params[4])+12, fill='red')
|
self.canvas.create_image(int(params[3]), int(params[4]), image=self.rebond_off, anchor='nw')
|
||||||
|
if params[1] == 'rd':
|
||||||
|
self.canvas.create_image(int(params[3]), int(params[4]), image=self.rebond_def, anchor='nw')
|
||||||
|
if 'passe' in self.action_to_show and params[1] == 'pd':
|
||||||
|
self.canvas.create_image(int(params[3]), int(params[4]), image=self.passe_dec, anchor='nw')
|
||||||
|
|
||||||
def draw_terrain(self):
|
def draw_terrain(self):
|
||||||
"""dessinne les lignes du terrain"""
|
"""dessinne les lignes du terrain"""
|
||||||
|
|||||||
@@ -1,15 +1,26 @@
|
|||||||
arthur jl léandre louis alex
|
arthur jl léandre louis alex
|
||||||
|
|
||||||
arthur rate 3 449 301
|
arthur tr 3 449 301
|
||||||
léandre marque 2 186 323
|
léandre tm 2 186 323
|
||||||
arthur marque 2 963 332
|
arthur tm 2 963 332
|
||||||
arthur rate 3 849 349
|
arthur tr 3 849 349
|
||||||
arthur marque 3 392 233
|
arthur tm 3 392 233
|
||||||
jl marque 2 186 283
|
jl tm 2 186 283
|
||||||
alex marque 3 393 274
|
alex tm 3 393 274
|
||||||
arthur rate 3 359 210
|
arthur tr 3 359 210
|
||||||
arthur marque 3 416 212
|
arthur tm 3 416 212
|
||||||
jl rate 3 448 234
|
jl tr 3 448 234
|
||||||
alex rate 2 172 357
|
alex tr 2 172 357
|
||||||
alex marque 3 269 292
|
alex tm 3 269 292
|
||||||
louis marque 2 1043 277
|
louis tm 2 1043 277
|
||||||
|
arthur f 0 464 246
|
||||||
|
arthur f 0 295 431
|
||||||
|
léandre f 0 381 407
|
||||||
|
arthur tm 3 321 264
|
||||||
|
jl tr 0 340 188
|
||||||
|
jl f 0 218 302
|
||||||
|
jl lfm 1 290 205
|
||||||
|
arthur lfr 0 765 215
|
||||||
|
alex ro 0 776 228
|
||||||
|
alex rd 0 570 399
|
||||||
|
arthur pd 0 228 420
|
||||||
|
|||||||