如何制作一个简单的射击游戏(比CS简单)

射击游戏(1)

第二部分开始写类:

1.首先,打开Flash CS4 (CS3,CS4或CS5之间没有太大的区别)创建一个新项目,然后按OK。打开项目面板。图:新项目

2、点击右边第一个三角形按钮(项目),在下拉菜单中选择"新建项目"。在弹出的新建项目面板中项目名称:填写项目名称。在根文件夹:item中单击右侧的browse按钮,浏览到存储项目的目录,然后按OK。在ActionScript版本中:选择ActionScript 3.0。点击“创建项目”按钮,项目将被完成。图:项目面板

3.将AirRaid.fla文件复制到项目文件夹(保存生产界面)。点击下面的“创建类”图标,在弹出的创建类面板Class:文本框中填写文件名:AirRaid。单击创建类别按钮。这样类就创建好了,类的框架也为我们写好了,我们可以把我们的代码添加到框架中。图:创建一个类

图:填写班级名称

图:类的框架

4.编写AirRaid.as类

AirRaid.as类:文档类AirRaid类是游戏的控制器,绑定了AirRaid.fla负责在界面上生成飞机、大炮、子弹。显示分数和剩余的项目符号数。注册键盘按压,释放侦听器,并接收用户的键盘操作。为冲突检测注册传入帧的事件侦听器。定义一个飞机定时器,随机生成飞机。检查剩余子弹的数量。当子弹数为零时,主角就死了。从界面中移除飞机和大炮,然后跳到重播按钮。

包{

公共类空袭扩展MovieClip {

私人var aa gun:aa gun;//炮兵

私人var飞机:阵列://飞机阵列

私有var项目符号:数组;//项目符号数组

公共变量leftArrow,right arrow:Boolean;

私有var next plane:Timer;//随时生成飞机定时器。

private var shots left:int;//乐谱文本

private var shot shit:int;//项目符号文本

//初始化的分数和项目符号

//生成加农炮加入舞台。

//生成平面和项目符号数组。

//按下键盘释放事件侦听器。

stage . addevent listener(keyboard event。KEY_DOWN,keyDownFunction);

//进入帧事件监听器检测子弹打飞机的碰撞检测。

addEventListener(事件。ENTER_FRAME,checkForHits);

//生成下一个平面

set nextplane();

}

//不时生成飞机

公共函数setNextPlane() {

//1000ms到2000ms生成一架飞机。

next plane . start();

}

公共函数newPlane(事件:TimerEvent) {

//随机边缘、速度和高度

//生成飞机

var p:飞机=新飞机(侧面、速度、高度);

//冲突检测

}

}

if((shots left = = 0)& amp;& amp(bullets.length == 0)) {

endGame();

}

}

//按键盘。

公共函数keyDownFunction(event:keyboard event){

if (event.keyCode == 37) {

leftArrow = true

} else if (event.keyCode == 39) {

rightArrow = true

} else if (event.keyCode == 32) {

fireBullet();

}

}

//释放键盘

公共函数keyu function(event:keyboard event){

if (event.keyCode == 37) {

leftArrow = false

} else if (event.keyCode == 39) {

rightArrow = false

}

}

//生成新的项目符号

公共函数fireBullet() {

if(shots left & lt;= 0)返回;

var b:Bullet = new Bullet(aagun.x,aagun.y,-300);

addChild(b);

bullets . push(b);

shots left-;

showGameScore();

}

公共函数showGameScore() {

show score . text = String(" score:"+shot shit);

ShowShots.text = String("剩余项目符号:"+shots left);

}

//从数组中获取平面

公共函数removePlane(plane:飞机){

对于(飞机中的变量I){

if(飞机[i] ==飞机){

planes.splice(i,1);

打破;

}

}

}

//获取数组的一个项目符号

公共函数removeBullet(bullet:Bullet) {

for(变量i in bullets) {

if (bullets[i] == bullet) {

bullets.splice(i,1);

打破;

}

}

}

