# coding:utf-8
# author:frank
# date:2024/12/25
# 导入必要的库
import pygame
import random
# 初始化pygame
pygame.init()
# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
# 设置屏幕大小
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# 创建屏幕
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("贪吃蛇")
# 定义蛇的初始位置和大小
snake_block_size = 10
snake_speed = 15
snake_list = []
snake_length = 1
snake_x = SCREEN_WIDTH / 2
snake_y = SCREEN_HEIGHT / 2
# 定义食物的初始位置和大小
food_block_size = 10
food_x = round(random.randrange(0, SCREEN_WIDTH - food_block_size) / 10.0) * 10.0
food_y = round(random.randrange(0, SCREEN_HEIGHT - food_block_size) / 10.0) * 10.0
# 定义字体
font_style = pygame.font.SysFont(None, 50)
# 定义分数
score = 0
# 定义游戏结束函数
def game_over():
message = font_style.render("游戏结束", True, RED)
screen.blit(message, [SCREEN_WIDTH / 3, SCREEN_HEIGHT / 3])
pygame.display.update()
pygame.time.delay(2000)
snake_x_change =0
snake_y_change =0
# 游戏循环
game_over_flag = False
while not game_over_flag:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over_flag = True
# 控制蛇的移动
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
snake_x_change = -snake_block_size
snake_y_change = 0
elif event.key == pygame.K_RIGHT:
snake_x_change = snake_block_size
snake_y_change = 0
elif event.key == pygame.K_UP:
snake_y_change = -snake_block_size
snake_x_change = 0
elif event.key == pygame.K_DOWN:
snake_y_change = snake_block_size
snake_x_change = 0
# 控制蛇的移动
snake_x += snake_x_change
snake_y += snake_y_change
# 判断蛇是否吃到食物
if snake_x == food_x and snake_y == food_y:
food_x = round(random.randrange(0, SCREEN_WIDTH - food_block_size) / 10.0) * 10.0
food_y = round(random.randrange(0, SCREEN_HEIGHT - food_block_size) / 10.0) * 10.0
snake_length += 1
score += 10
# 绘制食物
pygame.draw.rect(screen, GREEN, [food_x, food_y, food_block_size, food_block_size])
# 绘制蛇
snake_head = []
snake_head.append(snake_x)
snake_head.append(snake_y)
snake_list.append(snake_head)
if len(snake_list) > snake_length:
del snake_list[0]
for x in snake_list[:-1]:
if x == snake_head:
game_over_flag = True
for x in snake_list:
pygame.draw.rect(screen, BLUE, [x[0], x[1], snake_block_size, snake_block_size])
# 绘制分数
score_message = font_style.render("分数: " + str(score), True, BLACK)
screen.blit(score_message, [0, 0])
# 更新屏幕
pygame.display.update()
# 判断蛇是否撞墙
if snake_x >= SCREEN_WIDTH or snake_x < 0 or snake_y >= SCREEN_HEIGHT or snake_y < 0:
game_over_flag = True
# 控制游戏速度
pygame.time.delay(snake_speed)
# 结束pygame
pygame.quit()
LeonDL168
- 粉丝: 3002
- 资源: 785
最新资源
- 基于MATLAB的500kV LCC-HVDC 输电仿真 两侧交流系统电压为345kV,交流侧分别设计了相应的滤波器,直流电压等级为500kV,直流电流为2KA,直流功率为1000MVA,下面依次为整
- matlab simulink车辆防抱死制动系统ABS建模仿真 单轮 双轮
- 基于hadoop的新闻推荐系统 用户协同过滤推荐 基于大数据的新闻推荐系统 推荐原理:以用户对新闻的喜欢和收藏行为作为基础数据集,应用hadoop通过mapreduce程序进行协同过滤计算,得出用户对
- C#上位机模板程序,使用的是台达AS228主机PLC,功能齐全,自动运行页面、切页面、手动调试、参数设置页面都有
- TCR+fc型svc无功补偿仿真模型有详细资料
- 基于光风储能vsg无缝切(预同步)控制策略 前0.3秒风光储+直流负载独立运行 0.3s时,断开直流负载和直流源,风光储+VSG+交流负载合并运行 0.6s时,VSG预同步模块并网 1.3s时,改变t
- 自动驾驶图像全景分隔,基于HRnetSegmentation从训练工程到tensorRT工程部署Demo闭环一套,包含训练工程及部署工程,和环境的配置说明,已在实际项目中使用 大厂自动驾驶工程师沉淀
- MATLAB代码 风光场景生成 场景削减 概率距离削减法 蒙特卡洛法 MATLAB:基于概率距离快速削减法的风光场景生成与削减方法 参考文档:《含风光水的电厂与配电公司协调调度模型》完全复现场景削减
- 基于mppt的光伏svpwm逆变并网 通过分析光伏电池的输出特性与外部环境的关系搭建出仿真模型,引入了变步长扰动观察法实现的最大功率追踪 MPPT 控制算法 并设计三相逆变器SVPWM双闭环控制策略
- 伺服电机代码 直线电机代码 FPGA架构伺服代码 软件硬件方案, 一个fpga控制多个电机,目前一个fpga最多控制6伺服驱动,所有内容均有fpga完成,控制曲线(T曲线),位置环,速度环,电流环,低
- 三相逆变器重复控制 在simlink中搭建了逆变器的重复控制模型,滤波器环节采用了陷波器与二阶低通滤波器 逆变器输出电压的THD仅仅只有0.52% 整个仿真全部离散化,采用离散解析器,控制与采样
- 锁相环 采用simlink仿真嵌C语言实现锁相环,整个仿真没有一个模块,只有C需要写的锁相环函数 仿真结果如图所示,基于双二阶广义积分器的锁相环成功锁得电网相位 对C语言写的代码做了详尽的注释
- PWM整流器仿真 在simulink中搭建了PWM整流器,采用电压电流双闭环控制,实现了网侧电压与电流同相位,单位功率因数运行 采用基于双二阶广义积分器的锁相环,锁得电网相位 整个仿真全部离散化
- matlab代码:计及条件风险价值的电-气综合能源系统能量-备用分布鲁棒优化 关键词:wasserstein距离 CVAR条件风险价值 分布鲁棒优化 电-气综合能源 能量-备用调度 参考文档Ene
- 基于DSTATCOM无功补偿的风电并网模型 Matlab simulink 质量过硬 仿真简介: 1、2个风电:一个基于双馈风机DFIG、一个基于感应风机 2、仿真总时长30s,10s时,感应风机
- 考虑储能削峰填谷的含DG配电网可靠性评估 1、基于序贯蒙特卡洛的配电网可靠性评估; 2、基于序贯蒙特卡洛的含DG配电网可靠性评估; 3、基于区间迭代法优化储能出力进行削峰填谷; 4、基于上述内容进一
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