1、在游戏界面中,蛇是由一系列 10×10 像素的矩形拼接而成的。绘制蛇时,我们使用 for 循环遍历蛇的每个身体部位,然后用 Pygame 的 draw.rect 函数绘制每个身体部位的矩形。
2、判断游戏是否结束的代码非常简单,我们只需要判断蛇的头部是否撞到了墙壁或者自己的身体,或者是否撞到了障碍物即可。
3、最后,我们使用 Pygame 的 time.Clock().tick() 函数来设置游戏帧率,保证游戏的运行速度始终保持在一定范围内。
这是一个相对完整的贪吃蛇游戏程序,你可以在此基础上继续进行功能扩展,让游戏更加丰富和有趣。
下面附赠全部代码:
import pygame
import random
# 初始化 Pygame 库
pygame.init()
# 设置窗口大小
width = 500
height = 500
screen = pygame.display.set_mode((width, height))
# 设置字体
font = pygame.font.SysFont('Arial', 30)
# 定义颜色
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
green = (0, 255, 0)
gray = (128, 128, 128)
# 定义蛇的初始位置和速度
snake_position = [100, 50]
snake_body = [[100, 50], [90, 50], [80, 50]]
snake_speed = [5, 0]
# 定义食物的位置
food_position = [random.randrange(1, (width // 10)) * 10,
random.randrange(1, (height // 10)) * 10]
# 定义障碍物的位置
obstacle_position = [random.randrange(1, (width // 10)) * 10,
random.randrange(1, (height // 10)) * 10]
# 定义游戏速度和得分
game_speed = 5
game_score = 0
# 定义游戏状态
game_over = False
game_paused = False
# 游戏主循环
while not game_over:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
if snake_speed[0] != 10:
snake_speed = [-10, 0]
elif event.key == pygame.K_RIGHT:
if snake_speed[0] != -10:
snake_speed = [10, 0]
elif event.key == pygame.K_UP:
if snake_speed[1] != 10:
snake_speed = [0, -10]
elif event.key == pygame.K_DOWN:
if snake_speed[1] != -10:
snake_speed = [0, 10]
elif event.key == pygame.K_SPACE:
game_paused = not game_paused
# 如果游戏暂停,直接跳过本次循环
if game_paused:
continue
# 移动蛇的位置
snake_position[0] += snake_speed[0]
snake_position[1] += snake_speed[1]
# 增加蛇的身体
snake_body.insert(0, list(snake_position))
# 判断是否吃到食物
if snake_position == food_position:
food_position = [random.randrange(1, (width // 10)) * 10,
random.randrange(1, (height // 10)) * 10]
game_score += 10
else:
snake_body.pop()
# 绘制游戏界面
screen.fill(black)
# 绘制障碍物
pygame.draw.rect(screen, gray, pygame.Rect(
obstacle_position[0], obstacle_position[1], 10, 10))
# 绘制蛇
# 绘制蛇
for position in snake_body:
pygame.draw.rect(screen, green, pygame.Rect(
position[0], position[1], 10, 10))
# 判断游戏是否结束
if snake_position[0] < 0 or snake_position[0] > width-10:
game_over = True
if snake_position[1] < 0 or snake_position[1] > height-10:
game_over = True
for block in snake_body[1:]:
if snake_position == block:
game_over = True
if snake_position == obstacle_position:
game_over = True
# 显示得分
score_text = font.render("Score: " + str(game_score), True, white)
screen.blit(score_text, [0, 0])
# 刷新屏幕
pygame.display.update()
# 设置游戏帧率
pygame.time.Clock().tick(game_speed)
# 退出 Pygame 库
pygame.quit()
# 在游戏界面中,蛇是由一系列 10x10 像素的矩形拼接而成的。绘制蛇时,我们使用 for 循环遍历蛇的每个身体部位,然后用 Pygame 的 draw.rect 函数绘制每个身体部位的矩形。
#
# 判断游戏是否结束的代码非常简单,我们只需要判断蛇的头部是否撞到了墙壁或者自己的身体,或者是否撞到了障碍物即可。
#
# 最后,我们使用 Pygame 的 time.Clock().tick() 函数来设置游戏帧率,保证游戏的运行速度始终保持在一定范围内。
#
# 这是一个相对完整的贪吃蛇游戏程序,你可以在此基础上继续进行功能扩展,让游戏更加丰富和有趣。
生意营销3大宝:彩铃、定位、认证,一个也不能少,如有需要,添加 微信:xnc528 备注:3
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 820277912@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.clzz8.com/49898.html
如若转载,请注明出处:https://www.clzz8.com/49898.html