.move + events deplacement TKINTER python 3.7
Anoikis
-
Anoikis -
Anoikis -
Bonjour,
Je suis actuellement en terminale S et je suis un novice du code, cependant j'ai un projet a realiser pour mon bac cette annee. Nous avons decide de faire un tetris avec tkinter.
On s'est dit que de faire un tableau avec des 0 et des 1 etait pas mal pour faire en sorte que les collisions et les suppressions de lignes se fassent sans probleme.
Toutefois je bloque sur un point assez bete finalement. (interdiction d'utiliser pygame)
On voudrait donner à un objet (carré / forme tetris) un mouvement vers le bas, jusqu'a la rien d'extraordinaire la commande canevas.move est là maiiiis !! une fois cela realise nous avons besoin aussi de pouvoir le faire deplacer sur la droite, la gauche et le bas. Sauf qu'il y a un probleme je n'arrive pas à fusionner les pixels de .move par tkinter avec le tableau de 0 et 1 et par dessus cela impossible de faire bouger le carre pendant sa descente sans qu'il se remette à sa position initiale (j'ai essaye de renvoyer les coords dans la fonction)
Si qql a une solution qui n'est pas forcemment tkinter je suis preneur xD
Je suis actuellement en terminale S et je suis un novice du code, cependant j'ai un projet a realiser pour mon bac cette annee. Nous avons decide de faire un tetris avec tkinter.
On s'est dit que de faire un tableau avec des 0 et des 1 etait pas mal pour faire en sorte que les collisions et les suppressions de lignes se fassent sans probleme.
Toutefois je bloque sur un point assez bete finalement. (interdiction d'utiliser pygame)
On voudrait donner à un objet (carré / forme tetris) un mouvement vers le bas, jusqu'a la rien d'extraordinaire la commande canevas.move est là maiiiis !! une fois cela realise nous avons besoin aussi de pouvoir le faire deplacer sur la droite, la gauche et le bas. Sauf qu'il y a un probleme je n'arrive pas à fusionner les pixels de .move par tkinter avec le tableau de 0 et 1 et par dessus cela impossible de faire bouger le carre pendant sa descente sans qu'il se remette à sa position initiale (j'ai essaye de renvoyer les coords dans la fonction)
Si qql a une solution qui n'est pas forcemment tkinter je suis preneur xD
Configuration: Windows / Chrome 79.0.3945.130
A voir également:
- .move + events deplacement TKINTER python 3.7
- Citizen code python avis - Accueil - Outils
- Historique déplacement google - Guide
- Move mouse - Télécharger - Utilitaires
- Python pix ✓ - Forum Python
- Mot secret python pix ✓ - Forum Python
desole je t'envoie mon code. Bon c'est pas minimaliste mais pour comprendre comment j'ai fais je t'envoie tout.
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
from tkinter import *
from time import sleep
import threading
def KeyBoard(event):
global xc,yc,LC
NewL,NewC=xc,yc
Key = event.keysym
if Key == 'Down':
NewL,NewC=xc,yc+1
if Key == 'Left':
NewL,NewC=xc-1,yc
if Key == 'Right':
NewL,NewC=xc+1,yc
Verification(NewL,NewC)
def Verification(NewL,NewC):
global xc,yc,LC
if LC[NewL][NewC]==0:
LC[xc][yc]=0
xc,yc=NewL,NewC
LC[xc][yc]=1
MyCanvas.coords(Piece,xc*20,yc*20 , xc*20 +20, yc*20 +20)
def chutelibre():
global xc,yc,LC
NewL,NewC=xc,yc
while temps<20:
b=b+1
if b>5000:
yc=yc+1
print(xc,yc)
MyCanvas.coords(Piece,xc*20,yc*20 , xc*20 +20, yc*20 +20)
break
def comptage():
global b
def chuteobjet():
global chutelibrecoord,yc,LC,NewL,NewC
NewL,NewC=chutelibrecoord,chutelibrecoord2
if MyCanvas.coords(Piece)[3]>675 or MyCanvas.coords(Piece)[3]<0 :
chutelibrecoord=0
MyCanvas.move(Piece,chutelibrecoord2,chutelibrecoord)
print(LC)
MyWindow.after(20,chuteobjet)
Verification(NewL,NewC)
###############################################################################
MyWindow = Tk()
MyWindow.title('Tetris')
###############################################################################
temps=0
b=0
t = threading.Thread(target=comptage)
chutelibrecoord=7
chutelibrecoord2=0
xc = 7
yc = 0
a=0
###############################################################################
MyCanvas = Canvas(MyWindow, width = 300, height =700, bg ='blue')
Piece = MyCanvas.create_rectangle(xc*20,yc*20,xc*20+20,yc*20+20,width=0,fill='red')
MyCanvas.focus_set()
MyCanvas.bind('<Key>',KeyBoard,)
MyCanvas.pack(padx =50, pady =50)
Button(MyWindow, text ='Exit', command = MyWindow.destroy).pack(side=LEFT,padx=5,pady=5)
#20 zero de largeur / 14 en longueur
LC=[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
print(LC)
i=0
j=0
while j < 15:
while i<35:
if LC[j][i]==1:
MyCanvas.create_rectangle(j*20,i*20,j*20+20,i*20+20,fill='black')
i=i+1
i=0
j=j+1
comptage()
MyWindow.mainloop()
Je ne vois pas à quoi sert le thread dans ton code
le thread était seulement un test pr faire une pause au prog
mais dcp j’ai trouvé comment faire merci qd meme