• 2019春第二次课程设计实验报告


    2019春第二次课程设计实验报告

    一、实验项目名称:

    贪吃蛇游戏编写;

    二、实验项目功能描述:

    这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制,
    同时对小蛇数据的保存,如何实现转弯的效果,吃到食物后如何自行增
    加长度;还有就是食物的出现的位置,以及食物的消失;

    三、项目模块结构介绍:

    • 第一步:构造小蛇,在画面中出现一条静止的小蛇,并且用二维数组canvas[High][width]
      对应的元素进行相关数据的输出,当其值是0输出空格,值为-1时输出边框#,值为1时
      输出蛇头@,值为大于1的正数时输出蛇身*。在startup()函数中初始化蛇头在画布的中间位置(canvas[High/2][width]=1),蛇头向左依次生成4个蛇身(for(i=1;i<=4;i++))canvas[High/2][width/2-i]=i+1;),元素分别是2,3,4,5,;

    • 第二步:小蛇的移动,列出小蛇分别向右向上运动后对应二维数组元素变换;假设小蛇元素为54321,其中1为蛇头,5432为蛇身,最大值5为蛇尾。实现将所有大于0的元素加1,得到65432,将最大值变为0;即去除原来的尾巴;再根据对应的移动方向将2对应方向的元素由0变成1;达到移动目的;

    • 第三步:玩家控制小蛇移动,在undateWithInput()函数中按a,s,d,w键改变moveDirection的值,然后调用moveSnakeByDirection()实现小蛇不同方向的移动;

    • 第四步:判断游戏的失败,当小蛇和边框或者自身发生碰撞时游戏结束;

    • 第五步:吃食物增加自身长度,当二维数组canvas[High][eidth]的元素值为-2时输出食物数值F,当蛇头碰到食物食物时长度加1;

    总体模型:

    Int main()
    {
      Startup();     //初始化
      While(1)     //游戏循环执行
      {
       Show();     //显示画面
       updateWithoutInput();    //与用户输入无关的更行
       updateWithInput();      //与用户输入有关的更新
    }
    return 0;
    }
    

    四、实现界面展示:

    五、代码托管链接:

    https://gitee.com/LYL596/game.git

    六、实验总结:

    这一周这样游戏设计感觉比上一个飞机小游戏的细节要难一点点,上一个飞机小游戏做的还是挺成功的,同时自己设计的游戏,玩起来感觉就是很不错,虽然说吧画面看起来有一点点别扭,但是这个都不是事,阻挡不了成功的喜悦。经过一个星期对git的使用,对git上传代码,建立仓库操作还是很熟练,消除了以前怎样上传代码,这个游戏完成了,下一个游戏代码怎样上传这一些问题;贪吃蛇这个游戏在编写过程中遇到sleep()这个在给定的代码头文件不存在,然后就一直运行不了,最后去百度查找之后,需要加一个头文件#include <unistd.h>,其次书本上提供的代码感觉存在一点点问题,起初给定的移动代码,到后面却没有了;然后再运行的时候没有蛇头,这个就属于粗心大意,赋值打错了;这个游戏最难的地方就是小蛇的移动,如果还是书本提供,自己很难想到怎样去实现移动这一操作;每一次完成一个游戏自己感觉还是非常高兴的,毕竟努力的成果。慢慢的应该向更难的方向进军了;

  • 相关阅读:
    数组是个好东西
    排列(permutation) 用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要 求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。
    子序列的和
    韩信点兵
    水仙花数
    阶乘之和
    3n+1问题
    MongoDB 安装
    mysql中bigint在php中表示
    Android之NDK开发
  • 原文地址:https://www.cnblogs.com/lyl68/p/10957360.html
Copyright © 2020-2023  润新知