Comment puis-je modifier une variable dans une définition? J'ai cherché sur Internet mais je n'ai pas pu trouver quelque chose qui m'aide. J'ai découvert que les variables globales pourraient aider mais je ne sais pas comment les employer et j'ai un autre problème mon code ne réagit même pas à mon "bouton d'espace". Voici mon code complet je sais qu'ils écrivent ne postent pas tout de votre code ur mais peut-être cela vous aidera parce que je ne comprends pas même ce qui est important et non. noob qui sait juste tkinter).Comment puis-je modifier une variable dans une définition
from pygame import *
import pygame as pygame
from tkinter import *
import tkinter as tk
from time import sleep
#---------------------------------------
HEIGHT = 500
WIDTH = 500
window = Tk()
window.title("Test")
canvas = Canvas(window, width=WIDTH, height=HEIGHT, bg="grey")
canvas.pack(expand=False)
#---------------------------------------
a = (5, 5)
b = (85, 85)
c = (415, 415)
d = (495, 495)
e = (5, 415)
f = (85, 495)
player = canvas.create_rectangle([a, b], tags="obj1Tag", fill = "red4")
finish = canvas.create_rectangle([c, d], tags="obj2Tag", fill = "green4")
arrow = canvas.create_rectangle([e, f], tags="obj3Tag", fill = "blue4")
#---------------------------------------
mainloopon = True
start = False
start2 = False
startwindow = True
pms = 0.015625
arrow_direction = ("None")
#---------------------------------------
def start(event):
start = True
print ("start")
canvas.bind('<space>', start)
#---------------------------------------
colors = {"red":"blue4",
"blue4":"yellow",
"yellow":"green",
"green":"red"}
def onObjectClick(event):
current_color = canvas.itemcget(arrow, "fill")
print (canvas.itemconfig(arrow, "fill"))
canvas.itemconfig(arrow, fill=colors[current_color])
canvas.tag_bind(arrow, '<ButtonPress-1>', onObjectClick)
#---------------------------------------
while mainloopon == True:
if startwindow == True:
window.update()
if start2 == True:
if canvas.itemconfig(arrow, "fill") == ('fill', '', '', '', 'blue4'):
arrow_direction = ("right")
if canvas.itemconfig(arrow, "fill") == ('fill', '', '', '', 'red'):
arrow_direction = ("left")
if canvas.itemconfig(arrow, "fill") == ('fill', '', '', '', 'yellow'):
arrow_direction = ("up")
if canvas.itemconfig(arrow, "fill") == ('fill', '', '', '', 'green'):
arrow_direction = ("down")
if start == True:
canvas.move(player, 0, [pms])
window.update()
#sleep(0.0001)
playerc = canvas.coords(player)
arrowc = canvas.coords(arrow)
if playerc == arrowc:
start = False
start2 = True
if arrow_direction == ("right"):
canvas.move(player, [pms], 0)
window.update()
#sleep(0.01)
playerc = canvas.coords(player)
finishc = canvas.coords(finish)
if playerc == finishc:
print ("Finished")
break
if arrow_direction == ("left"):
canvas.move(player, [-pms], 0)
window.update()
#sleep(0.01)
playerc = canvas.coords(player)
finishc = canvas.coords(finish)
if playerc == finishc:
print ("Finished")
break
if arrow_direction == ("up"):
canvas.move(player, 0, [-pms])
window.update()
#sleep(0.01)
playerc = canvas.coords(player)
finishc = canvas.coords(finish)
if playerc == finishc:
print ("Finished")
break
if arrow_direction == ("down"):
canvas.move(player, 0, [pms])
window.update()
#sleep(0.01)
playerc = canvas.coords(player)
finishc = canvas.coords(finish)
if playerc == finishc:
print ("Finished")
break
window.mainloop()
Edit:
WIDTH = 500
window = Tk()
window.title("Test")
canvas = Canvas(window, width=WIDTH, height=HEIGHT, bg="grey")
canvas.pack(expand=False)
#---------------------------------------
a = (5, 5)
b = (85, 85)
c = (415, 415)
d = (495, 495)
e = (5, 415)
f = (85, 495)
player = canvas.create_rectangle([a, b], tags="obj1Tag", fill = "red4")
finish = canvas.create_rectangle([c, d], tags="obj2Tag", fill = "green4")
arrow = canvas.create_rectangle([e, f], tags="obj3Tag", fill = "blue4")
#---------------------------------------
mainloopon = True
start = False
start2 = False
startwindow = True
pms = 0.015625
arrow_direction = ("None")
#---------------------------------------
def change_start(event):
global start
start = True
print (start)
canvas.bind('<space>', change_start)
#---------------------------------------
colors = {"red":"blue4",
"blue4":"yellow",
"yellow":"green",
"green":"red"}
def onObjectClick(event):
current_color = canvas.itemcget(arrow, "fill")
print (canvas.itemconfig(arrow, "fill"))
canvas.itemconfig(arrow, fill=colors[current_color])
canvas.tag_bind(arrow, '<ButtonPress-1>', onObjectClick)
#---------------------------------------
while mainloopon == True:
if startwindow == True:
window.update()
if start2 == True:
if canvas.itemconfig(arrow, "fill") == ('fill', '', '', '', 'blue4'):
arrow_direction = ("right")
if canvas.itemconfig(arrow, "fill") == ('fill', '', '', '', 'red'):
arrow_direction = ("left")
if canvas.itemconfig(arrow, "fill") == ('fill', '', '', '', 'yellow'):
arrow_direction = ("up")
if canvas.itemconfig(arrow, "fill") == ('fill', '', '', '', 'green'):
arrow_direction = ("down")
if start == True:
canvas.move(player, 0, [pms])
#window.update()
#sleep(0.0001)
playerc = canvas.coords(player)
arrowc = canvas.coords(arrow)
if playerc == arrowc:
start = False
start2 = True
if arrow_direction == ("right"):
canvas.move(player, [pms], 0)
#window.update()
#sleep(0.01)
playerc = canvas.coords(player)
finishc = canvas.coords(finish)
if playerc == finishc:
print ("Finished")
break
if arrow_direction == ("left"):
canvas.move(player, [-pms], 0)
#window.update()
#sleep(0.01)
playerc = canvas.coords(player)
finishc = canvas.coords(finish)
if playerc == finishc:
print ("Finished")
break
if arrow_direction == ("up"):
canvas.move(player, 0, [-pms])
#window.update()
#sleep(0.01)
playerc = canvas.coords(player)
finishc = canvas.coords(finish)
if playerc == finishc:
print ("Finished")
break
if arrow_direction == ("down"):
canvas.move(player, 0, [pms])
#window.update()
#sleep(0.01)
playerc = canvas.coords(player)
finishc = canvas.coords(finish)
if playerc == finishc:
print ("Finished")
break
window.mainloop()
Vous devriez jeter un oeil à [demander] et [MCVE] – pvg
Ah et comment puis-je faire un bloc de code sans ajouter 4 espaces dans chaque ligne? – HelpMe
Pour le bloc de code, vous pouvez coller votre code puis surligner le code, puis appuyer sur le bouton qui ressemble '{}' ou pres 'ctrl + k' cela va tout déplacer dans un bloc de code. –