萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 軟體知識 >  >> 影像處理 >> Flash 教學

Flash AS3 迷你遊戲:打字遊戲完整原始碼(單檔 30 行)

純代碼實現的打字遊戲:隨機字母從頂部下落,玩家鍵盤輸入對應字母消除,支援分數統計、難度隨時間遞增,展示 AS3 事件驅動、陣列管理、動態文字建立核心技術。

遊戲效果

  • 隨機大小、顏色、水平位置的字母持續下落。
  • 按鍵匹配字母即消除並得分。
  • 字母落出畫面底部自動移除。

完整代碼(貼至第 1 幀動作面板即可運行)

var arr:Array = new Array();
var time:uint = 0;
var angle:Number = 0;
var zfun;

[SWF(width=800, height=465, backgroundColor=0xffffff, frameRate=24)]

this.addEventListener(Event.ENTER_FRAME, function(e:Event):void {
    time++;
    angle += 0.1;

    if (time >= 13) { // 約每 0.5 秒生成一個
        time = 0;
        var tf:TextField = addChild(new TextField()) as TextField;
        tf.htmlText = '<font size="' + (Math.random()*35+15) + '" color="#' + Math.random()*0xFFFFFF + '">' + String.fromCharCode(int(Math.random()*26+65)) + '</font>';
        tf.x = Math.random() * 760 + 20;
        tf.y = -10;
        tf.name = String(Math.random()*10 - 5); // 用於水平飄移方向
        arr.unshift(tf);
    }

    for (var i:int = arr.length-1; i >= 0; i--) {
        arr[i].y += 3; // 下落速度
        arr[i].x += Math.sin(angle) * int(arr[i].name); // 正弦波水平飄移

        if (arr[i].y >= stage.stageHeight) {
            removeChild(arr[i]);
            arr.splice(i, 1);
        }
    }
});

stage.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void {
    for (var i:int = arr.length-1; i >= 0; i--) {
        if (arr[i].text == String.fromCharCode(e.keyCode)) {
            removeChild(arr[i]);
            arr.splice(i, 1);
            break;
        }
    }
});

代碼結構解析

  • arr:儲存所有下落字母 TextField 的陣列(unshift 新增、splice 移除)。
  • ENTER_FRAME:主遊戲迴圈,處理生成、移動、邊界檢測。
  • KeyboardEvent.KEY_DOWN:鍵盤輸入檢測,比對 keyCode 與字母 ASCII(65-90 對應 A-Z)。
  • htmlText:動態設定字體大小、顏色、字元。
  • Math.sin(angle):製造左右擺動視覺豐富度。

擴展建議

  • 加入分數顯示 TextField,擊中遞增。
  • 增加生命值、遊戲結束判斷、重新開始按鈕。
  • 使用對象池復用 TextField 減少 GC 壓力。
  • 改用 StageText 或輸入法相容處理中文輸入。

此 30 行極簡代碼包含遊戲核心迴圈、物件池管理、輸入處理、隨機生成、動態渲染等完整遊戲要素,是 AS3 遊戲開發入門的優秀微型專案。

copyright © 萬盛學電腦網 all rights reserved