"是不是PytPycharm,就开始有点迫不及待地想要开始写代码了呀,那我们这给大家准备了一个小小的案例来给大家感受一下Python的魅力"
本案例主要是借用了curses这个图形函数库,在终端进行简单的图形绘制,写了一个简易版的贪吃蛇小游戏。
完整代码如下:
# 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)
常见错误及解决方案:
错误1:模块没有被找到
curses是Python中的内置库,但是会报模块找不到这个错误,主要是因为Windows系统不是很适配,因此,可以通过以下几个步骤来解决:
1、先进入官网;Python Extension Packages for Windows - Christoph Gohlke (uci.edu)
2、使用Ctrl+F进行页面搜索,搜索curses然后根据自己的python版本及系统来进行文件的下载;
3、摁住win+R键,打开命令行,输入cmd,进入终端;
4、在命令行中输入cd /d 文件夹所在路径,回车,再输入 pip install 文件名
5、再重新在pycharm中运行。
错误二:不支持重定向;
解决方案:
1、先点击右上角目前的py文件,再点击Edit config...进入;
2、勾选Emulate....,再点击应用。
再上述问题都解决完了以后,python程序应该是正确运行的,如果出现闪退,但是没有报错,这可能是程序的缺陷,建议多运行几次就ok了。
运行成功截图: