如何解决如何使矩形对象在屏幕上缓慢移动?
我是Python编程的新手,现在开始编写简单的“ Snake”游戏。 我试图使蛇的头部以某种方式在屏幕上移动 按下箭头键时,磁头应不停地沿该方向移动,直到垂直 按下箭头。 我不能使蛇的头部(一个矩形)缓慢地在单个方向上不停地移动。 我试图使用time.sleep()->这使整个代码卡住了。 我尝试使用for循环->它只是使矩形快速传输到另一个方向。
这是我的主要功能:
while not GameOver:
#create time delay of 10 milliseconds
pygame.time.delay(10)
# Get all of the events on the game's screen [all of the user's input]
# Loop on the user's activity and look for exit button pressing.
for event in pygame.event.get():
# If the user presses the X button:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# Define a shortcut name to "get_pressed" method in pygame:
keys = pygame.key.get_pressed()
# defining x location
x = head_position[0]
y = head_position[1]
# if he pressed left key
if keys[pygame.K_LEFT]:
# reducing location by constant
head_position[0] -= head_speed
elif keys[pygame.K_RIGHT]:
# increacing location by constant
head_position[0] += head_speed
elif keys[pygame.K_UP]:
# increacing location by constant
head_position[1] -= head_speed
elif keys[pygame.K_DOWN]:
# increacing location by constant
head_position[1] += head_speed
#If the head passes the screen Boundaries,it would pop in the other side.
if head_position[0] >= WIDTH:
head_position[0] = 0
elif head_position[0] < 0:
head_position[0] = WIDTH-head_size
elif head_position[1] >= HEIGHT:
head_position[1] = 0
elif head_position[1] < 0:
head_position[1] = HEIGHT-head_size
解决方法
使用pygame.time
模块控制每秒的帧数。生成一个pygame.time.Clock
对象。如果您将可选的帧速率参数传递给pygame.time.Clock.tick
,则该函数将延迟以使游戏的运行速度低于给定的每秒滴答声:
clock = pygame.time.Clock()
while not GameOver:
clock.tick(10) # 10: the game runs with 10 frames per second
# [...]
,
如果要使其在按一次键后沿一个方向匀速移动,请进行 正确=错误的变量 然后做一个 键[pygame.K_YOURCHOICE]: 正确=正确
如果正确: head_pos [1或0]-= head_speed
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。