使用HP39gll制作小游戏“卡丁球”
图1 运动轨迹
矩形ABCD可以用A点和D点的坐标来表示其位置。
移动前矩形为RECT_P(2,2,4,3),移动后矩形表示为
P(2,4,4,5),仅仅加大纵坐标值。
程序结构组成
程序流程如图2所示。
1)程序开启:构建开启动画,规划赛道等。
2)全局变量初识化:初始化部分变量如卡丁球、障
碍物所在赛道编号,下降位移。
3)总循环:维持程序其他部分的持续运行,如按键
检测、绘图、碰撞判断、计分。好听的游戏id
4)卡丁球避障模块:根据按键指示使小球进行左右
躲避运动。
5)障碍物触底判断:在障碍物触底时,复位障碍物
到起始位置,重新从最顶部下降。
6)障碍物下降模块:用来随机产生障碍物,并使其
向下运动。
7)碰撞判断:在物块与小球碰撞时,结束总循环。
8)计分系统:可以进行计分,增强游戏的趣味性。
9)游戏结束:刷新游戏结束画面。
赵宇博(1999-),男,山西太原人,研究方向:数学知识在软件开发中的应用。
图2 游戏流程
3.3 代码分析
说明:为了便于读者理解编程思路,说明问题,相关代码加入了编程常用的双斜线的注释说明(即//开头的语句为注释说明部分),另外,变量替换成了相应意义的英语单词。
3.3.1 游戏开启界面构建
BEGIN
//游戏同心圆开启动画,如图3所示
RECT(0);
FOR Radius FROM 2 TO 156 STEP 4 DO
ARC_P(127,62,Radius,3);
ARC_P(127,62,156- Radius,0);
END;
TEXTOUT_P(“卡丁球”,105,50,2,3);
WAIT(2);
图3 游戏同心圆开启动画
//构建赛道画面,3条赛道,宽度为85
RECT_P(0,0,2,55,127,3,0);
TEXTOUT_P(“分数”+0,20,1,1,3);
LINE_P(0,15,256,15,3);
图4 物体位置变化
3.3.6 卡丁球障碍物碰撞判断,如果发生碰撞则游戏结束
IF DropSum>51 THEN//判断是否发生碰撞,在小球和物块碰撞时结束总循环
图5 游戏结束动画
3.3.7 计分
TEXTOUT_P(“分数:”+Score,20,1,1,0);
Score:=Score+10;
TEXTOUT_P(“分数:”+ Score,20,1,1,3);
END;
END;
4 结 语
在结束了编程工作后,笔者根据自己所制定的目标,并结合学生使用后的效果反馈对“卡丁球”游戏进行评定,游戏图形简洁、美观,游戏可以快速开始、快速结束。但是在游戏运行中,障碍物下落过程不细腻,有些跳动,需要进行改进。针对于此问题,笔者提出了解决方案:一是减小每次下落的步进;二是适当加大一次大循环中的下落步数。这两方面需要配合反复调试,以达到最佳效果。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。