第一篇:Unity3D【飞机大战项目总结】
Unity3D——飞机大战项目总结
学飞机大战好几天了,今天就总结一下飞机大战所学的知识,所遇到的困难,还有常出现在错误。
一:资源包的导入,场景的搭建步骤不在阐述在这包的导入和创建新文件夹在回顾一下Scences存放场景视图,Scripts存放脚本,Resources存放资源包,资源包下有Textures存放图片,Materials存放材质,Audios存放声音,Madels存放模型。
二:脚本的建立
(1)玩家的飞机的前后左右的移动代码如下:
float x = Input.GetAxis(“Horizontal”);//左右移动 float z = Input.GetAxis(“Vertical”);//前后移动 transform.Translate(-x,0,-z);(2)子弹的不停发射我们采用了鼠标事件用if判断代码如下:
if(Input.GetMouseButtonDown(0)||Input.GetKey(KeyCode.Space))//鼠标左键或空格发射子弹
(3)子弹的个数我们用克隆的方法代码如下:
GameObject u=GameObject.Instantiate(yushe,transform.position,Quaternion.identity)as GameObject;//Instantiate有三个参数一个是所克隆的对象,第二个是所克隆的位置,第三个是位置。
(4)在克隆出子弹时,子弹是静止不动的,我们在给它加个力,有于我这个脚本是挂在子弹预设体上的代码如下:
u.rigidbody.AddForce(0,0,-8000);//有三个参数,一个是X轴的力,一个是Y轴的力,一个是Z轴的力。
(5)敌机的飞行就按傻瓜的来所代码如下:
transform.Translate(new Vector3(0,0,-1));//有三个参数,一个是X轴的飞行,一个是Y轴的飞行,一个是Z轴的飞行。
(6)敌机的子弹发射也是傻瓜类型代码如下: float rocketTime=1;//给敌机所发射的时间
rocketTime-= Time.deltaTime;//时间递减 if(rocketTime<=0){//如果时间小于零为真 rocketTime=1;GameObject
aa=GameObject.Instantiate(EnPeoRo2,transform.position,Quaternion.identity)as GameObject;aa.rigidbody.AddForce(0,0,8000);//给敌机子弹加力
(7)子弹的销毁,脚本添加给玩家子弹的预设体上代码如下:
Destroy(this.gameObject,2);//俩个参数一个是销毁目标,而是几秒后所消失
(8)敌机子弹的消失,脚本添加给敌机脚本代码如下:
Destroy(this.gameObject,2);(9)玩家子弹打到敌机时,敌机消失代码如下 void OnTriggerEnter(Collider aa){//添加触发器
if(aa.tag==“PlayRocket”){//如果玩家的子弹碰到标签为PlayRocket则为真 //Debug.Log(collision.gameObject.name);
Destroy(this.gameObject);//销毁目标
}else if(transform.transform.position.z>=227){//当敌机飞出电脑屏幕敌机自动 } } Destroy(this.gameObject);销毁
(10)当敌机子弹打到玩家飞机时则玩家飞机生命减少,若干次销毁代码如下;void OnTriggerEnter(Collider aa){
}
if(aa.tag==“EnenmyRocket”){//打到一次
} i--;//生命建少一次 if(i==0){//当减为零时为真 Destroy(this.gameObject);}//销毁目标
具体代码如下:
玩家飞机代码public class PlayerPlan : MonoBehaviour {
public GameObject yushe;int i=2;// Use this for initialization void Start(){ }
// Update is called once per frame void Update(){
float x = Input.GetAxis(“Horizontal”);float z = Input.GetAxis(“Vertical”);transform.Translate(-x,0,-z);if(Input.GetMouseButtonDown(0)||Input.GetKey(KeyCode.Space)){ GameObject
u=GameObject.Instantiate(yushe,transform.position,Quaternion.identity)as GameObject;
} void OnTriggerEnter(Collider aa){
}
if(aa.tag==“EnenmyRocket”){
} i--;if(i==0){ Destroy(this.gameObject);} } u.rigidbody.AddForce(0,0,-8000);}
玩家子弹代码如下: using UnityEngine;using System.Collections;
public class PlayRicket : MonoBehaviour {
} 敌机子弹代码: using UnityEngine;using System.Collections;
public class EnProRock2 : MonoBehaviour {
public GameObject EnPeoRo2;float rocketTime=1;// Use this for initialization void Start(){ }
// Update is called once per frame void Update(){
} //this.gameObject.rigidbody.AddForce(Vector3.back);Destroy(this.gameObject,2);// Use this for initialization void Start(){ }
// Update is called once per frame void Update(){
rocketTime-= Time.deltaTime;if(rocketTime<=0){ rocketTime=1;GameObject
aa=GameObject.Instantiate(EnPeoRo2,transform.position,Quaternion.identity)as GameObject;
} } aa.rigidbody.AddForce(0,0,8000);} 敌机代码如下: using UnityEngine;using System.Collections;
public class EnenmyPeople2 : MonoBehaviour {
}
if(aa.tag==“PlayRocket”){
} } // Use this for initialization void Start(){ }
// Update is called once per frame void Update(){ } void OnTriggerEnter(Collider aa){ transform.Translate(new Vector3(0,0,-1));//Debug.Log(collision.gameObject.name);
Destroy(this.gameObject);}else if(transform.transform.position.z>=227){ Destroy(this.gameObject);//想了解更多到狗刨学习网
第二篇:飞机大战总结
江西理工大学应用科学学院
个人实习总结
实习类型 教学实习_ 实习单位 智游教育 _ 实习题目 飞机大战 _ 指导教师 看看 _ 所在院系 信息工程系 _ 班 级 电子信息122班 _ 姓 名 看看 _ 学 号 12345678988 _
一、实习时间和地点
时间:2015.06.25-2014.07.05 地点:1栋1503
二、实习的内容
1、介绍
本次实习制作的飞机大战游戏是在VMware Workstation 10软件的虚拟机ios环境下制作的一款桌面游戏,界面简洁流畅、游戏方式简单。
2、流程图
3、功能概述
①
实现闪屏。游戏运行前先显示一张图片,图片显示一段时间然后消失,接着游戏开始启动。
②
实现游戏背景。游戏运行时背景不断下落。
③
实现敌机。敌机随机产生,数量不定,以随机的速度从主屏幕上方下落,当子弹击中敌机,敌机爆炸消失。
④
实现主机。主机只有一架,由鼠标控制移动,移动过程中鼠标击中点始终主机的中心点重合。
⑤
实现子弹。子弹由主机发出,数量不定,连续产生,若子弹飞出主屏幕则自动消失,若子弹击中敌机子弹消失。
4、变量声明
① 背景变量:bgImgv 和bgImgv1 UIImageView * bgImgv;UIImageView * bgImgv1;bgImgv 和bgImgv1是两张背景图片,利用两张图片的交替变化实现背景图片不断下落。
② 敌机变量:djArray、dj、count、vx、vy NSMutableArray * djArray;DjImageView * dj = [[DjImageView alloc] init];Static int count;Float vx;float vy;djArray是储存敌机的数组;dj是敌机这个对象;count是计数变量用来生成敌机;vx是敌机的横向速度,vy是敌机的纵向速度。③ 主机变量:fj FXQImageView * fj;fj是主机这个对象。
④ 子弹变量:zdArray、count、zd、NSMutableArray * zdArray;
Static int count;zdImageView * zd = [[zdImageView alloc] init];zdArray是储存子弹的数组;zd是子弹这个对象;count是计数变量用来生成子弹。
⑤ 闪屏变量:sunli UIImageView * sunli;Sunli是闪屏图片,用来实现闪屏功能。⑥ state Int state;State是开关变量,用来控制程序执行的顺序。
5、程序测试
1)初始化state=2,运行splash函数,加载闪屏图片,让图片逐渐变透明,三秒后完全消失,然后调用stop函数,stop函数将图片移除,使state=0。2)state=0执行调用加载游戏函数loadGame。
3)loadGame函数依次调用加载背景函数loadBg、加载敌机函数loadDj、加载飞机函数loadFj、加载子弹函数,加载完成后state=1。4)State=1执行调用运行游戏函数runGame。
5)runGame函数依次调用运行背景函数runBg、运行敌机函数runDj、运行飞机函数runFj、运行子弹函数runZd。
runBg:实现背景图片不断下落。
runDj:使敌机随机分布随机产生,让敌机以不一样的速度垂直下落。
runFj:利用两张飞机图片交替出现来实现飞机动态。
runZd:实现子弹连续的发射,若子弹飞出主屏幕子弹消失。
6)若子弹击中敌机运行hitDj函数,hitDj函数实现子弹击中敌机时,子弹和敌机消失,即将dj 和zd 从它们所在的数组中移除,敌机移除后立即调用beHit函数,biHit再调用run函数。run函数用敌机爆炸的一系列图片来制造出敌机爆炸后消失的动态效果。
6、游戏运行界面概述
程序运行后主界面如下,敌机随机分布,子弹由主机发射。
三、心得体会
飞机大战的游戏是基于ios虚拟机在VMware Workstation 10软件上实现的,所以通过这次实习,把以前忘掉的,不会的,不熟的知识点重新了一遍,每当遇到问题,自己可以查课本,或者上网,询问老师和同学,增强了自己的自学能力,为以后的学习和工作,打下了坚定的基础。通过此次实训让我更加的了解到自己存在的不足之处例如;自己的马虎,导致一个小小的输入错误,导致出现错误,并且调试也弄不明白是怎么回事,后来发现竟然是变量的混乱造成的,所以在以后的实践中我要更加的仔细,同时我也需要提高自己的实践能力。这次实习使我对编程有了新的认识和定义,其实程序的编程不是枯燥和乏味的,而是包含着轻松和愉悦,每当自己解决了一个刺手的问题后,自己都有一种成功感,我坚信在以后的时间里我一定会更加了解掌握编程,有一个美好的未来。
第三篇:51CTO学院-Cocos2d-x 3.x 项目实战:仿微信飞机大战(射击类游戏)视频教程
QQ/电话:400-851-9651
网址:edu.51CTO.com
Cocos2d-x 3.x 项目实战:仿微信飞机大战(射击类游戏)视频教程
课程目标
让学员了解如何使用Cocos2d-x 3.x开发一款射击类游戏
适用人群
已经掌握cocos2d-x 3.x技术,但缺乏项目实战的程序员。
课程简介
课程目标:
本课程将帮助广大Cocos2d-x学员了解如何使用Cocos2d-x开发一款相对简单的射击类游戏。学员将会了解开发一款完整游戏的基本步骤,并学会如何将《从零开始掌握Cocos2d-x 3.x》中的知识转化为实际的游戏。学员将从这款游戏中学习到如何建立游戏的基本框架、如设置背景音乐、显示欢迎画面、移动飞机、发射子弹、碰撞检测等开发游戏必备的技术。
适合对象:
已经对Cocos2d-x 3.x的基本知识有所了解的开发人员。
学习条件:
1.要求对C++有所了解
2.熟悉Cocos2d-x 3.x的基本技术,如场景、图层、精灵、动作等
课程 游戏效果演示(包括Cocos2d-x学习路线图介绍)[免费观看]
6分钟
本讲演示的飞机大战的效果和功能,我们从本视频课程会学习到哪些知识以及Cocos2d-x学习路线的介绍。游戏的基本架构 [免费观看]
7分钟
本讲主要介绍了游戏中三对场景类和图层类的作用,并演示了相关的效果。这些类包括StartScene、StartLayer、GameScene、GameLayer、GameoverScene和GameoverLayer。
QQ/电话:400-851-9651
网址:edu.51CTO.com 预装载音效文件,并播放、暂停和恢复背景音乐 [免费观看]
12分钟
本讲主要介绍了如何在StartScene中预装载游戏中使用的音效文件(mp3文件),以及如何播放、暂停和恢复背景音乐。显示欢迎界面和动画 [免费观看]
19分钟
本讲主要在开始图层中显示背景图、欢迎图像(飞机大战)以及利用动画技术显示欢迎动画。欢迎界面关闭后,进入游戏场景
19分钟
本讲主要实现了党欢迎动画结束后,进入游戏场景(GameScene)的过程。在本讲中创建了游戏图层和游戏场景,并修改了启动欢迎动画的代码,以便可以在动画播放完毕后通过loadingDone方法进入GameScene。移动背景
22分钟
本讲主要介绍了如何利用两个完全一样的背景图做不简单的背景移动,从而让玩家产生错觉,感觉是飞机在移动。在屏幕上显示带喷气动画的飞机
17分钟
本讲主要介绍了如何在屏幕上放一个带喷气动画的飞机。本讲的核心内容是编写PlaneLayer类以及无限循环播放动画。通过手指任意移动飞机
23分钟
QQ/电话:400-851-9651
网址:edu.51CTO.com
本讲主要介绍了如何利用触摸事件任意移动飞机,以及如何阻止飞机移出边界。让子弹飞(1):建立BulletLayer类的框架
14分钟
本讲主要实现了封装子弹功能的BulletLayer类的框架。让子弹飞(2):初始化和移除子弹
6分钟
本讲主要实现了BulletLayer类的初始化部分以及移除子弹部分。让子弹飞(3):开始和停止射击
22分钟
本讲主要实现了子弹的发射和停止代码(需要通过飞机精灵确定子弹发射的起始位置),并且将子弹图层添加到当前的游戏场景中。编写敌机的容器类:Enemy 13分钟
Enemy类用于存储和获取与敌机的相关信息(如生命值、Rect等),也是敌机精灵的容器类。所以在添加敌机之前,先要实现该类。实现敌机层类EnemyLayer:初始化部分
16分钟
本讲介绍了EnemyLayer的作用,并实现了EnemyLayer中的初始化部分,以及为添加第一类敌机做准备。实现敌机层类EnemyLayer:让第一类敌机动起来
16分钟
QQ/电话:400-851-9651
网址:edu.51CTO.com
本讲主要介绍了如何添加第一类敌机(最小、最多的敌机),并且如何让第一类敌机以不同的速度在随机的位置匀速向下运动。实现敌机层类EnemyLayer:让第二类敌机动起来
13分钟
本讲主要介绍如何在游戏中添加第二类敌机(较大的敌机),该敌机数量较少,运行较慢。实现敌机层EnemyLayer:让第三类敌机动起来
13分钟
本讲主要介绍了如何添加第三类敌机(最大的敌机,需要多发炮弹才能摧毁),并且让第三类敌机从上到下匀速运动。检测第一类敌机和子弹的碰撞
26分钟
本讲主要介绍了如何进行碰撞检测,以及敌机爆炸效果和音效的实现。检测第二类敌机和子弹的碰撞
6分钟
本讲主要介绍了如何检测第二类敌机与子弹碰撞的效果,并实现了第二类敌机爆炸的动画和音效。检测第三类敌机和子弹的碰撞
5分钟
本讲主要介绍了如何检测第三类敌机与子弹碰撞的效果,并实现了第三类敌机爆炸的动画和音效。检测第一类敌机与飞船的碰撞
13分钟
本讲主要介绍了如何实现第一类敌机与飞船的碰撞,并且实现了飞船的爆炸效果。
QQ/电话:400-851-9651
网址:edu.51CTO.com 检测第二类和第三类敌机与飞船的碰撞
2分钟
本讲主要介绍了检测第二类和第三类敌机与飞船的碰撞的方法。多路子弹发射【1】(两排子弹)
12分钟
本讲主要介绍了让飞船从单路转换为多路发射子弹的降落伞的框架类的编写。多路子弹发射【2】
14分钟
本讲将实现添加降落伞和下落的具体代码。多路子弹发射【3】
9分钟
本讲主要介绍了MultiBulletsLayer架构的实现,该类负责显示多路子弹。多路子弹发射【4】
18分钟
本讲主要实现了MultiBulletsLayer类的相关代码。多路子弹发射【5】
8分钟
本讲会介绍如何检测降落伞和飞船的碰撞,并在多路子弹和单路子弹之间进行切换。多路子弹与敌机的碰撞检测
6分钟
QQ/电话:400-851-9651
网址:edu.51CTO.com
本讲介绍了如何进行多路子弹与敌机的碰撞检测,并让敌机产生爆炸效果。超级炸弹【1】
4分钟
本讲主要介绍了UFOLayer类中添加超级炸弹降落伞的框架部分的实现。超级炸弹【2】
8分钟
本讲介绍了如何实现超级炸弹降落伞。摧毁所有敌机
5分钟
本讲会实现一些方法,用于摧毁所有的敌机。这些方法将在触摸超级炸弹时被调用。
引爆超级炸弹
25分钟
本讲会介绍如何在屏幕上显示超级炸弹,如何进行超级炸弹降落伞与飞船碰撞检测,以及如何引爆超级炸弹。
飞船被摧毁处理【1】
14分钟
本讲主要介绍当飞船(plane)被摧毁后,如何切换到游戏结束场景。
飞船被摧毁处理【2】
27分钟
本讲主要介绍当飞船(plane)被摧毁后,如何切换到游戏结束场景(具体实现部分)。
QQ/电话:400-851-9651
网址:edu.51CTO.com 在暂停游戏时阻止触摸事件
9分钟
本讲主要介绍了如何在暂停游戏时阻止触摸事件的传递。
实现暂停/恢复和当前分数显示牌
20分钟
本讲会完成左上角暂停/恢复和当前分数显示牌的实现代码。其中需要和NoTouchLayer配合使用。
利用ControlLayer累加当前的分数
5分钟
本讲将介绍如何使用ControlLayer中的方法累加并更新当前获得的分数。
将当前获得的分数传入PlaneLayer 3分钟
本讲主要介绍了如何修改PlaneLayer类的代码,将score传入PlaneLayer 38 在游戏启动时装载历史最高分(游戏已经完成)
5分钟
最后的收尾工作,装载历史最高分。
第四篇:大战60天劳动竞赛总结文档
XXXX公司“大战60天劳动竞赛”总结
根据公司《关于开展“大战六十天,确保XX目标双过半”劳动竞赛的通知》精神,电子电源公司结合公司党委“我为XX做贡献”宣传教育活动,积极组织车间员工投身劳动竞赛活动中,加强组织领导、明确目标任务、紧扣时间节点、适时检查考核,尽可能调动一切积极因素,采取一切措施,想尽一切办法,经过全体员工的共同努力,竞赛项目完成情况良好,现总结如下:
一、领导重视,组织得力。车间成立劳动竞赛活动领导小组全面负责,及时进行了宣传和动员,充分调动和发挥基层班组的积极性和主动性,车间将生产任务落实到班组,班组落实到员工,任务层层分解,责任层层落实,做到人人头上有指标,个个肩上有担子,整个车间你追我赶,营造了一种良好的竞赛氛围。
二、周密部署,合理安排。根据生产处下达的竞赛项目和时间节点,车间制定详细的劳动竞赛计划,正排工序,反推节点,注重生产过程控制,适时协调解决问题,始终牢固树立“产品质量第一”,“没有质量就没有进度”和“没有质量就没有效益”的思想,精心组织,科学安排,主动协调,充分发挥各班组的作用,调动各种资源,从生产准备、工艺技术支持、生产过程控制协调、产品质量监督检查等全程控制,各项任务完成良好。
三、竞赛活动有序开展
1、活动小组每周组织竞赛项目检查。重点关注生产准备、工艺技术支持、生产过程控制协调、产品质量监督检查等全程控制,通
过每天的生产碰头会及时协调处理各种生产问题,确保项目的受控。
2、大力宣传,通过看板、黑板报张贴宣传标语口号,营造活动氛围,为生产加油鼓劲。
3、组织劳动竞赛突击队,抢时间、抢进度、抓质量,树立一切为了竞赛项目的思想,抓好员工的思想素质建设,整个车间步调一致,协同作战,完成各项军民品任务,劳动竞赛其间,车间员工积极响应工厂号召,主动放弃休息时间,义务加班讲奉献,累计达500人次近1万小时。
4、各项任务完成良好(举例项目)。
通过本次劳动竞赛活动的开展,XX车间员工的生产积极性进一步提高,车间突击生产能力得到了有效发挥,各种资源进一步整合,整个车间正逐步形成科学、有序、合理的生产局面,在此基础上,车间将不断总结竞赛活动经验,再接再厉,确保全年各项生产任务的顺利完成,为实现XX目标贡献力量。
XX公司 二〇一〇年六月三十日
第五篇:scratch3.0_前置课_第九讲飞机大战讲义无logo
软件编程系列课讲义
Scratch前置课第九讲:飞机大战
一、教学目标
1、掌握播放声音()等待播完、克隆【克隆(自己)、当作为克隆体启动时、删除此克隆体】、在()和()之间取随机数、重复执行直到()、广播【广播()、当接收到()】、变量【将()设为()、将()增加】的积木脚本使用。
2、学习积木的组合使用。
二、主要程序脚本
编号
详细内容
功能描述
【1】
“播放声音()等待播完”
播放指定的声音,声音播放结束再执行后面的脚本
(可选选项为角色中的声音名称)
【2】
“克隆(自己)”
以递归的方式克隆指定角色
(克隆选项为各个角色的名称)
【3】
“当作为克隆体启动时”
当角色作为克隆体被创建时执行该积木下方的程序脚本
【4】
“删除此克隆体”
删除相应的克隆体
(只能在“当作为克隆体启动时”积木下使用)
【5】
“重复执行直到()”
该积木内的脚本一直执行直到指定的条件为真
【6】
“在()和()之间取随机数”
返回从第一个指定数到第二个指定数之间,包含两个端点的伪随机数
(可填入整数或小数,前后数字均为整数时返回值为整数)
【7】
“广播()”
用于角色发送消息指令
【8】
“当接收到()”
用于角色接收指定的广播消息,接收后执行该积木下方的程序脚本
(接收内容为建立的广播消息)
【9】
“将()设为()”
用于给指定的变量设置为指定的字符串或数字
(变量选项为建立的变量名;设为数字时舞台区小数点后可显示六位)
【10】
“将()增加()”
按给定的值更改指定变量
三、课堂准备
编号
名称
内容
来源
备注
【1】
PPT课件
课堂全流程演示文稿
火星科学盒官网
【2】
课程资料
PPT课件、讲义、视频
火星科学盒官网
【3】
学生上课使用器材
笔记本电脑或者台式电脑
老师自备
电脑建议使用Windows系统,苹果电脑和Linux系统需要从官网上单独下载对应的软件
游戏手柄
火星人商城采购
飞机大战初始程序
网盘链接下载
【4】
编程软件下载
Scratch3.0
火星科学盒官网
火星科学盒官网在线编辑版
离线下载版
安装好后测试一下是否可以使用
四、上课流程
本节课包括7步具体流程:
(1)第1步为引入部分,可以通过一个小故事邀请学生帮助老师一起制作一个飞机大战的小游戏。时长控制在10分钟内。
(2)第2步为角色功能分析,通过展示效果视频分析角色的动作,对任务进行拆分。时长控制在5分钟内。
(3)第3-6步为项目制作,首先任务一为游戏添加背景音乐;之后复习克隆积木的组合使用,实现炮弹的持续发射。任务二中修改敌机脚本使用,实现敌机碰到下边缘时返回起始位置;修改起始位置为随机;使用重复执行直到()实现碰到闪电号时停止移动;最后使用广播和变量的相关积木实现游戏失败和胜利的效果。时长控制在65分钟内。
(3)第7步为总结与巩固,考察对本节课重点知识脚本和脚本逻辑的掌握。时长控制在5分钟内。
上课步骤
主要内容
备注
【第1步】引入
【对应PPT】“开始页”
【时长】10min
【引入】老师有一个好朋友XXX,他一直有一个梦想,就是开着战机在天空中翱翔,但是他年纪还太小了,和大家的年纪一样,他现在还不能实现这个梦想,所以他最近特别沮丧。那为了让XXX开心起来,我就想了一个办法,就是制作一个飞机大战的游戏,让XXX能在游戏中体验一下开着战机翱翔的感觉。那老师现在只做了一部分,剩下的一部分同学们帮助老师一起来完成怎么样?
故事尽量讲得生动有趣,课堂引入时多和学生互动。
【第2步】角色功能分析
【对应PPT】“项目拆解”
【时长】5min
【衔接话术】那下面我们就先来看一下最终要完成的效果,这样我们就能知道接下来要完成哪一部分了,同学们一定要认真看哦
【提问】在视频中敌机是如何移动的?敌机是从上方随机位置出现还是固定位置出现的?什么时候游戏会胜利,什么时候会失败?(学生回答)
【总结】敌机角色从舞台区上方随机位置出现并向下移动,碰到炮弹或舞台下边缘时会消失并重新从上方出现;游戏得分等于50时游戏胜利,敌机和闪电号碰到时游戏失败。
点名提问学生视频中的角色效果。
【第3步】播放背景音乐,炮弹持续发射
【对应PPT】任务一播放背景音乐,炮弹持续发射
【时长】20min
【衔接话术】刚刚我们已经分析了游戏效果,那下面我们就一步步地把游戏补充完整,首先咱们先让游戏能够播放一首好听又激昂的背景音乐。
【提问】可以放在重复执行中使用的播放声音的积木是什么?(学生回答)
【讲解】“播放声音()等待播完”积木可以放在“重复执行”中,因为我们要播放背景音乐,也就是让音乐一直播放,所以要使用到“重复执行”,那么选择用来播放声音的积木就是“播放声音()等待播完”。(等待学生拼接)(程序样例见“第五部分
–
程序1-1”)
【衔接话术】背景音乐已经可以播放了,那下面咱们来补充炮弹这个角色的积木。让闪电号能够不停地发射炮弹。
【讲解】在炮弹这个角色中已经有了这样一组积木,这组积木中角色作为克隆体启动时会显示出来,从闪电号出发,之后会一直向上移动,在碰到边缘和敌机时就会消失。
【提问】我们拼接了这样一组积木,为什么不能实现炮弹持续发射的效果呢?现在这组积木是让克隆体还是让原角色执行的?(学生回答)
【讲解】这组积木是让克隆体执行的,也就是说克隆出新的炮弹后,新的炮弹会从闪电号出发向上发射。但是在炮弹角色中并没有克隆自己的积木,也就是说没有克隆体能够执行这组积木,所以就没有炮弹持续发射的效果。
【提问】如果想让炮弹持续不断地发射,就需要让炮弹不停地克隆自己,使用什么积木能够让炮弹不停地克隆?(学生回答)
【讲解】使用“重复执行”积木让炮弹不停地克隆,为了让炮弹克隆的没有那么快,需要添加“等待()秒”积木,让炮弹每隔0.1秒克隆一次。因为原角色只能停留在原地克隆自己,所以为了不让它影响画面,需要添加“隐藏”积木把原角色隐藏。(等待学生拼接)(程序样例见“第五部分
–
程序1-2”)
1.本节课中用到的基本是学习过的积木,在制作时,主要使用提问的方式带领学生复习;
2.复习克隆相关积木时,重点说明一下克隆自己、当作为克隆体启动时与删除此克隆体积木时通常是组合使用的。
【第4步】任务一梳理
【对应PPT】任务一梳理
【时长】5min
【衔接话术】刚刚已经实现了炮弹持续发射的效果,那老师来考考同学们,看看同学们对积木掌握得怎么样
【提问】如何让多个同样的角色出现在舞台区?(学生回答)
【讲解】使用克隆可以让多个同样的角色出现在舞台区。
【提问】和克隆相关的积木有哪些?(学生回答)
【讲解】和克隆相关的积木有“克隆(自己)”、“当作为克隆体启动时”和“删除此克隆体”
【提问】这三个积木分别能够实现什么样的功能效果?(学生回答)
【讲解】“克隆自己”可以复制原角色,产生新的角色;“当作为克隆体启动时”是让克隆体执行命令;“删除此克隆体”实现删除当前克隆体的效果。
在提问过程中可以进行引导性提示。
【第5步】修改敌机脚本、制作胜利失败
【对应PPT】任务二砖块的随机出现
【时长】25min
【衔接话术】闪电号的炮弹可以不停地发射了,同学们是不是已经准备开着闪电号去大干一场啦?但是现在有一个问题,敌机从上向下飞行,在到达舞台下边缘后就卡住不再动了。它卡在了舞台下边缘,既打不中它,也没有新的敌机出现,这可怎么办呢。下面我们就想办法解决一下这个问题。
【提问】同学们有没有什么办法能够解决呢?(学生自由回答)
【话术】同学们的想法都很不错呀,老师这里也有一个想法,就是让敌机碰到舞台下边缘后就回到初始位置。但是这里有一个问题,没有直接侦测角色碰到舞台下边缘的积木怎么办呢?
【提问】同学们还记得在弹球打砖块那节课中是如何侦测小球碰到舞台下边缘的吗?(学生回答)
【讲解】可以侦测角色的y坐标,当角色的y坐标小于角色放置在舞台下边缘时的y坐标数值,角色就一定碰到了下边缘。可以先在舞台区拖动敌机角色,让敌机的头部贴近舞台下边缘,然后记录一下角色区y后的数值,填入“(y坐标)<()”中去。之后,是实现敌机碰到下边缘时移到初始位置。
【提问】让角色移动到一个固定坐标位置的积木是什么?(学生回答)
【讲解】“移到x()y()”积木让角色移动到一个固定的坐标位置,在这个积木中填入的数值和设置敌机初始位置的积木中的数字是相同的。(等待学生拼接)(程序样例见“第五部分
–
程序2-1”)
【衔接话术】运行作品之后可以看到,敌机碰到舞台下边缘之后能够返回初始位置了,但是,现在敌机只会从同一个位置出现,这样的话我们只要把闪电号移动到那个位置的下面就一定能够打中敌机。这样的游戏真没意思,XXX也肯定不会喜欢的。下面咱们就修改一下积木,让敌机能够从舞台区上方的随机位置出现。
【提问】敌机从一条横线的随机一个位置出现时,敌机的哪个坐标是不变的,哪个坐标是变化的?(学生回答)
【讲解】在一条横线上,角色的y坐标是固定不变的,x坐标是改变的。
【提问】能够让x坐标取到随机数的积木是什么?(学生回答)
【讲解】“在()和()之间取随机数”积木,可以将x坐标设为随机。在这个积木中填入的数字应该在-180~180之间,之后,取随机数的积木应该放在敌机角色的脚本中三个“移到x()y()”中x坐标的后面。因为这三个积木都是为了让敌机移到初始出发的位置。(等待学生拼接)(程序样例见“第五部分
–
程序2-2”)
【衔接话术】到这里,我们的游戏主体就完成了,现在可以控制闪电号去攻击敌机了。既然咱们制作的是一个游戏,那这个游戏肯定会有失败和胜利的情况。下面我们就先来完成游戏失败。
【提问】同学们还记得游戏什么时候会失败吗?(学生自由回答)
【讲解】在敌机和闪电号碰到的时候游戏会失败,游戏失败的时敌机会先停止移动,之后,失败角色显示并停止游戏。也就是说敌机会一直移动直到碰到闪电号,能够让敌机一直不停地向下移动使用的是“重复执行”,现在让敌机碰到闪电号时停下来,也就是给重复执行添加了一个停止条件。
【提问】给重复执行添加了一个停止条件的积木是什么呢?(学生回答)
【讲解】“重复执行直到()”在满足“直到”后填入的条件时,就会停止这个积木中的脚本,向下执行其他脚本。现在让敌机一直移动直到碰到闪电号,应该在“直到”后面填入的是“碰到(闪电号)”,然后把“重复执行”积木替换成刚刚拼好的“重复执行直到(碰到闪电号)”。(等待学生修改)(程序样例见“第五部分
–
程序2-3”)
【衔接话术】现在,敌机已经停下来了,下面就是让失败角色显示,并且停止游戏了。
【提问】敌机停止移动后,失败角色就要显示出来。失败角色如何能够知道敌机已经停止移动了呢?(学生回答)
【讲解】应该使用广播,让敌机在碰到闪电号后广播消息,失败在接收到消息之后,使用“显示”积木显示出来,之后使用“停止全部脚本”来停止游戏。
【提问】敌机在碰到闪电号之后才会广播失败消息,应该把“广播(失败)”放在敌机脚本积木的什么位置呢?(学生回答)
【讲解】应该放在“重复执行直到()”的下面,因为敌机碰到闪电号后就会执行“重复执行直到()”积木下的命令。(等待学生拼接)(程序样例见“第五部分
–
程序2-4和程序2-5”)
【衔接话术】到这里,失败效果就制作完成了,接下来就是添加游戏胜利的效果。游戏是在得分等于50的时候胜利,所以我们需要先添加得分,炮弹每击中一次敌机就得一分。
【提问】需要新建什么来记录游戏的得分?能够实现得分增加的积木是什么?为得分设置初始值的积木是什么?(学生回答)
【讲解】需要添加变量来记录得分,使用“将(得分)增加()”可以实现得分的增长,使用“将(得分)设为()”来设置得分的初始值。敌机碰到炮弹时得分才会增加,因此“将(得分)增加()”放在敌机角色脚本“如果碰到炮弹那么…”的里面。(等待学生拼接,拼接完成后给出答案检查)(程序样例见“第五部分
–
程序2-6”)
【衔接话术】得分已经添加完成了,接下来实现得分等于50时游戏胜利的效果。
【提问】游戏胜利时显示的效果有什么?(学生回答)
【讲解】游戏胜利时胜利角色会显示,之后游戏停止。让敌机角色一直判断得分是否等于50,在得分等于50时给胜利角色发送广播,胜利角色接收到广播胜利后,显示并停止游戏。也就是如果得分=50,那么广播胜利。(等待学生拼接,之后给出答案检查)(程序样例见“第五部分
–
程序2-7和程序2-8”)
1.在敌机从上方随机边缘出发这一步中,在()和()之间取随机数这个积木应该放在三个移到x()y()中;
2.在实现失败和胜利效果时,注意提醒学生需要拼接脚本的积木。
【第6步】任务二梳理
【对应PPT】任务二梳理
【时长】5min1、这组积木拼接在了哪个角色上;
2、实现了什么样的效果?
在提问过程中可以进行引导性提示。
【第7步】总结与巩固
【对应PPT】总结与巩固
【时长】5min
【衔接话术】同学们这节课表现得非常棒,和老师一起帮助XXX制作了一个飞机大战的游戏,XXX收到这个游戏后肯定会特别开心的。下面呢,还有一个练习题要考考大家。
【我问你答】
在提问练习题时,可以先给出:记录每一次游戏得分,所以得分应该从0开始增加。这样的提示。
Q.小呆想要用变量记录每一次游戏的得分,这样拼接脚本可以实现吗,为什么?
A.不可以,因为没有设置变量的初始值,得分不是从0开始增加的。
五、主要程序说明
程序样例编号
程序样例与说明
对应的角色
1-1
(任务一最终版程序的一部分)
【程序1-1描述】作品运行后,不停播放背景音乐。
【背景】
1-2
(任务一最终版程序的一部分)
【程序1-2描述】作品运行后,炮弹原角色隐藏,每隔0.1秒有一个新的炮弹出现在舞台区。
【炮弹】
2-1
【程序2-1描述】敌机从(-74,180)的位置出发向下移动,被炮弹击中时发出爆炸声音并回到初始位置,到达舞台下边缘后也回到初始位置。
【敌机】
2-2
【程序2-2描述】敌机从舞台区上边缘的随机位置出发向下移动,被炮弹击中时发出爆炸声音并回到初始位置,到达舞台下边缘后也回到初始位置。
2-3
【程序2-3描述】敌机从舞台区上边缘的随机位置出发向下移动,被炮弹击中时发出爆炸声音并回到初始位置,到达舞台下边缘后也回到初始位置,在碰到闪电号时,敌机会停止移动。
2-4
【程序2-4描述】敌机碰到闪电号时会停止移动,之后广播失败消息。
2-5
(任务二的最终版程序的一部分)
【程序2-5描述】失败角色在接收到敌机发送的失败消息后会显示出来,并停止游戏运行。
【失败】
2-6
【程序2-6描述】作品运行后,得分初始化为0,敌机从舞台区上边缘随机位置出发向下移动,被炮弹击中后得分加1,播放声音爆炸并回到初始位置,继续向下移动。碰到闪电号时停止移动。
【敌机】
2-7
(任务二的最终版程序的一部分)
【程序2-7描述】得分=50时,敌机广播胜利消息。
2-8
(任务二的最终版程序的一部分)
【程序2-8描述】胜利角色接收到胜利消息后显示出来,之后停止游戏
【胜利】