簡體   English   中英

PyGame 游戲在幕后工作,但圖像不會移動

[英]Behind the scenes PyGame game works but image won't move

我正在嘗試制作自己的游戲。 之前,汽車圖像會很好地移動,但隨后將我的循環置於“def”事物中,以便在汽車撞牆和獲勝時重新開始游戲。 現在,一切正常,只是游戲似乎沒有更新到屏幕上,因為汽車不會移動。 游戲似乎仍然在屏幕后面運行,因為當我在沒有看到它移動的情況下發生車禍時,它會播放碰撞片段。 PyGame 沒有說 day 是一個錯誤。 這對我來說有點新鮮,我真的不明白是什么問題。 這是我的代碼的一部分:

#Setting and variables
display_width = 1570
display_height = 450
car_width = 98
car_height = 66
clock = pygame.time.Clock()
wn = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('My own game')
finish_line = pygame.image.load('myOwnFinishreal.png')

carImg = pygame.image.load('myOwnRGame.png')
carY = 192
carX = 10
Xchange = 0
Ychange = 0
Xfin = 1480
Yfin = 0
carY = 192
carX = 10

#racecar
def car(x,y):
    wn.blit(carImg, (carX, carY))

#finish line
def finish():
    wn.blit(finish_line, (Xfin, Yfin))
#Crashing
def textObjects(text, font):
    textSurface = font.render(text, True, red)
    return textSurface, textSurface.get_rect()

def displayMessage(text):
    textFont1 = pygame.font.Font('freesansbold.ttf', 32)
    textSurf, textRect = textObjects(text, textFont1)
    textRect.center = ((display_width/2),(display_height/2))
    while True:
        wn.blit(textSurf, textRect)

        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_x:
                    pygame.quit()
                if event.key == pygame.K_SPACE:
                    gameLoop()
        pygame.display.update()

def crash():
    displayMessage('You crashed!Press X to quit, _SPACE_ to restart!')
def win():
    displayMessage('Bravo! You are the best car runner! Press X to quit _SPACE_ to restart.')

#Game loop
def gameLoop():
    carY = 192
    carX = 10
    Xchange = 0
    Ychange = 0

    alive = True
    losing = True
    while alive and losing:
        carX += Xchange
        carY += Ychange
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_x:
                    pygame.quit()
                if event.key == pygame.K_UP:
                    Xchange = 0
                    Ychange = 0
                    Xchange = 2.5

                elif event.key == pygame.K_LEFT:
                    Xchange = 0
                    Ychange = 0
                    time.sleep(0.85)
                    Ychange = -3

                elif event.key == pygame.K_RIGHT:
                    Xchange = 0
                    Ychange = 0
                    time.sleep(0.85)
                    Ychange = 3
                elif event.key == pygame.K_DOWN:
                    Xchange = 0
                    Ychange = 0
                    time.sleep(0.85)
                    Xchange = -3
        if carY <= -15 or carY >= display_height - 15:
            Xchange = 0
            Ychange = 0
            crash()

        if carX >= display_width:
            Xchange = 0
            Ychange = 0
            win()
        if carX <= 0:
            carX = 10

            #350 250 120 30

        wn.fill(grey)
        finish()
        carX += Xchange
        carY += Ychange
        car(carX, carY)
        pygame.display.update()
        clock.tick(60)

    pygame.quit()
gameLoop()

期待您的幫助和出價謝謝!

您必須在 function car中使用 arguments xy而不是carXcarY

def car(x,y):
    wn.blit(carImg, (x, y))

暫無
暫無

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

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