Записывать эти функции более сложным способом - PullRequest
0 голосов
/ 09 сентября 2011

Я создаю простую скретч-игру (6 карт). Это даже не должно содержать сложной логики. Вы в конечном итоге выигрываете все время;)

Код, который я написал, работает довольно хорошо, но я продолжаю думать, что он может быть лучше. Я не слишком знаком с кодированием, но я учусь шаг за шагом.

У вас есть идеи, чтобы записать это более четко и изощренно?

например. Я попытался отделить оператор IF, который возвращается в каждой функции, поэтому мне нужно было записать его только один раз, но у меня ничего не получилось.

Заранее спасибо за поиск.

//set card variables to 0 and when they're scratched, they're changed to 1
var checkCard1:int = 0, checkCard2:int = 0, checkCard3:int = 0, checkCard4:int = 0, checkCard5:int = 0, checkCard6:int = 0;

leaf1.addEventListener(MouseEvent.ROLL_OVER, cardChecked1);
function cardChecked1 (event:MouseEvent):void {
    checkCard1 = 1;
    if (checkCard1 && checkCard2 && checkCard3 && checkCard4 && checkCard5 && checkCard6  == 1) {

    var myDelay:Timer = new Timer(2000);
    myDelay.addEventListener(TimerEvent.TIMER, showMessage);
    myDelay.start();

    function showMessage(event:TimerEvent):void{
    myDelay.stop();
    gotoAndStop("nowinner");
    }
  }
}

leaf2.addEventListener(MouseEvent.ROLL_OVER, cardChecked2);
function cardChecked2 (event:MouseEvent):void {
    checkCard2 = 1;
    if (checkCard1 && checkCard2 && checkCard3 && checkCard4 && checkCard5 && checkCard6  == 1) {

    var myDelay:Timer = new Timer(2000);
    myDelay.addEventListener(TimerEvent.TIMER, showMessage);
    myDelay.start();

    function showMessage(event:TimerEvent):void{
    myDelay.stop();
    gotoAndStop("nowinner");
    }
  }
}

leaf3.addEventListener(MouseEvent.ROLL_OVER, cardChecked3);
function cardChecked3 (event:MouseEvent):void {
    checkCard3 = 1;
    if (checkCard1 && checkCard2 && checkCard3 && checkCard4 && checkCard5 && checkCard6  == 1) {

    var myDelay:Timer = new Timer(2000);
    myDelay.addEventListener(TimerEvent.TIMER, showMessage);
    myDelay.start();

    function showMessage(event:TimerEvent):void{
    myDelay.stop();
    gotoAndStop("nowinner");
    }
  }
}

leaf4.addEventListener(MouseEvent.ROLL_OVER, cardChecked4);
function cardChecked4 (event:MouseEvent):void {
    checkCard4 = 1;
    if (checkCard1 && checkCard2 && checkCard3 && checkCard4 && checkCard5 && checkCard6  == 1) {

    var myDelay:Timer = new Timer(2000);
    myDelay.addEventListener(TimerEvent.TIMER, showMessage);
    myDelay.start();

    function showMessage(event:TimerEvent):void{
    myDelay.stop();
    gotoAndStop("nowinner");
    }
  }
}

leaf5.addEventListener(MouseEvent.ROLL_OVER, cardChecked5);
function cardChecked5 (event:MouseEvent):void {
    checkCard5 = 1;
    if (checkCard1 && checkCard2 && checkCard3 && checkCard4 && checkCard5 && checkCard6  == 1) {

    var myDelay:Timer = new Timer(2000);
    myDelay.addEventListener(TimerEvent.TIMER, showMessage);
    myDelay.start();

    function showMessage(event:TimerEvent):void{
    myDelay.stop();
    gotoAndStop("nowinner");
    }
  }
}

leaf6.addEventListener(MouseEvent.ROLL_OVER, cardChecked6);
function cardChecked6 (event:MouseEvent):void {
    checkCard6 = 1;

    if (checkCard1 && checkCard2 && checkCard3 && checkCard4 && checkCard5 && checkCard6  == 1) {

    var myDelay:Timer = new Timer(2000);
    myDelay.addEventListener(TimerEvent.TIMER, showMessage);
    myDelay.start();

    function showMessage(event:TimerEvent):void{
    myDelay.stop();
    gotoAndStop("nowinner");
    }
  }
}

1 Ответ

2 голосов
/ 09 сентября 2011

Применять принципы СУХОЙ (не повторять себя), перемещая избыточный код в функции.Я также изменил ваши проверочные переменные на булевы, а не на целые.Если вы используете их только для отмеченного / непроверенного флага, тогда все, что вам нужно, - это логическое значение.

var checkCard1:Boolean = false, checkCard2:Boolean = false, checkCard3:Boolean = false, checkCard4:Boolean = false, checkCard5:Boolean = false, checkCard6:Boolean = false;

function checkAllCards()
{
    if (checkCard1 && checkCard2 && checkCard3 && checkCard4 && checkCard5 && checkCard6)
    {
        var myDelay:Timer = new Timer(2000);
        myDelay.addEventListener(TimerEvent.TIMER, showMessage);
        myDelay.start();

        function showMessage(event:TimerEvent):void{
            myDelay.stop();
            gotoAndStop("nowinner");
        }
    }
}

function cardChecked(event:MouseEvent):void
{
    if (event.currentTarget === leaf1)
    { checkCard1 = true; }
    else if (event.currentTarget === leaf2)
    { checkCard2 = true; }
    else if (event.currentTarget === leaf3)
    { checkCard3 = true; }
    else if (event.currentTarget === leaf4)
    { checkCard4 = true; }
    else if (event.currentTarget === leaf5)
    { checkCard5 = true; }
    else if (event.currentTarget === leaf6)
    { checkCard6 = true; }
    checkAllCards();
}

leaf1.addEventListener(MouseEvent.ROLL_OVER, cardChecked);
leaf2.addEventListener(MouseEvent.ROLL_OVER, cardChecked);
leaf3.addEventListener(MouseEvent.ROLL_OVER, cardChecked);
leaf4.addEventListener(MouseEvent.ROLL_OVER, cardChecked);
leaf5.addEventListener(MouseEvent.ROLL_OVER, cardChecked);
leaf6.addEventListener(MouseEvent.ROLL_OVER, cardChecked);

Я не писал для этого приложение для тестирования, поэтому дайте мне знать, если у вас возникнут проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...