以下是一个简单的Flash打地鼠游戏示例代码(ActionScript 3.0),包含基础游戏逻辑和注释说明:
“`actionscript
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.text.TextField;
public class WhackAMole extends Sprite {
private var holes:Array = []; // 地鼠洞数组
private var score:int = 0; // 游戏分数
private var timeLeft:int = 30;// 剩余时间
private var moleTimer:Timer; // 地鼠生成计时器
private var gameTimer:Timer; // 游戏时间计时器
private var scoreText:TextField; // 分数显示
private var timeText:TextField; // 时间显示
public function WhackAMole() {
createGameField();
setupGame();
}
// 创建游戏场地
private function createGameField():void {
// 创建3×3的地鼠洞
for(var i:int = 0; i < 3; i++) { for(var j:int = 0; j < 3; j++) { var hole:Sprite = createHole(); hole.x = 100 + j 150; hole.y = 100 + i 150; addChild(hole); holes.push(hole); } } // 创建分数/时间显示 scoreText = new TextField(); scoreText.text = "Score: 0"; scoreText.x = 50; scoreText.y = 50; addChild(scoreText); timeText = new TextField(); timeText.text = "Time: 30"; timeText.x = 250; timeText.y = 50; addChild(timeText); } // 创建单个地鼠洞 private function createHole():Sprite { var hole:Sprite = new Sprite(); hole.graphics.beginFill(0x663300); hole.graphics.drawCircle(0, 0, 50); hole.graphics.endFill(); return hole; } // 初始化游戏设置 private function setupGame():void { // 创建计时器(每1秒生成地鼠) moleTimer = new Timer(1000); moleTimer.addEventListener(TimerEvent.TIMER, showMole); moleTimer.start(); // 游戏倒计时(30秒) gameTimer = new Timer(1000, 30); gameTimer.addEventListener(TimerEvent.TIMER, updateTimer); gameTimer.addEventListener(TimerEvent.TIMER_COMPLETE, endGame); gameTimer.start(); } // 随机显示地鼠 private function showMole(e:TimerEvent):void { // 随机选择一个洞 var randomIndex:int = Math.floor(Math.random() holes.length); var hole:Sprite = holes[randomIndex]; // 创建地鼠 var mole:Sprite = new Sprite(); mole.graphics.beginFill(0xFF0000); mole.graphics.drawCircle(0, 0, 30); mole.graphics.endFill(); mole.x = hole.x; mole.y = hole.y; mole.name = "mole"; addChild(mole); // 添加点击事件 mole.addEventListener(MouseEvent.CLICK, whackMole); // 自动消失计时器 var moleLife:Timer = new Timer(800, 1); moleLife.addEventListener(TimerEvent.TIMER_COMPLETE, function():void { removeChild(mole); }); moleLife.start(); } // 打击地鼠 private function whackMole(e:MouseEvent):void { var mole:Sprite = e.target as Sprite; if(mole && contains(mole)) { removeChild(mole); score += 10; scoreText.text = "Score: " + score; } } // 更新游戏时间 private function updateTimer(e:TimerEvent):void { timeLeft--; timeText.text = "Time: " + timeLeft; } // 游戏结束 private function endGame(e:TimerEvent):void { moleTimer.stop(); gameTimer.stop(); // 清除所有地鼠 for(var i:int = numChildren -1; i >=0; i–){
if(getChildAt(i).name == “mole”){
removeChildAt(i);
}
}
// 显示最终分数
var endText:TextField = new TextField();
endText.text = “Game Over! Final Score: ” + score;
endText.x = 100;
endText.y = 300;
addChild(endText);
}
}
}
“`
代码说明:
1. 游戏使用ActionScript 3.0编写,创建一个3×3的打地鼠游戏
2. 核心功能包括:
– 随机生成地鼠(红色圆形)
– 点击得分机制(每次+10分)
– 30秒倒计时
– 自动消失的地鼠(800毫秒)
– 实时分数/时间显示
3. 使用Timer类控制游戏节奏
4. 包含游戏结束逻辑和最终分数显示
注意事项:
1. 需要配合Flash开发环境使用(如Adobe Animate)
2. 可调整参数:
– moleTimer间隔(控制地鼠生成速度)
– moleLife持续时间(控制地鼠停留时间)
– 游戏总时长(默认30秒)
3. 可通过修改图形和数值增强游戏性
建议扩展功能:
1. 添加音效(击中/背景音乐)
2. 增加不同分值的地鼠类型
3. 添加难度递增机制
4. 实现高分榜系统
5. 添加更复杂的动画效果
(注:由于Flash技术已逐渐淘汰,建议新项目使用HTML5+JavaScript等现代Web技术实现)