【百行代碼說遊戲】ActionScript3.0 小遊戲 【勁舞團】源碼+示範

來源:互聯網
上載者:User

最近學ActionScript3.0  以下為自己寫的一個小遊戲。盡量以最少的代碼,實現功能

遊戲原理:看代碼注釋 

遊戲規則:類似於【勁舞團】遊戲,玩家可以按UP,DOWN,LEFT,RIGHT鍵來操控遊戲。

打掉相應的箭頭則得分,否則失手。

箭頭落到底線沒有被打掉,則為失手。

失手10次,遊戲結束。

得分過30,升一級。難度加大。

 先建一個箭頭的類Baby.as   。提供四種不同造型的箭頭

package  {import flash.display.Sprite;import flash.filters.ConvolutionFilter;/** * ... * @author kkkloveyou */public class Baby extends Sprite {private var color:uint = 0xFFFFFF;private var direction:uint;private const LEFT:uint = 37;private const RIGHT:uint = 39;private const UP:uint = 38;private const DOWN:uint = 40;public  var flag:int = 0;public function Baby(direction:uint):void {this.direction = direction;switch (direction) {case LEFT:drawLeft();break;case RIGHT:drawRight();break;case UP:drawUp();break;case DOWN:drawDown();break;default:break;}}public  function drawRight():void {graphics.lineStyle(3,0xff0000);//左面graphics.moveTo(-60,-30);graphics.lineTo(-60,30);graphics.lineTo(30, 30);graphics.lineTo(30,40);graphics.lineTo(60, 0);graphics.lineTo(30,-40);graphics.lineTo(30, -30);graphics.lineTo( -60, -30);flag = 39;}public  function drawLeft():void {graphics.lineStyle(3,0x00ff00);//右面graphics.moveTo(60,-30);graphics.lineTo(60,30);graphics.lineTo(-30, 30);graphics.lineTo(-30,40);graphics.lineTo(-60, 0);graphics.lineTo(-30,-40);graphics.lineTo(-30, -30);graphics.lineTo(60, -30);flag = 37;}public  function drawUp():void {graphics.lineStyle(3,0x00ffff);//上面graphics.moveTo(-30,60);graphics.lineTo(30,60);graphics.lineTo(30, -30);graphics.lineTo(40,-30);graphics.lineTo(0, -60);graphics.lineTo(-40,-30);graphics.lineTo(-30, -30);graphics.lineTo( -30, 60);flag = 38;}public  function drawDown():void {graphics.lineStyle(3,0x001177);//下面graphics.moveTo(-30,-60);graphics.lineTo(30,-60);graphics.lineTo(30, 30);graphics.lineTo(40,30);graphics.lineTo(0, 60);graphics.lineTo(-40,30);graphics.lineTo(-30, 30);graphics.lineTo( -30, -60);flag = 40;}}}
再建一個控制類Main.as  用來控制遊戲
package{    import flash.display.Sprite;    import flash.events.Event;    import flash.events.KeyboardEvent;    import flash.text.TextField;    import flash.text.TextFormat;    import flash.ui.Keyboard;public class Main extends Sprite{public var arr:Array;//儲存下落箭頭的數組public var time:uint;public var errorTxt:TextField;//錯誤顯示文本public var trueTxt:TextField;//正確顯示文本public var levelTxt:TextField;//等級文本public var meTxt:TextField;//作者文本public var errorCount:int = 0;//錯誤總計變數public var trueCount:int = 0;//正確總計變數public var levelCount:int = 1;//當前關卡等級public var speed:uint = 5;    //箭頭移動速度public function Main(){init();}public function init():void{this.addEventListener(Event.ENTER_FRAME,loopHandler);stage.addEventListener(KeyboardEvent.KEY_DOWN,downHandler);arr = new Array();time = 0;errorTxt = new TextField();trueTxt = new TextField();levelTxt = new TextField();meTxt = new TextField();errorTxt.text = "失手: "+errorCount;trueTxt.text = "得分: " + trueCount;levelTxt.text = "等級: " + levelCount;meTxt.text = "衛哥作品";levelTxt.x = 50;levelTxt.y = 50;errorTxt.x = 50;errorTxt.y = 150;trueTxt.x = 50;trueTxt.y = 250;meTxt.x = 700;meTxt.y = 550;this.addChild(errorTxt);this.addChild(trueTxt);this.addChild(levelTxt);this.addChild(meTxt);}public function downHandler(event:KeyboardEvent):void{errorCount++;if (errorCount >= 10) {stage.removeEventListener(KeyboardEvent.KEY_DOWN, downHandler);this.removeEventListener(Event.ENTER_FRAME,loopHandler);}for(var i:Number = arr.length-1;i>=0;i--){//判斷鍵盤按下的索引值是否和情境裡的字母符合.如果符合則消去var baby:Baby = arr[i] as Baby;if ( baby ){if(baby.flag == event.keyCode){this.removeChild(arr[i]);arr.splice(i,1);trueCount++;errorCount--;        break;}}}if (trueCount >= 30) {levelCount++;//級數升級,得手清零speed += 3;              //級數升級,速度增大,難度增大trueCount = 0;        }errorTxt.text = "失手: "+errorCount;trueTxt.text = "得分: " + trueCount;levelTxt.text = "等級: " + levelCount}public function loopHandler(event:Event):void{time++;if(time>=10){time = 0;    var baby:Baby = new Baby(int(Math.random() * 4) + 37);     //隨機產生箭頭類型    baby.x = stage.stageWidth / 2;    baby.y = 30;this.addChild(baby);arr.unshift(baby);}for(var i:Number = arr.length-1;i>=0;i--){arr[i].y+=speed;                                              //箭頭速度if(arr[i].y>=stage.stageHeight){this.removeChild(arr[i]);arr.splice(i,1);errorCount++;errorTxt.text = "失手: "+errorCount;break;}}if (errorCount >= 10) {stage.removeEventListener(KeyboardEvent.KEY_DOWN, downHandler);this.removeEventListener(Event.ENTER_FRAME,loopHandler);}}}}

 

項目示範地址:http://up.qqhello.com/qzone/73e11069e924b6d6df5198f9440a2403.swf

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.