我如何使用pygame进行秒/毫秒的for循环?

时间:2019-04-30 23:48:55

标签: python python-3.x pygame

我正在尝试制作蛇游戏,但让蛇正确移动有些麻烦。当我运行此代码时,他的确跨过屏幕。但是我无法显示更新每个{}的内容。

我想知道是否有办法设置这样的for循环:

for seconds in { idk}:
    pygame.display.update()
    self.x += self.speed

import pygame
import time
pygame.init()

## creates window
win = pygame.display.set_mode((1000, 1000))
## gives titale to window
pygame.display.set_caption("Snake attempt")

class Character():
    def __init__(self, height= 40, width = 40,x = 50,y= 50,speed = 20):
            self.height = height
        self.width = width
        self.x = x
        self.y = y
        self.speed = 20
    def create(self):
    ## rect(draw on, ( colors) (pos.x , pos.y . width, height))
        pygame.draw.rect(win, (255,0, 0) , (self.x, self.y, 
self.width, self.height))
        pygame.display.update()
    def movement(self):
        self.x += self.speed
        pygame.display.update()


game_on = True
game_off = False

player = Character()

while game_on:
    pygame.time.delay(100)

## gives all events that happen while Game_on = True

        for event in pygame.event.get():

        if event.type == pygame.QUIT:
            pygame.quit()

## call on sys.exit()Caracter class         
    player.create()
    player.movement()

基本上,我只想让播放器每隔几秒钟在屏幕上移动那么多空间。每次都刷新显示

1 个答案:

答案 0 :(得分:1)

您已经有了一个非常好的延迟100ms的事件循环。 不要创建任何其他延迟循环。

这每秒运行十次:

    player.movement()

无论您想产生什么速度或行为, 应该在该方法内发生。 您将看到行为随着时间的推移而演变,这是由于 该方法被每秒重复调用十次。

正如Furas所指出的那样,不需要.update() 在create方法中,最好将其推迟到移动完成。

请注意,在100ms的屏幕上可见的位置是上一个位置, 在前进x之前。