//游戏结束,把界面上的东西去掉。

公共函数endGame() {

//移除平面

for(var I:int = airplanes . length-1;我& gt=0;我- ) {

飞机[我]。delete plane();

}

飞机=空;

aa gun . delete gun();

aagun = null

//删除侦听器

stage . removeeventlistener(keyboard event。KEY_DOWN,keyDownFunction);

stage . removeeventlistener(keyboard event。KEY_UP,keyu function);

removeEventListener(事件。ENTER_FRAME,checkForHits);

next plane . stop();

nextPlane = null

gotoAndStop(" game over ");

}

}

}

5.编写AAGun.as类。

创建类的方法与步骤3相同。首先,选择库中的AAGun组件,并打开“项目”面板来创建一个类。勾选“将类绑定到库组件”前面的框,并单击“使用选定的库组件”单选按钮。图:绑定库组件

AAGun类:保税库中的枪械组件,左右移动,检测边界,自动销毁。

包{

导入flash . display . *;

导入flash . events . *;

导入flash . utils . gettimer;

公共类AAGun扩展MovieClip {

静恒速:Number = 150.0;

private var last time:int;//控制运动的计时器

公共函数AAGun() {

//枪的初始位置

this.x = 275

this.y = 340

//练习

addEventListener(事件。ENTER_FRAME,move gun);

}

公共函数moveGun(event:Event) {

//获取时差

var time passed:int = getTimer()-last time;

last time+= time passed;

//当前位置

var newx = this.x

//向左移动

if (MovieClip(parent)。左箭头){

newx-= speed * time passed/1000;

}

//向右移动

if (MovieClip(parent)。向右箭头){

newx+= speed * time passed/1000;

}

//检测边界

if(newx & lt;10)newx = 10;

if(newx & gt;540)newx = 540;

//更新位置

this.x = newx

}

//从屏幕上移除枪支和事件。

公共函数deleteGun() {

parent . remove child(this);

removeEventListener(事件。ENTER_FRAME,move gun);

}

}

}

新文件plane.as

飞机类:国家图书馆中的飞机部件。随机飞机,随机速度,五种飞机样式,检测是否飞出边界,检测被子弹击中。自动破坏和爆炸效果。

//飞机的速度和方向

//控制运动的计时器

//左右移动

//检测边界

//检测到碰撞,子弹击中飞机,跳转到标签为“爆炸”的帧,演示爆炸动画。

//从舞台上移除平面和事件。

新文件Bullet.as

Bullet类:bond库中的bullet组件。控制子弹的飞行方向,检测子弹是否飞出屏幕。

包{

导入flash . display . movie clip;

导入flash . events . event;

导入flash . utils . gettimer;

导入flash . utils . timer;

导入flash . events . timer event;

public类Bullet扩展MovieClip {

私有var dy:Number;//子弹的速度和方向。

private var last time:int;

公共函数Bullet(x,y:Number,speed: Number) {

//初始位置

this.x = x

this.y = y

//获取速度

dy =速度;

//动画

last time = getTimer();

addEventListener(事件。ENTER_FRAME,move bullet);

公共函数moveBullet(event:Event) {

//获取时差

var time passed:int = getTimer()-last time;

last time+= time passed;

//项目符号移动

this . y+= dy * time passed/1000;

//子弹划过屏幕上方。

如果(this.y & lt0) {

delete bullet();

//从舞台上移除项目符号和事件。

公共函数deleteBullet() {

MovieClip(父)。remove bullet(this);

parent . remove child(this);

removeEventListener(事件。ENTER_FRAME,move bullet);

在所有的类文件都保存好之后,回到AirRaid.fla的场景,按Ctrl+Enter进行测试,看看你的结果!

简单学个Flash,很好学,还会做动画,很有用。大型游戏要学VB或者C++,游戏质量不好。3DMAX是做特效的。想做游戏,不是一两年就能做出来的。有教这个的课。