我正在創建一個遊戲:canon-man。您必須觸摸目標,指定角度和速度。這場比賽是在3個相分離:不能通過tkinter類型的'float'錯誤的非int類型乘以序列條目
1 - 您可以選擇「玩」,「選項」或「退出」
2-您選擇難度「易」,「中等」或「硬」
3-遊戲出現,您可以選擇參數。
我的遊戲分爲兩類,第一類(佳能)處理第一和第二階段,第二階段(曼)處理第三階段。
我可以訪問前兩個階段,但是當我點擊「易」,「中等」或「硬」 我得到這個錯誤:
「不能按類型的非INT「浮動繁衍序列'「
和第三窗口出現類似這樣(的Tkinter的entrys被不在這裏):
這裏是我的類人(的一部分):
def base(self):
self.height_c = 300
self.width_c = 700
self.choix = 0
self.lang = 0
self.flag = 0
bool(self.flag)
self.t = 0
self.x = 130
self.y = 225
self.root = Tk()
self.root.title("ShotDown")
self.can = Canvas(self.root, width=self.width_c, height=self.height_c)
self.can.grid(row=0, column=4, rowspan=4)
self.cible = PhotoImage(file="\image\\cible.png")
self.canon = PhotoImage(file="\image\\canon.png")
self.canontete = PhotoImage(file="\image\\canontete.png")
self.photo = PhotoImage(file="\image\\paysage_700.png")
self.hc45 = PhotoImage(file="\image\hc45.png")
self.Play = PhotoImage(file="\image\\Play.gif")
self.angle = Entry(self.root, textvariable="hey")
# initialisation:
#
# choix du fond
if self.lang == "0000":
self.photo = PhotoImage(file="\image\\paysage_700.png")
elif self.lang == "0001":
self.photo = PhotoImage(file="\image\\mer.png")
elif self.lang == "0010":
self.photo = PhotoImage(file="\image\\interstellar.png")
self.y_cible = random.randint(60, 240)
self.can.create_image(0, 0, anchor=NW, image=self.photo)
self.image = self.can.create_image(-50, -50, image=self.hc45)
# Creation des differents boutons
#
bou1 = Button(self.root, text='Quitter', width=8, command=self.root.quit)
bou1.grid(row=0, column=2)
bou2 = Button(self.root, text='Demarrer', width=8, command=Man.start_it(self))
bou2.grid(row=0, column=3)
bou3 = Button(self.root, text='Arreter', width=8, command=Man.stop_it)
# bou3.grid(row=2, column=1)
New_angle = StringVar()
New_angle.set("Saisir Nouvel Angle")
text_angle = Label(self.root, text="Angle :")
text_angle.grid(row=1, column=2)
self.angle = Entry(self.root, textvariable=New_angle)
self.angle.grid(row=1, column=3)
New_vitesse = StringVar()
New_vitesse.set("Saisir Nouvelle Vitesse")
text_vitesse = Label(self.root, text="Vitesse :")
self.in_vitesse = Entry(self.root, textvariable=New_vitesse)
text_vitesse.grid(row=2, column=2)
self.in_vitesse.grid(row=2, column=3)
bou_tir = Button(self.root, text='Tirer', width=8, command=Man.start_it(self))
bou_tir.grid(row=0, column=3)
if self.flag == 0:
self.base = self.can.create_image(50, 260, image=self.canontete)
self.can.create_image(self.width_c - 50, self.y_cible, image=self.cible)
# demarrage de la boucle principale
#
self.root.mainloop()
如果你不明白的東西,隨時問^^。
謝謝。
編輯:
@calico_「 - 沒有看到你所有的代碼」。對不起,我沒有表現出其中的錯誤是:
self.can.update()
b = float(self.angle.get() * pi/180)
Vo = float(self.in_vitesse.get())
self.t += 0.025
self.x += (Vo * cos(b) * self.t)
self.y -= ((-0.5 * 9.81 * (self.t ** 2)) + (Vo * sin(b) * self.t))
print(self.x, self.y)
該代碼中有幾個地方,你乘以兩個變量,你知道哪個特定的行導致異常?例如,如果'self.angle.get()'返回一個序列(可能是無意的),你不能用'pi'來乘它,因爲'pi'可能是'float'。 –