字符游戏 - 贪吃蛇(1)
如果你早学计算机30年,有(苹果 Apple II)计算机玩“警察抓小偷”,“PCMAN”游戏,一定是值得摆谱的事情。这些游戏界面是用字符构造(现在似乎称为“像素游戏”),也很好玩的。这次我们用 c 语言制作一个 “Greedy Snake” 的游戏。
demo:苹果2经典游戏视频1983年的警察抓小偷
一、实验目的
- 了解字符游戏的表示
- 体验自顶向下的设计方法实现问题求解
- 使用伪代码表示算法
- 使用函数抽象过程
二、游戏要求与表示
1、玩法
贪吃蛇游戏是一款经典的益智游戏,有PC和手机等多平台版本。既简单又耐玩。该游戏通过控制蛇头方向吃蛋,从而使得蛇变得越来越长。百度百科
2、游戏表示
给定一个10*10的字符矩阵表示蛇的生存空间,其中有一条长度5的蛇(HXXXX), “H”表示蛇头,“X”表示蛇身体。空间中可能有食物(“$”表示)和障碍物(“*”表示)
你可以使用“ADWS”按键分别控制蛇的前进方向“左右上下”, 当蛇头碰到自己的身体或走出边界,游戏结束,否则蛇按你指定方向前进一步。
三、编程要求
1、任务1:会动的蛇
- 程序头部要求
定义良好的头部,将使得程序更加易于阅读,易于维护。包括:常数定义、函数定义等。你需要参照以下内容,设计你程序的头部:
- 代码规范
- 只能使用ANSI C,且不能出现任何warning!!!
- 即你 不能 使用
getch()
等微软提供的函数
- 即你 不能 使用
- 满足 Google c/c++ style
- 只能使用ANSI C,且不能出现任何warning!!!
- 程序结构
程序总体结构必须严格符合以下伪代码框架 ::
输出字符矩阵
WHILE not 游戏结束 DO
ch=等待输入
CASE ch DO
‘A’:左前进一步,break
‘D’:右前进一步,break
‘W’:上前进一步,break
‘S’:下前进一步,break
END CASE
输出字符矩阵
END WHILE
输出 Game Over!!!
- 编程建议(自顶向下,逐步求精)
- 先按伪代码写好总控(main)代码。
- 所有函数都是 print 或 简单的语句。 例如: snakeMove 仅需要写几句,输出上下左右即可
- 逐步完成涉及的函数
2、任务2:会吃的蛇
- 功能需求:
- snake 头撞到身体、障碍(边界或你在地图中定义) 游戏结束
- snake 头吃到食物,snake就长一节
- 细化并完善随机放置食物的伪代码
- 找一个空白位置
- 在该位置放置食物
- 你需要进一步细化的代码:
- 蛇头撞到身体、障碍物 … …
- 蛇头撞到食物 … …
- 蛇头进入一个空位置 … …
四、评分标准
- 提交程序(提交到 Github):
- snake_move.c
- snake_eat.c
评分要求:
- 5分:程序规范,代码逻辑性强,注释能很好反映自顶向下,逐步求精的思想
- 4分:程序规范,代码逻辑性强,注释较好
- 3分:代码逻辑混乱