|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import pygame
import sys
from pygame.locals import *
pygame.init()
size = width, height = 600, 400
bg = (255, 255, 255)
snake = (0, 255, 0)
fanxiang = 'right'
left = 300
top = 200
screen = pygame.display.set_mode(size)
pygame.display.set_caption('贪吃蛇')
move = USEREVENT
pygame.time.set_timer(move, 1000)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == move:
if fanxiang == 'left':
left -= 11
elif fanxiang == 'top':
top -= 11
elif fanxiang == 'right':
left += 11
elif fanxiang == 'bottom':
top += 11
key_pressed = pygame.key.get_pressed()
if key_pressed[K_w] or key_pressed[K_UP]:
fanxiang = 'top'
if key_pressed[K_s] or key_pressed[K_DOWN]:
fanxiang = 'bottom'
if key_pressed[K_d] or key_pressed[K_RIGHT]:
fanxiang = 'right'
if key_pressed[K_a] or key_pressed[K_LEFT]:
fanxiang = 'left'
if fanxiang == 'left':
left -= 11
elif fanxiang == 'top':
top -= 11
elif fanxiang == 'right':
left += 11
elif fanxiang == 'bottom':
top += 11
screen.fill(bg)
pygame.draw.rect(screen, snake, (left, top, 10, 10), 0)
pygame.display.flip()
pygame.time.delay(10)
pygame.time.set_time(move, 1000)还是不能一秒倒计时怎么办?
在你的代码中,你使用了 pygame.time.set_timer(move, 1000) 来设置定时器,但是你在while循环中使用了 pygame.time.delay(10) 来控制游戏帧率,这会影响你的倒计时。
解决方法是:
1. 删除 pygame.time.delay(10) 这行代码,因为它会覆盖你之前设置的定时器。
2. 将 pygame.time.set_timer(move, 1000) 中的1000改为较小的值,以便更快地触发定时器事件,比如100。
修改后的代码应该是这样的:
- import pygame
- import sys
- from pygame.locals import *
- pygame.init()
- size = width, height = 600, 400
- bg = (255, 255, 255)
- snake = (0, 255, 0)
- fanxiang = 'right'
- left = 300
- top = 200
- screen = pygame.display.set_mode(size)
- pygame.display.set_caption('贪吃蛇')
- move = USEREVENT
- pygame.time.set_timer(move, 100) # 修改定时器的时间间隔为100毫秒
- while True:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- sys.exit()
- elif event.type == move:
- if fanxiang == 'left':
- left -= 11
- elif fanxiang == 'top':
- top -= 11
- elif fanxiang == 'right':
- left += 11
- elif fanxiang == 'bottom':
- top += 11
- key_pressed = pygame.key.get_pressed()
- if key_pressed[K_w] or key_pressed[K_UP]:
- fanxiang = 'top'
- if key_pressed[K_s] or key_pressed[K_DOWN]:
- fanxiang = 'bottom'
- if key_pressed[K_d] or key_pressed[K_RIGHT]:
- fanxiang = 'right'
- if key_pressed[K_a] or key_pressed[K_LEFT]:
- fanxiang = 'left'
- screen.fill(bg)
- pygame.draw.rect(screen, snake, (left, top, 10, 10), 0)
- pygame.display.flip()
复制代码
这样修改后,你的游戏应该可以正常进行一秒一次的倒计时了。
|
|