|
一、作品简介 在迪文开发板上,利用动画的描述指针,以及C语言的后台功能,实现一款小游戏制作。 主人公为简体小人,可选择不同的书本进行攻击,敌人是各种数学公式。游戏界面有分数显示。游戏结束后点击屏幕返回开始界面。同时支持待机呼吸灯。 二、工作原理 利用硬件PWM输出,控制外部指示灯,长时间未点击屏幕时,屏幕变暗,同时外部指示灯闪烁,实现待机呼吸灯功能。 三、设计思路 UI设计思路 设置动图36.icl,图标动画40.icl,背景32.icl。动画为四张图片,图标动画为8张图片,背景包含首页,动画页,结算页,关卡选择页,过场页及他们对应的点击效果页。 首页两个基础触控控件一个取消,点击跳转到首页,另一个确定,跳转到过场页面。 过场页面一个基础触控控件,跳转到关卡选择页。 关卡选择页四个控件,一个基础触控,跳转到首页;一个按键返回,返回变量值0001,并跳转到动画页面,变量地址0005;一个增量调节变量地址3010,循环调节1到4,对应关卡选择及图标显示;一个变量图标显示,显示图片,变量地址3010。 动画页面六个控件,一个动画显示,变量地址2020,指针4000;一个变量图标显示,变量地址3010,指针3000;三个按键返回,两个变量地址0005,返回值0000,一个跳转首页,一个跳转结算页面;一个变量地址0000,返回值0001,判断跳跃;一个数据变量显示,显示分数,变量地址2010,三位数,颜色为041F蓝色。 结算页面两个控件,一个数据变量显示,变量地址2010,颜色为黑色;一个基础键控,返回首页。 共计使用15个控件,5个基础键控,4个按键返回,2个数据变量显示,1个动画图标显示,2个变量图标显示,1个增量调节。 待机时呼吸灯亮。 变量地址: 0005判断游戏是否进行,0001判断是否跳跃,3010选择关卡,2020是动画变量地址,2010是分数的变量。 指针:4000为人物指针,3000为障碍指针。 C语言程序设计思路 定义数据变量地址,障碍横坐标变量地址0x3001,人物纵坐标0x4002,分数数值变量地址0x2010,设置判断游戏是否在进行的变量n,变量地址0x0005,同理设置判断是否跳跃的变量m,变量地址0x0000。 自定义函数,跳转页页面函数。 第一部分 变量初始化。人物位移为0,分数100,障碍横坐标800,跳跃初速度0,加速度10,写入分数变量,读取人物纵坐标。开启背光,呼吸灯。 第二部分 进入while(1)循环,利用if分为两个循环,在游戏循环内实现障碍移动、跳跃判断、死亡判断、分数记录,在呼吸灯循环内实现呼吸灯。 读取0005的变量,判断是否n=1,是则进入游戏循环,否则进入呼吸灯循环。 游戏循环 障碍移动每一次循环移动一步。 跳跃判断,如果游戏正在进行(n=1),并且按下跳跃键(m=1),那么进入跳跃程序,改变跳跃初速度,在接下来的循环中速度衰减,直到位移为零。然后每一次判断结束,将纵坐标写入变量地址。 死亡判断,当人物图标的角落的坐标位于障碍物的坐标以内认为发生碰撞,游戏是否进行的变量改为0,并写入变量地址0005,并跳转页面至结算页。 呼吸灯循环 进入while循环,开启呼吸灯,读取变量地址0x0005为n,直到n变为1,初始化变量并跳出循环。 只有在游戏未进行的状态,才会开启呼吸灯,自动息屏的程序。 演示视频: 附件:
|