Python randint 计时器
Python timer on randint
如果我有这个代码:
r = randint(0, 255)
g = randint(0, 255)
b = randint(0, 255)
screen.fill((r, g, b))
如何设置让它每隔 10 秒选择一个随机数?
有许多不同的方法来解决这个问题。 :)
一种非常简单、快速但肮脏的方法是在主游戏循环中暂停游戏(即设置延迟)一段时间。您可以使用 PyGames pygame.time.delay()
函数:
#import pygame and randint function from random module
import pygame
from random import randint
pygame.init()
screen = pygame.display.set_mode((800,800)) #create screen
while True:
#get events from the event queue
for ev in pygame.event.get():
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
pygame.quit()
exit()
#create random variables r, g and b
r = randint(0, 255)
g = randint(0, 255)
b = randint(0, 255)
#fill screen
screen.fill((r, g, b))
#update whole screen
pygame.display.flip()
#set timout for 500ms (i.e. pause game for 500ms)
pygame.time.delay(500)
这种方法的问题是,您无法获得任何事件并在游戏的时间量(例如 500 毫秒)内做一些事情暂停.
为了避免这个问题,您可以创建您自己的事件,它每隔给定的毫秒数就会出现在事件队列中。您可以使用 pygame.time.set_timer()
创建一个事件:
import pygame
from random import randint
pygame.init()
#create a new event id called event_500ms
event_500ms = pygame.USEREVENT + 1
#set timer event to appear on the event queue every 500 number of milliseconds
pygame.time.set_timer(event_500ms, 500)
screen = pygame.display.set_mode((800,800))
while True:
#get events from the event queue
for ev in pygame.event.get():
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
pygame.quit()
exit()
#check for event_500ms event
if ev.type == event_500ms:
r = randint(0, 255)
g = randint(0, 255)
b = randint(0, 255)
screen.fill((r, g, b))
pygame.display.flip()
希望对您有所帮助:)
如果我有这个代码:
r = randint(0, 255)
g = randint(0, 255)
b = randint(0, 255)
screen.fill((r, g, b))
如何设置让它每隔 10 秒选择一个随机数?
有许多不同的方法来解决这个问题。 :)
一种非常简单、快速但肮脏的方法是在主游戏循环中暂停游戏(即设置延迟)一段时间。您可以使用 PyGames pygame.time.delay()
函数:
#import pygame and randint function from random module
import pygame
from random import randint
pygame.init()
screen = pygame.display.set_mode((800,800)) #create screen
while True:
#get events from the event queue
for ev in pygame.event.get():
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
pygame.quit()
exit()
#create random variables r, g and b
r = randint(0, 255)
g = randint(0, 255)
b = randint(0, 255)
#fill screen
screen.fill((r, g, b))
#update whole screen
pygame.display.flip()
#set timout for 500ms (i.e. pause game for 500ms)
pygame.time.delay(500)
这种方法的问题是,您无法获得任何事件并在游戏的时间量(例如 500 毫秒)内做一些事情暂停.
为了避免这个问题,您可以创建您自己的事件,它每隔给定的毫秒数就会出现在事件队列中。您可以使用 pygame.time.set_timer()
创建一个事件:
import pygame
from random import randint
pygame.init()
#create a new event id called event_500ms
event_500ms = pygame.USEREVENT + 1
#set timer event to appear on the event queue every 500 number of milliseconds
pygame.time.set_timer(event_500ms, 500)
screen = pygame.display.set_mode((800,800))
while True:
#get events from the event queue
for ev in pygame.event.get():
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
pygame.quit()
exit()
#check for event_500ms event
if ev.type == event_500ms:
r = randint(0, 255)
g = randint(0, 255)
b = randint(0, 255)
screen.fill((r, g, b))
pygame.display.flip()
希望对您有所帮助:)