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();
        }
    }
}

 

posted @ 2013-12-16 22:21  无名盗闪  阅读(229)  评论(0编辑  收藏  举报