注 - 這個遊戲是使用pygame的Python的 - 我的蛇遊戲中的錯誤,我想不通
我有此蛇遊戲和除了一件事一切工作完全製造。 有時,當蛇吃蘋果時,蘋果不會重新產卵。我認爲這可能發生在蘋果在蛇內產卵時,但我寫了一些代碼來檢查蘋果是否會在蛇中產卵,如果是這樣,請選擇不同的位置。也許我做錯了?!
注 - 這個遊戲是使用pygame的Python的 - 我的蛇遊戲中的錯誤,我想不通
我有此蛇遊戲和除了一件事一切工作完全製造。 有時,當蛇吃蘋果時,蘋果不會重新產卵。我認爲這可能發生在蘋果在蛇內產卵時,但我寫了一些代碼來檢查蘋果是否會在蛇中產卵,如果是這樣,請選擇不同的位置。也許我做錯了?!
該錯誤發生在get_food_position()函數的food.py源代碼文件中。具體有以下行導致你的錯誤:
self.apple_pos = (random.randint(self.WIDTH-self.WIDTH, self.WIDTH), random.randint(self.HEIGHT-self.HEIGHT, self.HEIGHT))
當你觀察蘋果不會重新產卵,那是因爲你設置的元組self.apple_pos是你的可視區域之外。你必須記住,蘋果有高度和寬度,所以它不能被繪製在你的可視區域的極端。您可以通過強制設置self.apple_pos = (1280,720)
,然後再次將其設置爲(1260,700)
來證明這一點。
以下修正你的代碼解決了這個問題:
self.apple_pos = (random.randint(0, self.WIDTH-20), random.randint(0, self.HEIGHT-20))
我選擇了一個神奇的數字20,因爲你的蘋果似乎有面積20×20像素。
你會注意到在(0,0)
處繪製蘋果沒有這個問題,因爲蘋果是由它自己的(0,0)
座標放置的,這是它的左上角。
昨晚我實際上已經想到了我自己,但也非常感謝您的關注! :) – Tizer1000
你可以使用調試器,並在蘋果被吃掉時停下來,然後按照代碼看看爲什麼沒有蘋果重新生成。 – Trilarion
我不知道如何去使用調試器,如果有人在代碼中發現問題會更好,但是謝謝! :) – Tizer1000
我真的可以推薦學習如何調試。有了許多IDE,它非常簡單,它將在未來幫助你解決很多問題。 – Trilarion