当前位置: 首页 > news >正文

Python——贪吃蛇

以下是一个简单的贪吃蛇游戏的Python代码示例:

import pygame
import time
import random# 初始化 Pygame
pygame.init()# 定义颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
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("贪吃蛇游戏")# 游戏帧率
clock = pygame.time.Clock()
snake_block_size = 20# 字体设置
font_style = pygame.font.SysFont(None, 50)
score_font = pygame.font.SysFont(None, 35)def your_score(score):value = score_font.render("Your Score: " + str(score), True, WHITE)screen.blit(value, [0, 0])def our_snake(snake_block_size, snake_list):for x in snake_list:pygame.draw.rect(screen, GREEN, [x[0], x[1], snake_block_size, snake_block_size])# 游戏主循环
def game_loop():game_over = Falsegame_quit = Falsex1 = screen_width / 2y1 = screen_height / 2x1_change = 0y1_change = 0snake_list = []snake_length = 1foodx = round(random.randrange(0, screen_width - snake_block_size) / 20.0) * 20.0foody = round(random.randrange(0, screen_height - snake_block_size) / 20.0) * 20.0while not game_quit:while game_over == True:screen.fill(BLACK)message = font_style.render("Game Over! Press Q-Quit or C-Play Again", True, WHITE)screen.blit(message, [screen_width / 6, screen_height / 3])your_score(snake_length - 1)pygame.display.update()# 游戏结束等待用户输入for event in pygame.event.get():if event.type == pygame.QUIT:game_quit = Truegame_over = Falseif event.type == pygame.KEYDOWN:if event.key == pygame.K_q:game_quit = Truegame_over = Falseif event.key == pygame.K_c:game_loop()for event in pygame.event.get():if event.type == pygame.QUIT:game_quit = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:x1_change = -snake_block_sizey1_change = 0elif event.key == pygame.K_RIGHT:x1_change = snake_block_sizey1_change = 0elif event.key == pygame.K_UP:y1_change = -snake_block_sizex1_change = 0elif event.key == pygame.K_DOWN:y1_change = snake_block_sizex1_change = 0if x1 >= screen_width or x1 < 0 or y1 >= screen_height or y1 < 0:game_over = Truex1 += x1_changey1 += y1_changescreen.fill(BLACK)pygame.draw.rect(screen, RED, [foodx, foody, snake_block_size, snake_block_size])snake_head = []snake_head.append(x1)snake_head.append(y1)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 = Trueour_snake(snake_block_size, snake_list)your_score(snake_length - 1)pygame.display.update()if x1 == foodx and y1 == foody:foodx = round(random.randrange(0, screen_width - snake_block_size) / 20.0) * 20.0foody = round(random.randrange(0, screen_height - snake_block_size) / 20.0) * 20.0snake_length += 1clock.tick(10)pygame.quit()quit()game_loop()

这个代码使用Pygame库来创建一个简单的贪吃蛇游戏。在游戏中,玩家通过键盘控制贪吃蛇的移动方向,目标是吃到食物并尽可能多地增长长度。如果贪吃蛇碰到边界或自己的身体,游戏结束。游戏过程中会显示当前的分数。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LabVIEW回转马达试验系统
  • redis详细解析和配置选择
  • Machine Learning: A Probabilistic Perspective 机器学习:概率视角 PDF免费分享
  • 【重学 MySQL】二十二、limit 实现分页
  • 从MySQL JSON字段中提取去重城市列表的SQL查询
  • Zabbix监控k8s云原生环境
  • 【Python爬虫系列】_016.关于登录和验证码
  • Redis - 主从复制
  • 2024年道路运输安全员考试题库及答案
  • COI实验室技能:图像到图像的深度学习开发框架(pytorch版)
  • 正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编
  • MFC工控项目实例之十四模拟量信号名称从文件读写
  • [论文笔记] ShortGPT Qwen2-0.5B-instruct Qwen2-1.5B-instruct 大模型剪枝
  • 【SQL】百题计划:SQL内置函数“LENGTH“的使用
  • 电脑丢失msvcp120.dll问题原因及详细介绍msvcp120.dll丢失的解决方法
  • 345-反转字符串中的元音字母
  • Apache的80端口被占用以及访问时报错403
  • echarts花样作死的坑
  • HTML5新特性总结
  • Just for fun——迅速写完快速排序
  • Lsb图片隐写
  • Lucene解析 - 基本概念
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 缓存与缓冲
  • 将回调地狱按在地上摩擦的Promise
  • 坑!为什么View.startAnimation不起作用?
  • 小而合理的前端理论:rscss和rsjs
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • AI算硅基生命吗,为什么?
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (转)甲方乙方——赵民谈找工作
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net 调用海康SDK以及常见的坑解释
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .Net 知识杂记
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • /bin、/sbin、/usr/bin、/usr/sbin
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • /var/log/cvslog 太大
  • @Resource和@Autowired的区别
  • @SpringBootConfiguration重复加载报错
  • @Valid和@NotNull字段校验使用