第十课 坦克大战¶
今日任务:¶
将经典游戏《坦克大战》还原于scratch程序中,让学生体验真实游戏的设计流程和思路。
(1)玩家可以操控一辆己方坦克进行上下左右移动,在移动过程中,坦克会被障碍物阻挡无法逾越,必须绕道,玩家可以按下A或B键发射子弹,为了避免子弹的连发,程序中添加了防止连发的指令;当玩家的子弹击中障碍物,障碍物会短暂消失,然后还会再度出现,同时,当子弹击中了地方坦克,地方坦克会消失,一会儿还会随机出现。
(2)地方坦克会在第三个不同的位置随机出现,并且可以边移动边发射子弹,敌方子弹击中障碍物会击毁障碍物,同时,敌方坦克击中castle或者击中己方坦克,游戏gameover!
本课重难点:¶
任务拆解:¶
程序分析:¶
(1)背景:可分为正常背景和失败背景;
(2)己方坦克:Xtron的上下左右键控制坦克的移动;A或B键控制坦克发射子弹;发射子弹的瞬间判断坦克的朝向,可以实现向四个不同的方向发射子弹;被障碍物阻挡做出反应;
(3)敌方坦克:在屏幕指定位置出现;在屏幕上移动,移动过程中碰到障碍物和边缘做出反应;可以向四个不同的方向发射子弹;
(4)障碍物:被击中后一段时间内消失不再出现;阻挡坦克。
动手操作:¶
第一步:搞定背景,共两个背景1和2;1为白色背景,2为game over背景!
第二步:搞定己方坦克(Sprite1)。
首先完成Sprite1的绘制工作:
然后搞定Sprite1的脚本:
(1)控制己方坦克上下左右移动的脚本,不解释。
(2)向不同方向开火的脚本的解决方案。
(3)在移动中碰到障碍物或者被敌方坦克子弹击中的解决方案。
第三步:己方坦克(Sprite1)发射子弹解决方案。
第四步:障碍物解决方案。
第五步:敌方坦克解决方案。
第六步:己方坦克子弹解决方案。
第七步:castle“老巢”解决方案。
学案中没有列举出更多的程序,比如另外两个敌方坦克、敌方坦克子弹和其他障碍物的脚本,大同小异,请自行设计!
课后反思:¶
(1)该游戏中没有设置胜利的条件,思考一下?
(2)如何实现坦克朝着castle的方向移动攻击,而不是漫无目的的闲逛?
(3)作为一个游戏来说,没有添加计时器和积分变量显然是不合适的,自行添加吧!