Miért nem működik a Python programom?
Röviden: a program grafikusan megjelenit két kort (azaz ket bolygót), ezeket gombbal lehet mozgatni. Eddig oké. De amint beteszem az első függvenybe, hogy számoljon távolságot minden mozdulasnal, megakad és hibaként a következő függvenydefiniciót dobja, amivel addig nem volt gond, és én a kapcsolatot se látom.
A program:
from Tkinter import *
from math import sqrt
def mozog (ab,cd):
- global x1,y1,x2,y2,bolygo,mf,mm
- if bolygo == 0:
-- x1,y1=x1+ab,y1+cd
-- can1.coords(oval1,x1,y1,x1+50,y1+50)
- elif bolygo == 1:
-- x2,y2=x2+ab,y2+cd
-- can1.coords(oval2,x2,y2,x2+30,y2+30)
#HA EZT BEIROM, A KOVETKEZO FUGGVENYDEFINICIORA AZT IRJA, HOGY INVALID. NEM ÉRTEM....
- t = sqrt((x2-x1)**2 + (y2-y1)**2)
- tav.configure(text="A ket bolygo tavolsaga: " + str(t)
#EZZEL A GRAVITACIOS EROT SZAMOLNAM, DE EZ SEM JÓ, SZINTEN INVALID
# g = 6,67e-11 * (mf*mm/t**2)
# grav.configure(text="A gravitacios ero: " +str(g) + " Newton"
def foldvalaszto():
- global bolygo
- bolygo = 0
def marsvalaszto():
- global bolygo
- bolygo = 1
def mozdit_bal():
- mozog(-10,0)
def mozdit_jobb():
- mozog(10,0)
def mozdit_fel():
- mozog(0,-10)
def mozdit_le():
- mozog(0,10)
#--------Foprogram-------
x1,y1=50,150 #koordinatak Fold
x2,y2 = 260,180 #koordinatak Mars
bolygo = 0 #0=Fold, 1=Mars
mf,mm=5.972e24,6.39e23 #bolygok tomege (kg)
window=Tk()
window.title("Bolygos jatek Tkinter-rel")
Label(window, text='Fold tomege: ' +str(mf) + ' kg').grid(sticky=W)
Label(window, text='Mars tomege: ' +str(mm) + ' kg').grid(sticky=W)
can1=Canvas(window,height=300,width=500,bg='dark grey')
oval1=can1.create_oval(x1,y1,x1+50,y1+50,width=2,fill='blue')
oval2=can1.create_oval(x2,y2,x2+30,y2+30,width=2,fill='orange')
can1.grid(row=3,column=0,rowspan=5,padx=10,pady=10)
Button(window, text='Kilep',command=window.quit).grid(row=1,column=1,columnspan=2)
Button(window, text='Fold',command=foldvalaszto).grid(row=3,column=1)
Button(window, text='Mars',command=marsvalaszto).grid(row=3,column=2)
Button(window, text='Balra',command=mozdit_bal).grid(row=4,column=1,columnspan=2)
Button(window, text='Jobbra',command=mozdit_jobb).grid(row=5,column=1,columnspan=2)
Button(window, text='Fel',command=mozdit_fel).grid(row=6,column=1,columnspan=2)
Button(window, text='Le',command=mozdit_le).grid(row=7,column=1,columnspan=2)
tav = Label(window)
tav.grid(row=8)
grav = Label(window)
grav.grid(row=9)
window.mainloop()
- tav.configure(text="A ket bolygo tavolsaga: " + str(t)
Hiányzik a végéről egy zárójel.
grav.configure(text="A gravitacios ero: " +str(g) + " Newton"
Szintén hiányzik a végéről egy zárójel.
És tényleg...
ez most gáz, hogy ezt nem vettem észre...
nagyon köszönöm! ;)
Helyes kis program, de legalább két dolgot igazíts benne, egyik se jelenthet nehézséget:
1. Ha a két bolygó távolsága 0, a program hibára fut -- bár igaz, ha ez neadj'isten a valóságban is bekövetkezne, egy kis nullával osztás legyen a legnagyobb bajunk...
2. A kirajzolás megoldása kissé furcsa, az tűnik logikusabbnak, hogy a köröknek a középpontja essen a megadott koordinátákra, ne pedig a befoglaló négyzetük (vagy mi) bal felső sarka.
Ezenkívül, noha egyáltalán nem hiba, de érdekes a koordináták változóneveinek választása. Ha a két bolygót a 0 és 1 érték jelöli, szerintem tisztább ügy lenne x0,y0 és x1,y1 változók használata a mostani x1,y1 és x2,y2 helyett.
Koszonom, segitettel!!!!
még nagyon tanulo fazisban vagyok! ;)
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!