AS3小游戏:猜大小
每次只发一张牌。第一次牌之后,玩家必须猜出比下一张大还是小。
这里使用20张标数分别为1~20的牌。
package { import flash.display.*; import flash.events.*; import flash.text.*; public class HighLow extends MovieClip { // 常量 static const numCards:uint = 20;//牌的数量 static const cardSpacing:Number = 90;//间距 static const cardX:Number = 50; static const cardY:Number = 160; // 游戏对象 private var cards:Array; private var buttonHigher:ButtonHigher; private var buttonLower:ButtonLower; // 当前牌值以及新牌值 private var currentCard:uint; private var newCard:uint; // 创建两个按钮 public function startHighLow() { cards = new Array(); //创建两个按钮 buttonHigher = new ButtonHigher(); buttonLower = new ButtonLower(); buttonHigher.addEventListener(MouseEvent.CLICK, clickedButtonHigher); buttonLower.addEventListener(MouseEvent.CLICK, clickedButtonLower); // 添加第一张牌 addCard(); currentCard = newCard; setButtons(); } //添加一个新牌 private function addCard() { // 选择新的牌值并创建牌对象 newCard = Math.floor(Math.random()*numCards+1); var card:Cards = new Cards(); card.gotoAndStop(newCard); // 放置牌 card.x = cardX + cards.length*cardSpacing; card.y = cardY; addChild(card); //把牌添加到清单里 cards.push(card); } // 设置按钮位于最新牌的下方 private function setButtons() { buttonHigher.x = cardX + (cards.length-1)*cardSpacing; buttonHigher.y = cardY + 75; buttonLower.x = cardX + (cards.length-1)*cardSpacing; buttonLower.y = cardY + 110; addChild(buttonHigher); addChild(buttonLower); } // 按下 higher 按钮 private function clickedButtonHigher(mouseEvent:MouseEvent) { addCard(); checkCard("higher"); } // 按下 lower 按钮 private function clickedButtonLower(mouseEvent:MouseEvent) { addCard(); checkCard("lower"); } // 检查玩家的移动 private function checkCard(choice:String) { var correct:Boolean = true; if (choice == "higher") { // 选择更大,看是否正确 if (newCard <= currentCard) { correct = false; } } else if (choice == "lower") { // 选择最小,看是否正确 if (newCard >= currentCard) { correct = false; } } // 正确,处理下一张牌 if (correct) { if (cards.length == 6) { // 所有六张牌都发出,玩家赢 removeButtons(); gotoAndStop("gamewon"); } else { // 将按钮设置在下一张牌下方 currentCard = newCard; setButtons(); } } else { // 猜错了 removeButtons(); gotoAndStop("gameover"); } } // 游戏结束时移除按钮 private function removeButtons() { removeChild(buttonHigher); removeChild(buttonLower); } // 结束时清除所有卡片 public function cleanUp() { for(var i:int=0;i<cards.length;i++) { removeChild(cards[i]); } cards = new Array(); } } }