“聪明的小蛇”课程设计报告书
一、选题
聪明的小蛇
二、需求分析
用C语言编写“聪明的小蛇”,实现蛇的运动、吃食物、吃毒草、地雷、关卡等基本功能和360度转动、智慧草、毒草闪烁 、游戏场景保存、图形界面等附加功能。蛇在运动过程中撞到墙壁或咬到自己或吃到炸弹使蛇身长度小于2节时,游戏结束。
三、系统设计
1、数据结构设计
蛇身、墙壁、智慧草、食物、炸弹、毒草均使用以下数据结构:
struct snake
{
char x;
char y;
struct snake *next;
struct snake *previous;
}
2、算法和程序流程:
3、模块间接口描述
(1)全局变量
整数型:score、stage、status、sleeptime、flag_create_poison、flag_color、flag_read_wall、flag_wisdom_eat、flag_next_created、flag_wisdom_created、flag_graph
长整型:game_time_1
(2) 子模块返回的信息
调用自定义函数check_bite : return 1代表能咬到蛇身,return 0代表不能咬到蛇身;调用自定义函数check_coincidence : return 1代表生成的坐标与已有坐标重复,return 0代表生成的坐标不与已有坐标重复。
(3)实参为形参传值
自定义函数end_game接受传值后显示不同的结束状态;自定义函数set_pos接受传值后把光标移至指定位置;自定义函数sort接受数组地址后对数组内容进行修改。
(4)使用指针
自定义函数sort接受传入地址后修改地址对应的数据。
四、界面设计
开始和结束界面采用图形界面,通过按钮交互;游戏界面采用文本界面,通过按键交互。
五、系统实现
核心代码:
/
// 程序名称:聪明的小蛇
// 编译环境:VS2013+EasyX(20170919)
// 作 者:CDSN——哆啦一泓
// 最后修改:2018-1-11
/
struct snake
{
char x;
char y;
struct snake *next;
struct snake *previous;
}
void snake_move()//蛇前进
{
struct snake * next_head;
next_head = (struct snake*)malloc(sizeof(struct snake));
change_status();
p = next_head;
if (flag_wisdom_eat == 0)check_wall();
if (flag_wisdom_eat == 0 && check_bite(next_head) == 1)end_game(3);
if (next_head->x == food->x && next_head->y == food->y)eat_food();
else if (flag_wisdom_eat == 0 && next_head->x == bomb->x && next_head->y == bomb->y)eat_bomb();
else if (flag_wisdom_eat == 0 && next_head->x == poison->x && next_head->y == poison->y)eat_bomb();
else if (flag_wisdom_eat == 0 && next_head->x == wise->x && next_head->y == wise->y)eat_wisdom();
else 继续前进
}
void game_begin()
{
create_wall();
initialize();
wall = (struct snake*)malloc(sizeof(struct snake));
q = (struct snake*)malloc(sizeof(struct snake));
wall->x = -1 * 2;
wall->y = -1;
wall->next = NULL;
snake_initialize();
create_food();
create_bomb();
create_added_wall();
}
void game_control()//游戏控制
{
int flag = 0;
long game_time_10;
while (1)
{
if (flag_wisdom_eat == 1)eat_wisdom();
show_progress();
if (score >= 100)go_to_next_stage();
get_key_state();
Sleep(sleeptime);
snake_move();
}
}
int main()
{
system("title 聪明的小蛇 By 数媒1701班 李一泓");
welcome();
}
六、测试与调试
七、心得与体会
此次课程设计,我深刻体会到了编程知识积累的重要性。在课设中我遇到了不少难题,但是经过仔细研究,得到解决。一个月的课设结束了,我的收获颇丰,同时也更深刻地认识到要做一个合格的程序员最重要的是严谨。贪吃蛇的设计使我学到了很多东西,为我以后的学习做了引导,点明了方向。
这次课设,我更多学到的是不懂就要问和尽全力尝试,哪怕失败,也要竭尽全力,最后在自己的努力下,取得成功,这种感觉美不可言,成就感十足。相信在不久的将来,我会开创自己的一片天空。