一、效果
录屏软件和上下键有点冲突,就没有演示上下移动了(自行脑补啦)
二、代码
# coding:utf-8
import curses
import random
# 初始化屏幕
scr = curses.initscr()
# 设置光标
curses.curs_set(0)
# 设置宽高
sh, sw = scr.getmaxyx()
w = curses.newwin(sh, sw, 0, 0)
w.keypad(1)
# 窗口刷新时间为100毫秒,控制速度的地方
w.timeout(200)
# 蛇
snake_x = int(sw / 4)
snake_y = int(sh / 2)
snake = [
[snake_y, snake_x],
[snake_y, snake_x - 1],
[snake_y, snake_x - 2],
]
# 简写一下
ku = curses.KEY_UP
kd = curses.KEY_DOWN
kr = curses.KEY_RIGHT
kl = curses.KEY_LEFT
# 食物
food = [int(sh / 2), int(sw / 2)]
w.addch(int(food[0]), int(food[1]), curses.ACS_PI)
# 控制蛇的移动
# 首先要给它一个方向
key = kr
while True:
# 获取玩家的键盘指令
next_key = w.getch()
key = key if next_key == -1 else next_key
# 蛇死的情况:撞到自己,碰到边缘
if snake[0] in snake[1:] or \
snake[0][0] in [0, sh] or \
snake[0][0] in [0, sh]:
curses.endwin()
quit()
# 蛇的移动逻辑
new_head = [snake[0][0], snake[0][1]]
if key == curses.KEY_DOWN:
new_head[0] += 1
if key == curses.KEY_UP:
new_head[0] -= 1
if key == curses.KEY_LEFT:
new_head[1] -= 1
if key == curses.KEY_RIGHT:
new_head[1] += 1
snake.insert(0,new_head)
# 当蛇吃到食物
if snake[0] == food:
food = None
while food is None:
nf = [
random.randint(1, sh - 1),
random.randint(1, sw - 1)
]
food = nf if nf not in snake else None
w.addch(food[0],food[1],curses.ACS_PI)
else:
tail = snake.pop()
w.addch(int(tail[0]), int(tail[1]), ' ')
w.addch(int(snake[0][0]), int(snake[0][1]), curses.ACS_CKBOARD)
三、可能遇到的报错
3.1报错一
3.1.1原因
如果是windows系统,会出现这样的报错:
SyntaxWarning: list indices must be integers or slices, not tuple; perhaps you missed a comma?
[snake_y, snake_x]
Traceback (most recent call last):
File "G:/PythonProject/TD2/game/tanchi.py", line 3, in <module>
import curses
File "F:\Anaconda\lib\curses\__init__.py", line 13, in <module>
from _curses import *
ModuleNotFoundError: No module named '_curses'
如图:
但导入的时候完全正常
原因是:curses库不支持Windows
3.1.2解决办法
去官网下载curses库对应你python版本的whl文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/#curses
比如我是python38,64位
下载到python安装目录中下的Script文件夹下即可(Python\Scripts)
不知道自己python目录在哪的小伙伴别慌
直接在命令行行窗口输入 where python
接下来
把whl文件放入Script文件夹后,进入Script文件夹(我是用的Anaconda)
鼠标单击图上文件位置栏——输入cmd ——然后回车
变为
然后用pip安装whl文件即可
输入pip install "curses-2.2.1+utf8-cp38-cp38-win_amd64.whl"
(小技巧:whl文件名输入前几个字母按TAB键能自动补全)
3.2报错二
3.2.1原因
Redirection is not supported.
- 1
如图
Redirection isnot supported. 翻译过来是不支持重定向
3.2.2解决办法
首先点击如图所示的倒立三角形符号,选Edit Configurations,勾选 “Emulate terminal in output console”,应用并确定即可
借鉴:https://www.youtube.com/watch?v=rbasThWVb-c&t=0s