AS3.0实现扎气球游戏

需要准备的素材:一张剪刀图片PlayerImage,一张背景图片BackImage,还有一组气球图片EnemyImage(建议五个不同颜色的),一个音频文件Pop,将这些素材添加到库中,设置成影片剪辑,且需要修改属性。

.


注意,EnemyImage影片剪辑里面有五个关键帧,分别对应五个不同颜色的气球。



注意:

balloons.fla文件和Games文件需要在同一文件夹下面。需修改balloons.fla的文档类


源码:

package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.*;
import flash.events.*;
import flash.geom.Rectangle;
import flash.media.Sound;
import flash.text.*;

public class Games extends flash.display.MovieClip{
public static const STATE_INIT:int = 10;//初始化
public static const STATE_PLAY:int = 20;//启动
public static const STATE_END_GAME:int = 30;//结束
public var gameState:int = 0;//游戏状态
public var score:int = 0;//分数
public var chances:int = 0;//错过个数
public var bg:MovieClip;//背景
public var enemies:Array;//气球数组
public var player:MovieClip;//剪刀
public var level:Number = 0;//等级

public var scoreLabel:TextField = new TextField();//分数标题
public var levelLabel:TextField = new TextField();//等级标题
public var chancesLabel:TextField = new TextField();//错过标题
public var scoreText:TextField = new TextField();//分数显示框
public var levelText:TextField = new TextField();//等级显示框
public var chancesText:TextField = new TextField();//遗漏显示框

public const SCOREBOARD_Y:Number = 380;//设置平行线

public function Games(){
addEventListener(Event.ENTER_FRAME,gameLoop);//添加事件监听
bg = new BackImage();//定义背景色
addChild(bg);//添加到舞台
scoreLabel.text = "Score:";//分数标题内容
levelLabel.text = "Level:";//等级标题内容
chancesLabel.text = "Chances:";//遗漏内容
scoreText.text = "0";//默认分数
levelText.text = "1";//默认等级
chancesText.text ="0";//默认遗漏
scoreLabel.y = SCOREBOARD_Y;//设置水平线
levelLabel.y = SCOREBOARD_Y;//设置水平线
chancesLabel.y = SCOREBOARD_Y;//设置水平线
scoreText.y = SCOREBOARD_Y;//设置水平线
levelText.y = SCOREBOARD_Y;//设置水平线
chancesText.y = SCOREBOARD_Y;//设置水平线
scoreLabel.x = 5;//设置间距
scoreText.x = 50;//设置间距
chancesLabel.x = 105;//设置间距
chancesText.x = 155;//设置间距
levelLabel.x = 205;//设置间距
levelText.x = 260;//设置间距
addChild(scoreLabel);//添加到舞台
addChild(scoreText);//添加到舞台
addChild(levelLabel);//添加到舞台
addChild(levelText);//添加到舞台
addChild(chancesLabel);//添加到舞台
addChild(chancesText);//添加到舞台
gameState = STATE_INIT;//更改游戏状态

}

//游戏循环
public function gameLoop(e:Event):void{
switch(gameState){
case STATE_INIT://初始化游戏
initGame();
break;
case STATE_PLAY://启动游戏
playGame();
break;
case STATE_END_GAME://结束游戏
endGame();
break;
}
}

//初始化
public function initGame():void{
score = 0;
chances = 0;
player = new PlayerImage();
enemies = new Array();
level = 1;
levelText.text = level.toString();
addChild(player);
player.startDrag(true,new Rectangle(0,0,550,400));
gameState = STATE_PLAY;
}

//开始游戏
public function playGame():void{
player.rotation +=15;
makeEnemies();
moveEnemies();
testCollosions();
testForEnd();
}

//生成气球
public function makeEnemies():void{
var chance:Number = Math.floor(Math.random()*100);
//trace(chance);
var tempEnemy:MovieClip;
if(chance<2+level){
tempEnemy = new EnemyImage();
tempEnemy.speed = 3+level;
tempEnemy.gotoAndStop(Math.floor(Math.random()*5)+1);
tempEnemy.y =435;
tempEnemy.x = Math.floor(Math.random()*515);
addChild(tempEnemy);
enemies.push(tempEnemy);
}
}

//气球移动
public function moveEnemies():void{
var tempEnemy:MovieClip;
for(var i:int = enemies.length-1;i>=0;i--){
tempEnemy = enemies[i];
tempEnemy.y -= tempEnemy.speed;
if(tempEnemy.y<-35){
chances++;
chancesText.text = chances.toString();
enemies.splice(i,1);
removeChild(tempEnemy);
}
}
}

//碰撞检测
public function testCollosions():void{
var sound:Sound = new Pop();
var tempEnemy:MovieClip;
for(var i:int=enemies.length-1;i>=0;i--){
tempEnemy = enemies[i];
if(tempEnemy.hitTestObject(player)){
score++;
scoreText.text = score.toString();
sound.play();
enemies.splice(i,1);
removeChild(tempEnemy);
}
}
}

//监测和升级
public function testForEnd():void{
if(chances>=5){
gameState = STATE_END_GAME;
}else if(score>level*20){
level++;
levelText.text = level.toString();
}
}

//结束游戏
public function endGame():void{
for(var i:int = 0;i<enemies.length;i++){
removeChild(enemies[i]);
}
enemies = [];
player.stopDrag();
}
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现stm32机械臂气球的代码需要考虑以下几个方面。 首先,需要了解stm32芯片的GPIO控制方式。通过配置不同的GPIO引脚作为输出引脚,可以控制机械臂的运动。 其次,需要使用适合的气泵来气球。可以将气泵接到stm32的一个GPIO引脚上,并设置该引脚为输出模式。通过控制GPIO引脚的高低电平来控制气泵的开关状态,实现气泵的启停控制。 在具体的代码实现中,可以设计一个函数用于控制机械臂的运动,例如`armControl()`函数。在该函数中,可以利用stm32的GPIO库函数来设置相应的引脚状态,从而控制机械臂的动作。 通过调用`armControl()`函数和控制气泵的GPIO引脚,可以实现机械臂气球的代码。 示例代码如下: ```c #include "stm32f4xx.h" #define ARM_GPIO_PIN GPIO_Pin_0 #define PUMP_GPIO_PIN GPIO_Pin_1 // 机械臂控制函数 void armControl(uint8_t state) { if (state == 1) { // 控制机械臂动作 GPIO_SetBits(GPIOA, ARM_GPIO_PIN); } else { // 控制机械臂停止 GPIO_ResetBits(GPIOA, ARM_GPIO_PIN); } } int main(void) { // 初始化GPIO引脚 GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = ARM_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = PUMP_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); while (1) { // 开启气泵 GPIO_SetBits(GPIOA, PUMP_GPIO_PIN); // 机械臂动作 armControl(1); // 延时一段时间 // 关闭气泵 GPIO_ResetBits(GPIOA, PUMP_GPIO_PIN); // 停止机械臂动作 armControl(0); // 延时一段时间 } } ``` 需要注意的是,以上代码只是一个基本的示例,具体的GPIO引脚配置和延时时间根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值