12.02贪吃蛇

news/2025/1/1 9:13:59/文章来源:https://www.cnblogs.com/luoqingci/p/18638908
import pygame
import random
import sys

# 初始化pygame
pygame.init()

# 设置屏幕大小
screen_width, screen_height = 640, 480
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("贪吃蛇游戏")

# 设置颜色
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)

# 设置游戏参数
snake_block = 40
snake_speed = 10 # 增加游戏速度,以提高游戏体验

# 初始化蛇的位置
snake_list = [[50, 50], [40, 50], [30, 50]]
direction = 'RIGHT'

# 初始化食物位置
def generate_food_position():
return [random.randrange(0, screen_width // snake_block) * snake_block,
random.randrange(0, screen_height // snake_block) * snake_block]

food_position = generate_food_position()
food_spawn = True

# 分数
score = 0

# 游戏主循环
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT and direction != 'RIGHT':
direction = 'LEFT'
elif event.key == pygame.K_RIGHT and direction != 'LEFT':
direction = 'RIGHT'
elif event.key == pygame.K_UP and direction != 'DOWN':
direction = 'UP'
elif event.key == pygame.K_DOWN and direction != 'UP':
direction = 'DOWN'

# 更新蛇头位置
if direction == 'RIGHT':
snake_head = [snake_list[-1][0] + snake_block, snake_list[-1][1]]
elif direction == 'LEFT':
snake_head = [snake_list[-1][0] - snake_block, snake_list[-1][1]]
elif direction == 'UP':
snake_head = [snake_list[-1][0], snake_list[-1][1] - snake_block]
elif direction == 'DOWN':
snake_head = [snake_list[-1][0], snake_list[-1][1] + snake_block]

# 确保蛇头和食物的位置都是 snake_block 的倍数
snake_head[0] = (snake_head[0] // snake_block) * snake_block
snake_head[1] = (snake_head[1] // snake_block) * snake_block

# 检查是否撞到墙壁或自己
if (snake_head[0] < 0 or snake_head[0] >= screen_width or
snake_head[1] < 0 or snake_head[1] >= screen_height or
snake_head in snake_list):
running = False

# 检查是否吃到食物
if snake_head == food_position:
score += 1
food_spawn = False
else:
snake_list.pop(0)

snake_list.append(snake_head)

# 生成新食物
if not food_spawn:
food_position = generate_food_position()
food_spawn = True

# 绘制游戏画面
screen.fill(black)

# 绘制蛇
for segment in snake_list:
pygame.draw.rect(screen, white, [segment[0], segment[1], snake_block, snake_block])

# 绘制食物
pygame.draw.rect(screen, red, [food_position[0], food_position[1], snake_block, snake_block])

# 显示分数
font = pygame.font.SysFont(None, 36) # 使用默认字体
score_text = font.render(f"Score: {score}", True, white)
screen.blit(score_text, [10, 10])

pygame.display.update()
pygame.time.Clock().tick(snake_speed)

pygame.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/860868.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PYTHON语言学习笔记(基础语法篇)

Python学习笔记 序言 主要是以小甲鱼的视频为主,https://space.bilibili.com/314076440 一些特性 多次调用方法是从左到右.而参数是函数则先执行参数. 一行如果要多个赋值,用;隔开 input().split() IO 看我放在另一个地方的文档.<D:\Document\md\PYTHON\IO.md> 数据类型 …

2024-11-28《关于mybatis创建的mapper映射路径不对导致的系列报错》

关于mybatis创建的mapper映射路径不对导致的系列报错今天在写mybatis项目的时候,使用注解发现无法使用别名,添加ResultMap的时候直接报错显示无法解析。 经过百度了好久也是成功的发现了问题的所在,就是这个:这个路径创建的时候我以为创建的是分级目录,实际上创建成为了co…

2024-11-29《axios获取不到response返回的响应的解决方法》

axios获取不到response返回的响应的解决方法今天在用mybatis+vue+axios写登录界面的时候,发现用户名还有密码的数据都能够传输到servlet里,但是当servlet对html界面进行相应的时候,axios却收不到消息,经过长时间的排查后也没有发现问题,终于在今晚的百度下发现了结果,上原…

如何解决宝塔面板无法登录的问题?

您好,当您遇到宝塔面板无法登录的问题时,可以按照以下步骤进行排查和解决:确认初始密码:如果您从未修改过宝塔面板的登录密码,默认情况下,宝塔面板的初始密码与服务器的初始密码相同。您可以尝试使用服务器的初始密码进行登录。如果您不确定服务器的初始密码,可以在云服…

如何解决网站默认80端口无法访问的问题?

您好,当您遇到网站默认80端口无法访问的问题时,可以按照以下步骤进行排查和解决:确认域名解析:首先,检查域名是否正确解析到服务器的IP地址。您可以通过在线DNS查询工具(如(网址))来验证域名解析是否正确。如果解析有问题,请联系域名注册商进行修正。检查服务器状态:登…

请问如何解决宝塔面板无法登录的问题?

您好,当您遇到宝塔面板无法登录的问题时,可以按照以下步骤进行排查和解决,确保能够顺利访问并管理您的服务器:确认初始密码:如果您从未修改过宝塔面板的登录密码,默认情况下,宝塔面板的初始密码与服务器的初始密码相同。您可以尝试使用服务器的初始密码进行登录。如果您…

网站频繁出现500错误 - 云服务器性能问题

关于您提到的网站经常报500错误并且服务器卡死的问题,这是一个比较复杂的情况,涉及到多个方面。为了帮助您彻底解决这个问题,我们需要从以下几个角度进行分析和排查: 一、服务器资源监控 首先,当网站出现500错误时,服务器资源(CPU、内存、磁盘I/O等)是否处于高位占用状…

网站后台打开出错 - 虚拟主机/数据库问题

一、检查PHP版本兼容性 首先,您提到有时登录时会遇到错误提示,而有时又能正常访问。这种情况可能与PHP版本有关。不同的PHP版本对某些函数或库的支持程度不同,如果您的网站程序依赖于特定版本的PHP特性,当切换到不兼容的版本时,可能会导致功能异常。 建议您尝试切换PHP版本…

2024-11-11《VsCode运行时输出日志》

VsCode运行C#时终端输出日志最近在使用vscode运行C#项目的时候,终端总会先输出一些无关的日志信息才会输出运行结果,搜索解决后发现是终端输出了日志信息,首先咱们看一下他输出的信息。这是我的代码: using System; using System.Collections.Generic; using System.Lin…

2024-10-31《c#学习》

今天进行了C#的初步学习,主要了解了C#的相关知识:目录基础语法 数据类型值类型 引用类型 动态(Dynamic)类型 字符串类型 指针类型类型转换 变量 常量 运算符 判断 循环 封装 基础语法首先是在C#里的基础语法,大致与C++还有Java类似,可以说是二者的结合体,基本的Hello Worl…

搬家后无法进入后台怎么办

问题描述: 网站搬家后,无法进入后台管理界面,可能是由于密码问题或配置错误引起的。请帮助恢复。 解决方案: 您好,网站搬家后无法进入后台管理界面确实是一个常见的问题。为了帮助您顺利恢复后台访问,建议您按照以下步骤逐一排查:确认密码正确:首先,确保您使用的后台登…

数据库密码无法更改怎么办

问题描述: 虚拟主机环境下,尝试更改数据库密码时遇到问题,无法成功更改。请帮助解决。 解决方案: 您好,数据库密码无法更改可能是由于权限不足、配置文件错误或数据库连接问题引起的。为了帮助您顺利更改密码,建议您按照以下步骤逐一排查:确认权限:确保您有足够的权限执…