赞
踩
聪明的小蛇
用C语言编写“聪明的小蛇”,实现蛇的运动、吃食物、吃毒草、地雷、关卡等基本功能和360度转动、智慧草、毒草闪烁 、游戏场景保存、图形界面等附加功能。蛇在运动过程中撞到墙壁或咬到自己或吃到炸弹使蛇身长度小于2节时,游戏结束。
蛇身、墙壁、智慧草、食物、炸弹、毒草均使用以下数据结构:
- struct snake
-
- {
-
- char x;
-
- char y;
-
- struct snake *next;
-
- struct snake *previous;
-
- }
(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();
-
- }
此次课程设计,我深刻体会到了编程知识积累的重要性。在课设中我遇到了不少难题,但是经过仔细研究,得到解决。一个月的课设结束了,我的收获颇丰,同时也更深刻地认识到要做一个合格的程序员最重要的是严谨。贪吃蛇的设计使我学到了很多东西,为我以后的学习做了引导,点明了方向。
这次课设,我更多学到的是不懂就要问和尽全力尝试,哪怕失败,也要竭尽全力,最后在自己的努力下,取得成功,这种感觉美不可言,成就感十足。相信在不久的将来,我会开创自己的一片天空。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。