cmd贪吃蛇
更多
命令行贪吃蛇游戏
下面是一个使用Python实现的命令行贪吃蛇游戏。这个版本使用了curses库来处理终端界面,支持方向键控制,具有分数显示和游戏结束提示。
import curses
import random
import time
class SnakeGame:
def __init__(self, screen):
self.screen = screen
self.height, self.width = screen.getmaxyx()
# 游戏区域边界(留出一行显示分数)
self.game_height = self.height - 2
self.game_width = self.width - 2
# 初始化蛇的位置(在屏幕中央)
self.snake = [
[self.game_height // 2, self.game_width // 2],
[self.game_height // 2, self.game_width // 2 - 1],
[self.game_height // 2, self.game_width // 2 - 2]
]
# 初始方向(向右)
self.direction = curses.KEY_RIGHT
# 生成食物
self.food = self.generate_food()
self.score = 0
# 游戏速度(毫秒)
self.speed = 150
# 游戏状态
self.game_over = False
def generate_food(self):
"""生成不在蛇身上的食物位置"""
while True:
food = [
random.randint(1, self.game_height - 1),
random.randint(1, self.game_width - 1)
]
if food not in self.snake:
return food
def draw(self):
"""绘制游戏界面"""
self.screen.clear()
# 绘制边框
self.screen.border(0)
# 绘制分数
self.screen.addstr(0, 2, f'分数: {self.score} | 方向键控制 | ESC退出')
# 绘制蛇
for i, segment in enumerate(self.snake):
if i == 0: # 蛇头
self.screen.addch(segment[0], segment[1], curses.ACS_DIAMOND)
else: # 蛇身
self.screen.addch(segment[0], segment[1], curses.ACS_CKBOARD)
# 绘制食物
self.screen.addch(self.food[0], self.food[1], curses.ACS_PI)
self.screen.refresh()
def move(self):
"""移动蛇"""
head = self.snake[0].copy()
# 根据方向更新头部位置
if self.direction == curses.KEY_UP:
head[0] -= 1
elif self.direction == curses.KEY_DOWN:
head[0] += 1
elif self.direction == curses.KEY_LEFT:
head[1] -= 1
elif self.direction == curses.KEY_RIGHT:
head[1] += 1
# 检查是否撞墙
if (head[0] <= 0 or head[0] >= self.game_height or
head[1] <= 0 or head[1] >= self.game_width):
self.game_over = True
return
# 检查是否撞到自己
if head in self.snake:
self.game_over = True
return
# 移动蛇
self.snake.insert(0, head)
# 检查是否吃到食物
if head == self.food:
self.score += 10
self.food = self.generate_food()
# 随着分数增加加快速度
if self.score % 50 == 0 and self.speed > 50:
self.speed -= 10
else:
# 如果没吃到食物,移除尾部
self.snake.pop()
def run(self):
"""运行游戏主循环"""
# 设置非阻塞输入
self.screen.nodelay(True)
while not self.game_over:
# 获取用户输入
key = self.screen.getch()
# 处理方向键
if key in [curses.KEY_UP, curses.KEY_DOWN,
curses.KEY_LEFT, curses.KEY_RIGHT]:
# 防止180度转向
if (key == curses.KEY_UP and self.direction != curses.KEY_DOWN) or \
(key == curses.KEY_DOWN and self.direction != curses.KEY_UP) or \
(key == curses.KEY_LEFT and self.direction != curses.KEY_RIGHT) or \
(key == curses.KEY_RIGHT and self.direction != curses.KEY_LEFT):
self.direction = key
# ESC键退出
if key == 27:
break
# 移动蛇
self.move()
# 绘制游戏界面
self.draw()
# 控制游戏速度
time.sleep(self.speed / 1000)
# 游戏结束显示
if self.game_over:
self.screen.nodelay(False)
self.screen.addstr(self.game_height // 2, self.game_width // 2 - 10,
f"游戏结束! 最终分数: {self.score}")
self.screen.addstr(self.game_height // 2 + 1, self.game_width // 2 - 10,
"按任意键退出...")
self.screen.refresh()
self.screen.getch()
def main():
# 初始化curses
screen = curses.initscr()
curses.noecho() # 关闭输入回显
curses.cbreak() # 不需要回车即可响应按键
curses.curs_set(0) # 隐藏光标
# 开启特殊键处理(如方向键)
screen.keypad(True)
# 创建游戏实例并运行
game = SnakeGame(screen)
game.run()
# 恢复终端设置
curses.nocbreak()
screen.keypad(False)
curses.echo()
curses.endwin()
if __name__ == "__main__":
main()
游戏说明
操作方法
- 方向键(↑↓←→):控制蛇的移动方向
- ESC键:退出游戏
游戏规则
- 控制蛇吃掉食物(π字符)来增加分数
- 每吃一个食物得10分,蛇身会变长
- 撞到墙壁或自己的身体游戏结束
- 随着分数增加,蛇的移动速度会加快
运行要求
- 需要在支持
curses库的终端环境中运行(如Linux/macOS的终端或Windows的Git Bash) - 确保已安装Python(推荐Python 3.6+)
运行方式
- 将代码保存为
snake_game.py - 在终端运行:
python snake_game.py
祝您游戏愉快!
玩嗨OpenHarmony:基于OpenHarmony的贪吃蛇小游戏
51CTO 开源基础软件社区 #夏日挑战赛# 《 OpenHarmony基于JS实现的贪吃蛇 》 1. 项目简介 贪吃蛇是一款非常经典的小游戏,概念起源于1976年由美国一家街机游戏Blockade
2022-11-28 20:50:06
基于stm32的贪吃蛇小游戏的设计资料分享
目录前言一、主要功能二、主要模块1.贪吃蛇链表2.ADC3.定时器中断三、实际显示效果前言自学完电阻触摸屏之后做的小项目。我采用了C语言链表的方式来形成贪吃蛇。利用相关封装好的函数,将其移植在了野火
2022-02-21 07:27:03
【FPGA DEMO】Lab 9:贪吃蛇小游戏
` 本帖最后由 zhangyue510 于 2021-7-30 16:32 编辑 项目名称:贪吃蛇小游戏具体要求:在Perf-V实现贪吃蛇小游戏的运行。系统设计:
2021-07-30 15:53:05
基于51单片机的贪吃蛇游戏设计 精选资料分享
的理解,编写程序实现对贪吃蛇的有效控制;(2)通过对51单片机硬件的学习,学会运用面包板,独立按键、点阵屏等,完成对完整电路的搭建过程;(3)通过对Proteus仿真软件的学习,实现基于STC89C52单片机的8*8点阵贪吃蛇
2021-07-16 06:48:49
C语言写个贪吃蛇游戏
C语言写个贪吃蛇游戏 贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情。这个游戏我写完后放在知乎,竟然点赞的人数超级多。我觉得大家喜欢,一个方面是因为写得简单,大家都能看得懂,一个可
2020-04-10 10:44:46
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
相关标签