簡體   English   中英

Pygame 總是在 python 崩潰

[英]Pygame always crashing in python

在我運行我的 pygame 代碼后,它一直運行到 horizontel 框出現在屏幕上,但之后它停止了,當我們嘗試越過它時,它顯示錯誤 Python 沒有響應。 這是我的代碼:

import pygame
import sys
import random
from time import sleep
pygame.init()
pygame.display.init()
root = pygame.display.set_mode((600, 500))
pygame.display.set_caption('Game attempt')
clock = pygame.time.Clock()
body_horizontel = pygame.image.load(r"snake\body_horizontal.png")

# variables
x_coordinate = random.randint(0, 40)
y_coordinate = random.randint(0, 40)
bg = pygame.image.load(r"bg.jpg")
apple = pygame.image.load(r"apple.png")
body_horizontel_location_x = 260
body_horizontel_location_y = 230
root.blit(bg, (0, 0))
root.blit(apple, (x_coordinate * 15, y_coordinate * 12.5))
while True:
    pygame.event.pump()
    root.blit(body_horizontel, (body_horizontel_location_x, body_horizontel_location_y))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    keys = pygame.key.get_pressed()
    if keys[pygame.K_UP]:
        run = 0
        while run < 4:
            if body_horizontel_location_y >= 40:
                root.blit(bg, (0, 0))
                root.blit(apple, (x_coordinate * 15, y_coordinate * 12.5))
                body_horizontel_location_y -= 40
                root.blit(body_horizontel, (body_horizontel_location_x, body_horizontel_location_y))
                sleep(0.01)
                pygame.display.update()
                run += 1

    root.blit(apple, (x_coordinate * 15, y_coordinate * 12.5))
    pygame.display.update()
    root.blit(bg, (0, 0))
    clock.tick(100)

我有 if 子句,因此如果框不在屏幕上方 go 並且會導致問題,因為當我嘗試通過單擊向上箭頭按鈕使其在屏幕上方 go 屏幕崩潰時。 我什至嘗試用 pygame.time.delay() 或 clock.tick() 改變睡眠,但它們都不起作用。 錯誤信息

嗨,在你的 while 循環中,它會繼續運行,直到 run 大於或等於 4。如果你的 if 語句為真,run 變量只會加一個,所以如果它為假,你的程序將永遠停留在 while 循環中,因為 run 永遠不會大於4

改用它作為您的 if 語句

if body_horizontel_location_y >= 40:
            root.blit(bg, (0, 0))
            root.blit(apple, (x_coordinate * 15, y_coordinate * 12.5))
            body_horizontel_location_y -= 40
            root.blit(body_horizontel, (body_horizontel_location_x, body_horizontel_location_y))
            sleep(0.01)
            pygame.display.update()
run += 1

如您所見,我從 if 語句中取出了 run += 1

暫無
暫無

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

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