簡體   English   中英

python游戲中的堆棧溢出

[英]Stack overflow in python game

我在使用Tkinter制作的游戲中遇到麻煩。 射擊約50次后,程序崩潰並顯示以下錯誤:致命Python錯誤:無法從堆棧溢出中恢復。

我不確定是什么原因造成的,但是我在代碼的這一部分中知道了這一點。

    self.p1_shot_out = False

    def p1_shoot(event):

        if self.p1_shot_out == True:
            self.canvas.delete(self.laser_p1)

        self.laser_p1 = self.canvas.create_image(50, self.y_p1 +50, image=self.p1_laser)
        self.x_p1_laser = 50
        self.p1_shot_out = True

        time.sleep(.009)
        p1_shoot_move()

    def p1_shoot_move():

        if self.x_p1_laser <= 900:

            self.canvas.move(self.laser_p1,5,0)
            self.x_p1_laser += 5 
            self.canvas.update()
            time.sleep(.009)
            p1_shoot_move()

這正是按要求在終端上打印的內容:

致命的Python錯誤:無法從堆棧溢出中恢復。

當前線程0x00001d54(最新調用優先):文件“ D:\\ Python34 \\ lib \\ tkinter__init __。py”,更新文件中的第963行“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py” ,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第148行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\”中的第150行Controller.py”,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\”中的150行src \\ project \\ Controller.py“,位於p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,位於p1_shoot_move文件的150行,“ C:\\ Users \\ Caleb \\ workspace” \\ CS 108 \\ src \\ project \\ Controller.py“,第1行p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,第150行在p1_shoot_move文件“ C:\\ Users”中\\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controll”中的第150行 er.py”,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\”中的150行src \\ project \\ Controller.py“,位於p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,位於p1_shoot_move文件的150行,“ C:\\ Users \\ Caleb \\ workspace” \\ CS 108 \\ src \\ project \\ Controller.py“,第1行p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,第150行在p1_shoot_move文件“ C:\\ Users”中\\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的第150行,” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot文件”中的第140行D:\\ Python34 \\ lib \\ tkinter__init __。py“, 調用文件“ D:\\ Python34 \\ lib \\ tkinter__init __。py”的行1487,更新文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第148行,p1_shoot_move文件“ C:\\ Users \\ Caleb”中的第150行 \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的第150行,” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件” C:“中的150行\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move中的第150行文件” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move中的150行文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,p1_shoot_move行150,文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,在p1_shoot文件線140 “d:\\ Python34 \\ lib中\\ tkinter__init __ PY”,線1487在呼叫文件“d:\\ Python34 \\ lib中\\ tkinter__init __ PY”,在更新文件中的行963的“C:\\用戶\\迦勒\\工作區\\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,p1_shoot_move文件“ C:\\ Users”的第150行\\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,第150行在p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中,行150 在p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中,行p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py” “,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project”中的150行\\ Controller.py”,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,“ C:\\ Users \\ Caleb \\ workspace \\ CS 108”的文件p1_shoot_move \\ src \\ project \\ Controller.py“,位於p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,位於p1_shoot_move文件“ C:\\ Users \\ Caleb \\”的第150行工作空間\\ CS 108 \\ src \\ project \\ Controller.py”,第1行p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,第150行p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.p”中的第150行 y”,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\”中的150行project \\ Controller.py”,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS”中的150行108 \\ src \\ project \\ Controller.py“,第1行p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,第150行在p1_shoot_move文件“ C:\\ Users \\ Caleb”中\\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的第150行,” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件” C:“中的150行\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,行p1_shoot_move文件” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,行p1_shoot_140文件“ D:\\ Python34 \\ lib \\ tkinter__init __。py”, 調用中的第1487行文件“ D:\\ Python34 \\ lib \\ tkinter__init __。py”,更新文件“ C:\\ Users \\ Caleb \\ wor中的第963行” kspace \\ CS 108 \\ src \\ project \\ Controller.py”,p1_shoot_move文件中的第148行“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,p1_shoot_move文件“ C:\\”中的第150行Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的第150行” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的150行“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,行p1_shoot_move文件中的第150行“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,行p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller”中的第150行。 py”,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\”中的150行project \\ Controller.py”,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Use”中的第150行 rs \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的第150行” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的150行“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,行p1_shoot_move文件中的第150行“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,行p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的150,p1_shoot文件“ D:\\ Python34 \\ lib \\ tkinter__init __。py”中的行140, 調用文件“ 1487中的行” D:\\ Python34 \\ lib \\ tkinter__init __。py“,更新文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第963行,p1_shoot_move文件“ C:\\ Users \\”中的第148行Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的第150行,” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件” C“中的150行:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行, p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller”中的150行.py“,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src”中的150行\\ project \\ Controller.py“,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\”中的150行CS 108的\\ src \\項目\\ Controller.py”,在p1_shoot文件行140 “d:” 呼叫文件,行1487 “d \\ Python34 \\ LIB \\ tkinter__init __ PY:\\ Python34 \\ LIB \\ tkinter__init __ PY”,線路963。在更新文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中,p1_shoot_move文件中的第148行“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py” “,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspa”中的第150行 ce \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的第150行,” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件,” C:\\“中的150行Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的第150行” C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py“,p1_shoot_move文件中的150行“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,行p1_shoot_move文件中的第150行“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”,行p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller”中的第150行。 py”,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\ project \\ Controller.py”中的第150行,p1_shoot_move文件“ C:\\ Users \\ Caleb \\ workspace \\ CS 108 \\ src \\”中的150行project \\ Controller.py“,第1行p1_shoot_move ...

任何幫助表示贊賞,謝謝!

好的,這似乎是某人正在上Coursera Interactive python課程,因此他們的代碼未在正常的解釋器中運行(因此缺少遞歸限制異常)。

問題在這里:

   if self.x_p1_laser <= 900:
       self.canvas.move(self.laser_p1,5,0)
       self.x_p1_laser += 5 
       self.canvas.update()
       time.sleep(.009)
       p1_shoot_move() # Potential infinite self-recusion

重做一個循環

while self.x_p1_laser <= 900:
   self.canvas.move(self.laser_p1,5,0)
   self.x_p1_laser += 5 
   self.canvas.update()
   time.sleep(.009)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM