Hogy tudok cikk-cakk mozgast kesziteni Pythonba? Itt a link meddig jutottam el.
Nem tudok pastebines linket adni mert nem engedi az oldal de itt a kod :
from tkinter import *
def move():
global x1, y1, dx, dy, flag, n, z
x1, y1 = x1 + dx, y1 + dy
if x1 > 360:
x1, dx, dy = 360, -15, 5
can1.itemconfig(oval1, fill = "purple")
if x1 < 10:
x1, dx, dy = 10, 15, 5
can1.itemconfig(oval1, fill = "red")
if y1 == 360:
x1, dx, dy = 360, -15, -5
can1.itemconfig(oval1, fill = "green")
can1.coords(oval1, x1, y1, x1 + 30, y1 + 30)
if flag > 0:
abl1.after(50, move)
def stop():
global flag
flag = 0
def start():
global flag
if flag == 0:
flag = 1
move()
###
x1, y1 = 10, 10
dx, dy = 15, 5
n = 0
flag = 0
###
abl1 = Tk()
abl1.title("Animációs gyakorlat Tkinter-rel")
can1 = Canvas(abl1, bg = "dark grey", height = 400, width = 400)
can1.pack(side=LEFT)
oval1 = can1.create_oval(x1, y1, x1 + 30, y1 + 30, fill = "white")
but1 = Button(abl1, text = "Quit", command = abl1.destroy).pack(side=BOTTOM, padx = 3, pady = 5)
but2 = Button(abl1, text = "Start", command = start).pack(padx = 3, pady = 5)
but3 = Button(abl1, text = "Stop", command = stop).pack(padx = 3, pady = 5)
abl1.mainloop()
Valami ilyesmi
Ott az ablak es a labdanak el kell indulnia lefele es a falrol visszapattanva megin lefele es ha elerte az aljat ugyan ugy csak vosszafele
Mintha egy biliard asztalon elloned a golyot
Ez nem egészen ugyanaz. Amiről te beszélsz, az már fizikai szimuláció.
Ha csak a cikk-cakk mozgás kell, annak a pályáját megadja az a függvény, amit írtam. A "fogak" sűrűségét az x együtthatója határozza meg, az eltolást a végén kivont szám, a többi pedig a fogak magasságát.
Mivel a mozgás az idő függvénye, ezért itt az x az adott időpont. Vagyis x helyére az időt helyettesítve megkapható az aktuális elhelyezkedés.
A biliárd asztalon történő mozgás azért komplikáltabb. Ott nagyon sok minden számít.
Én csak azt nem értem, hogy
if y1 == 360:
x1, dx, dy = 360, -15, -5
can1.itemconfig(oval1, fill = "green")
itt, ha y1 volt a túl nagy (érdemesebb >=-t vizsgálni, mert nem lesz mindig egész számú többszörös), akkor miért az x1-t meg a dx-t cseszegeted.
Ugyanígy kérdés, hogy ha x1-re megoldottad a mindkét irányú ütközést, akkor y1-re miért nem oldottad meg, hogy a másik oldalon is kezeljed.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!