当前位置:   article > 正文

​​​​​​​C语言贪吃蛇——“聪明的小蛇”课程设计报告书_c语言贪吃蛇课程设计报告

c语言贪吃蛇课程设计报告

“聪明的小蛇”课程设计报告书

一、选题

聪明的小蛇

二、需求分析

用C语言编写“聪明的小蛇”,实现蛇的运动、吃食物、吃毒草、地雷、关卡等基本功能和360度转动、智慧草、毒草闪烁        、游戏场景保存、图形界面等附加功能。蛇在运动过程中撞到墙壁或咬到自己或吃到炸弹使蛇身长度小于2节时,游戏结束。

三、系统设计

1、数据结构设计

蛇身、墙壁、智慧草、食物、炸弹、毒草均使用以下数据结构:

  1. struct snake
  2. {
  3.         char x;
  4.         char y;
  5.         struct snake *next;
  6.         struct snake *previous;
  7. }

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接受传入地址后修改地址对应的数据。

四、界面设计

    开始和结束界面采用图形界面,通过按钮交互;游戏界面采用文本界面,通过按键交互。

五、系统实现

核心代码:

  1. /
  2. // 程序名称:聪明的小蛇
  3. // 编译环境:VS2013+EasyX(20170919)
  4. // 作  者:CDSN——哆啦一泓
  5. // 最后修改:2018-1-11
  6. /
  7. struct snake
  8. {
  9.         char x;
  10.         char y;
  11.         struct snake *next;
  12.         struct snake *previous;
  13. }
  14. void snake_move()//蛇前进
  15. {
  16.         struct snake * next_head;
  17.         next_head = (struct snake*)malloc(sizeof(struct snake));
  18.         change_status();
  19.         p = next_head;
  20.         if (flag_wisdom_eat == 0)check_wall();
  21.         if (flag_wisdom_eat == 0 && check_bite(next_head) == 1)end_game(3);    
  22. if (next_head->x == food->x && next_head->y == food->y)eat_food();
  23.         else if (flag_wisdom_eat == 0 && next_head->x == bomb->x && next_head->y == bomb->y)eat_bomb();
  24.         else if (flag_wisdom_eat == 0 && next_head->x == poison->x && next_head->y == poison->y)eat_bomb();
  25.         else if (flag_wisdom_eat == 0 && next_head->x == wise->x && next_head->y == wise->y)eat_wisdom();
  26.         else 继续前进
  27. }
  28. void game_begin()
  29. {
  30.         create_wall();
  31.         initialize();
  32.         wall = (struct snake*)malloc(sizeof(struct snake));
  33.         q = (struct snake*)malloc(sizeof(struct snake));
  34.         wall->x = -1 * 2;
  35.         wall->y = -1;
  36.         wall->next = NULL;
  37.         snake_initialize();
  38.         create_food();
  39.         create_bomb();
  40.         create_added_wall();
  41. }
  42. void game_control()//游戏控制
  43. {
  44.         int flag = 0;
  45.         long game_time_10;
  46.         while (1)
  47.         {
  48.                  if (flag_wisdom_eat == 1)eat_wisdom();
  49.                  show_progress();
  50.                  if (score >= 100)go_to_next_stage();
  51.                  get_key_state();
  52.                  Sleep(sleeptime);
  53.                 snake_move();
  54.         }
  55. }
  56. int main()
  57. {
  58.         system("title 聪明的小蛇 By 数媒1701班 李一泓");
  59. welcome();
  60. }

六、测试与调试

七、心得与体会

此次课程设计,我深刻体会到了编程知识积累的重要性。在课设中我遇到了不少难题,但是经过仔细研究,得到解决。一个月的课设结束了,我的收获颇丰,同时也更深刻地认识到要做一个合格的程序员最重要的是严谨。贪吃蛇的设计使我学到了很多东西,为我以后的学习做了引导,点明了方向。

这次课设,我更多学到的是不懂就要问和尽全力尝试,哪怕失败,也要竭尽全力,最后在自己的努力下,取得成功,这种感觉美不可言,成就感十足。相信在不久的将来,我会开创自己的一片天空。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/820901
推荐阅读
相关标签
  

闽ICP备14008679号