百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

贪吃蛇代码

ztj100 2025-03-04 16:00 7 浏览 0 评论

以下是一个使用Python curses库实现的简单贪吃蛇游戏代码,包含详细注释:

```python

import curses

from curses import KEY_RIGHT, KEY_LEFT, KEY_UP, KEY_DOWN

from random import randint

# 初始化curses

curses.initscr()

win = curses.newwin(20, 60, 0, 0) # 创建新窗口(高度20,宽度60)

win.keypad(1) # 启用键盘输入

curses.noecho() # 关闭输入回显

curses.curs_set(0) # 隐藏光标

win.nodelay(1) # 非阻塞输入模式

# 初始化颜色

curses.start_color()

curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK)

curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK)

# 游戏初始化

snake = [[4, 10], [4, 9], [4, 8]] # 初始蛇身位置

food = [10, 20] # 初始食物位置

score = 0 # 初始得分

win.addch(food[0], food[1], 'O', curses.color_pair(1)) # 绘制食物

key = KEY_RIGHT # 初始方向向右

# 游戏主循环

while True:

win.border(0) # 绘制边框

win.addstr(0, 2, 'Score: ' + str(score) + ' ') # 显示分数


# 获取输入(非阻塞)

event = win.getch()

key = key if event == -1 else event

# 计算新蛇头位置

head = [snake[0][0], snake[0][1]]

if key == KEY_DOWN:

head[0] += 1

elif key == KEY_UP:

head[0] -= 1

elif key == KEY_LEFT:

head[1] -= 1

elif key == KEY_RIGHT:

head[1] += 1

# 插入新蛇头

snake.insert(0, head)

# 碰撞检测

if (

head[0] == 0 or head[0] == 19 or # 撞墙检测

head[1] == 0 or head[1] == 59 or

head in snake[1:] # 自撞检测

):

break

# 吃食物检测

if head == food:

score += 1

# 生成新食物(不在蛇身上)

while food in snake:

food = [randint(1, 18), randint(1, 58)]

win.addch(food[0], food[1], 'O', curses.color_pair(1))

else:

# 移动蛇尾(没吃到食物时)

tail = snake.pop()

win.addch(tail[0], tail[1], ' ')

# 绘制蛇身

win.addch(snake[0][0], snake[0][1], '@', curses.color_pair(2))

for segment in snake[1:]:

win.addch(segment[0], segment[1], '#', curses.color_pair(2))

win.refresh()

curses.napms(150) # 控制游戏速度(毫秒)

# 游戏结束

curses.endwin()

print(f"游戏结束!最终得分:{score}")

```

运行说明:

1. 需要安装Python的curses库(Windows用户需先安装`windows-curses`包)

2. 使用方向键控制蛇的移动

3. 吃食物(O)可以增长身体并得分

4. 避免撞墙和自撞

安装依赖(Windows):

```bash

pip install windows-curses

```

游戏规则:

- 每次吃到食物得1分

- 蛇身会随着吃食物变长

- 撞墙或碰到自己身体游戏结束

- 游戏速度固定(150ms/帧)

这个实现包含了:

- 彩色界面显示

- 分数统计

- 碰撞检测

- 食物生成逻辑

- 基本的游戏循环结构

你可以通过调整以下参数自定义游戏:

- 修改`curses.newwin(20, 60, 0, 0)`改变窗口大小

- 调整`curses.napms(150)`改变游戏速度

- 修改初始蛇身位置`snake`和食物位置`food`

- 修改符号颜色(修改color_pair参数)

相关推荐

Whoosh,纯python编写轻量级搜索工具

引言在许多应用程序中,搜索功能是至关重要的。Whoosh是一个纯Python编写的轻量级搜索引擎库,可以帮助我们快速构建搜索功能。无论是在网站、博客还是本地应用程序中,Whoosh都能提供高效的全文搜...

如何用Python实现二分搜索算法(python二分法查找代码)

如何用Python实现二分搜索算法二分搜索(BinarySearch)是一种高效的查找算法,适用于在有序数组中快速定位目标值。其核心思想是通过不断缩小搜索范围,每次将问题规模减半,时间复杂度为(O...

路径扫描 -- dirsearch(路径查找器怎么使用)

外表干净是尊重别人,内心干净是尊重自己,干净,在今天这个时代,应该是一种极高的赞美和珍贵。。。----网易云热评一、软件介绍Dirsearch是一种命令行工具,可以强制获取web服务器中的目录和文件...

78行Python代码帮你复现微信撤回消息!

来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。...

从零开始学习 Python!2《进阶知识》 Python进阶之路

欢迎来到Python学习的进阶篇章!如果你说已经掌握了基础语法,那么这篇就是你开启高手之路的大门。我们将一起探讨面向对象编程...

白帽黑客如何通过dirsearch脚本工具扫描和收集网站敏感文件

一、背景介绍...

Python之txt数据预定替换word预定义定位标记生成word报告(四)

续接Python之txt数据预定替换word预定义定位标记生成word报告(一)https://mp.toutiao.com/profile_v4/graphic/preview?pgc_id=748...

假期苦短,我用Python!这有个自动回复拜年信息的小程序

...

Python——字符串和正则表达式中的反斜杠('\')问题详解

在本篇文章里小编给大家整理的是关于Python字符串和正则表达式中的反斜杠('\')问题以及相关知识点,有需要的朋友们可以学习下。在Python普通字符串中在Python中,我们用'\'来转义某些普通...

Python re模块:正则表达式综合指南

Python...

Python中re模块详解(rem python)

在《...

python之re模块(python re模块sub)

re模块一.re模块的介绍1.什么是正则表达式"定义:正则表达式是一种对字符和特殊字符操作的一种逻辑公式,从特定的字符中,用正则表达字符来过滤的逻辑。(也是一种文本模式;)2、正则表达式可以帮助我们...

MySQL、PostgreSQL、SQL Server 数据库导入导出实操全解

在数字化时代,数据是关键资产,数据库的导入导出操作则是连接数据与应用场景的桥梁。以下是常见数据库导入导出的实用方法及代码,包含更多细节和特殊情况处理,助你应对各种实际场景。一、MySQL数据库...

Zabbix监控系统系列之六:监控 mysql

zabbix监控mysql1、监控规划在创建监控项之前要尽量考虑清楚要监控什么,怎么监控,监控数据如何存储,监控数据如何展现,如何处理报警等。要进行监控的系统规划需要对Zabbix很了解,这里只是...

mysql系列之一文详解Navicat工具的使用(二)

本章内容是系列内容的第二部分,主要介绍Navicat工具的使用。若查看第一部分请见:...

取消回复欢迎 发表评论: