Aiuto per capire javascript

Jakub Lemiszewski

Utente Attivo
5 Dic 2013
119
1
0
Salve, devo fare dei diagrammi uml di un codice js ma ho dei dubbi. Sul codice che posto mi potreste spiegare quali sono le classi, oggetti e metodi e le relazioni tra di loro. Ne ho bisogno per capire il sistema di programmazioni a oggetti di javascript. Se potete farmi vedere con esempi e semmai un semplice esempio di diagramma uml. Grazie del vostro aiuto.
Codice:
(function(library, img, cjs) {


    createjs.mainCodeFunction = function() {
        var scorePerShot = 10;
        var scorePerShotMiss = 5;
        var showPlayAgain = true //to show or not to show paly again button after win/loss
        var levelArray = [
            [1 /*how much baskets per level*/ , 1 /*player number ,possibility to add more players in afuture*/ , 45000 /*level time millsec*/ , true /*is bonus round available*/ , 10000 /*  bonus round time milisec*/ , 6000 /*milisecodns on how fast board moves from on side to another for currentlevel*/ ],
            [12 /*how much baskets per level*/ , 1 /*player number ,possibility to add more players in afuture*/ , 45000 /*level time millsec*/ , true /*is bonus round available*/ , 10000 /*  bonus round time milisec*/ , 5000 /*milisecodns on how fast board moves from on side to another for currentlevel*/ ],
            [13 /*how much baskets per level*/ , 1 /*player number ,possibility to add more players in afuture*/ , 45000 /*level time millsec*/ , true /*is bonus round available*/ , 10000 /*  bonus round time milisec*/ , 4000 /*milisecodns on how fast board moves from on side to another for currentlevel*/ ],
            [14 /*how much baskets per level*/ , 1 /*player number ,possibility to add more players in afuture*/ , 45000 /*level time millsec*/ , true /*is bonus round available*/ , 10000 /*  bonus round time milisec*/ , 3000 /*milisecodns on how fast board moves from on side to another for currentlevel*/ ]

        ]

        mainParentLibrray.titleScreen.addEventListener("mousedown", startScreen);
        createjs.Touch.enable(stage);
        stage.mouseMoveOutside = true;
        mainParentLibrray.level_prompt.addEventListener("mousedown", startLevel);
        mainParentLibrray.level_prompt.visible = false;
        mainParentLibrray.playAgain.visible = false;
        mainParentLibrray.lostMc.visible = false;
        mainParentLibrray.winMc.visible = false;
        mainParentLibrray.lostMc.addEventListener("mousedown", lostClick)
        mainParentLibrray.winMc.addEventListener("mousedown", winClick)
        mainParentLibrray.playAgain.addEventListener("mousedown", playAgainClick)
        mainParentLibrray.bonusPoints.visible = false;
        mainParentLibrray.before_bonus_prompt.visible = false;
        mainParentLibrray.before_bonus_prompt.addEventListener("mousedown", startBonus)
        mainParentLibrray.basket1.visible = false;
        mainParentLibrray.basket2.visible = false;
        mainParentLibrray.basket3.visible = false;
        var side = 0;
        var currentLeve = 0;
        var player;
        var playerNR = 1;
        var madeBasket = 0;
        var score = 0;
        var levelSec;
        var bonSec;
        var tweenShouldEnd = false;
        var currentBonusBasket = mainParentLibrray.basket1;
        var bonus = false;
        var isNormal = true;
        var bonustimerInterVal;
        var startX = mainParentLibrray.basket.x
        var basketBoardSpeed;
        //Start Screen set
        function startScreen() {
            side = 0;
            basketBoardSpeed = levelArray[currentLeve][5];
            mainParentLibrray.basket.visible = true;
            mainParentLibrray.basket.x = startX;
            mainParentLibrray.player1.x = -200;

            mainParentLibrray.player1.visible = false



            bonus = false;
            createjs.shoot = true;
            madeBasket = 0

            mainParentLibrray.score_txt.text = score;
            mainParentLibrray.made_baskets_txt.text = madeBasket;
            mainParentLibrray.titleScreen.visible = false;
            if (levelArray[currentLeve][1] == 4) {
                playerNR = Math.floor((Math.random() * 3) + 1)
            } else {
                playerNR = levelArray[currentLeve][1]
            }

            mainParentLibrray.basket.highlight.visible = false; //Basket higlifhts -> not highlited
            player = mainParentLibrray["player" + playerNR]
            player.visible = true;
            player.gotoAndStop(playerNR - 1);
            mainParentLibrray.level_prompt.level_txt.text = "LEVEL: " + (currentLeve + 1)
            mainParentLibrray.level_prompt.instructions.text = "Make at least " + levelArray[currentLeve][0] + " baskets before time runs out to go to the next level. You have " + (levelArray[currentLeve][2] / 1000) + " seconds";

            mainParentLibrray.level_prompt.visible = true;
            mainParentLibrray.level_prompt.gotoAndStop(playerNR - 1);

        }
        //Level start -> player -> ball -> basket moving
        function startLevel() {
            mainParentLibrray.bball.gotoAndStop(0);
            mainParentLibrray.bball.visible = false;

            mainParentLibrray.level_prompt.visible = false;
            levelSec = (levelArray[currentLeve][2]) / 1000
            mainParentLibrray.time_txt.text = levelSec;
            timerInterVal = setInterval(timeCount, 1000)
            mainParentLibrray.titleScreen.visible = false;
            stage.addEventListener("stagemousemove", mouseMove);
            isNormal = true;
            tweenShouldEnd = false;
            addTweens()
            stage.addEventListener("mousedown", shootAnimationStart);
            setTimeout(setShoot, 50)
        }

        function setShoot() {

            createjs.shoot = false;
        }

        function lostClick() {



        }

        function winClick() {

        }

        function playAgainClick() {
            location.reload();
        }

        function timeCount() {
            levelSec--;
            mainParentLibrray.time_txt.text = levelSec;
            if (levelSec <= 0) {
                isNormal = false;
                tweenShouldEnd = true;
                createjs.Tween._tweens = [];
                clearInterval(timerInterVal)
                stage.removeEventListener("stagemousemove", mouseMove);
                stage.removeEventListener("mousedown", shootAnimationStart);

                if (levelArray[currentLeve][0] > madeBasket) {
                    doLostScreen()
                } else {


                    if (levelArray[currentLeve][3]) {
                        console.log("bonus round is true");
                        doBonusLevel();
                    } else {

                        doNextLevel();
                    }
                }
            }
        }
        //Play again -> when lost game
        function doLostScreen() {
            if (showPlayAgain) {
                mainParentLibrray.playAgain.visible = true;
            }
            mainParentLibrray.lostMc.visible = true;
            mainParentLibrray.lostMc.scoreText.text = score;
        }
        // Winn screen
        function doWinScreen() {
            if (showPlayAgain) {
                mainParentLibrray.playAgain.visible = true;
            }
            mainParentLibrray.winMc.visible = true;
            mainParentLibrray.winMc.scoreText.text = score;
        }
        // Next level 
        function doNextLevel() {
            currentLeve++;
            tweenShouldEnd = true;
            mainParentLibrray.basket1.visible = false;
            mainParentLibrray.basket2.visible = false;
            mainParentLibrray.basket3.visible = false;
            mainParentLibrray.basket.visible = false;
            console.log(tweenShouldEnd);
            mainParentLibrray.bonusPoints.visible = false;
            if (currentLeve >= levelArray.length) {
                doWinScreen();
            } else {
                startScreen();
            }

        }
        //Bonus level -> Basket highlits only to indicate to which one shoot
        function doBonusLevel() {

            mainParentLibrray.basket1.visible = true;
            mainParentLibrray.basket2.visible = true;
            mainParentLibrray.basket3.visible = true;
            mainParentLibrray.basket.visible = false;
            mainParentLibrray.bonusPoints.visible = true;
            mainParentLibrray.basket1.highlight.visible = false;
            mainParentLibrray.basket2.highlight.visible = false;
            mainParentLibrray.basket3.highlight.visible = false;
            mainParentLibrray.before_bonus_prompt.visible = true;

        }
        //Start the bonus stage 
        function startBonus() {
            mainParentLibrray.bball.gotoAndStop(0);
            mainParentLibrray.bball.visible = false;
            createjs.shoot = true;
            mainParentLibrray.before_bonus_prompt.visible = false;
            stage.addEventListener("mousedown", shootAnimationStart);
            setTimeout(setShoot, 50)
            stage.addEventListener("stagemousemove", mouseMove);

            bonSec = (levelArray[currentLeve][4]) / 1000
            mainParentLibrray.time_txt.text = bonSec;
            bonustimerInterVal = setInterval(bonusTimeCount, 1000)
            bonus = true;
            makeAbonus();
        }
        //Countdown
        function bonusTimeCount() {
            bonSec--
            mainParentLibrray.time_txt.text = bonSec;
            if (bonSec <= 0) {
                bonus = false;
                clearInterval(bonustimerInterVal)
                stage.removeEventListener("stagemousemove", mouseMove);
                stage.removeEventListener("mousedown", shootAnimationStart);
                doNextLevel();

            }
        }
        //Different baskets with bonus -> 30pt 50pt 10 pt
        function makeAbonus() {
            var nr = Math.floor((Math.random() * 3) + 1);
            currentBonusBasket.highlight.visible = false;
            currentBonusBasket = mainParentLibrray["basket" + nr];
            currentBonusBasket.highlight.visible = true;
            switch (nr) {
                case 1:
                    currentBonusBasket.nr = 30;
                    break;

                case 2:
                    currentBonusBasket.nr = 50;
                    break;

                case 3:
                    currentBonusBasket.nr = 10;
                    break;
            }

        }

        function addTweens() {
            if (tweenShouldEnd) {
                return;
            }
            var toGoSide;
            switch (side) {
                case 0:
                    toGoSide = 530;
                    break;

                case 1:
                    toGoSide = 63;
                    break;
            }
            createjs.Tween.get(mainParentLibrray.basket).to({
                x: toGoSide
            }, basketBoardSpeed, createjs.Ease.liner).call(addTweens);

            switch (side) {
                case 0:
                    side = 1;
                    break;

                case 1:
                    side = 0;
                    break;
            }

        }
        createjs.shoot_bball = function() {
            mainParentLibrray.bball.visible = true;

            mainParentLibrray.bball.x = player.x;
            mainParentLibrray.bball.y = player.y - 90;
            mainParentLibrray.bball.gotoAndPlay(0);

        }
        //Sound in random positiv and negative 
        function makeAPositiveSound() {
            var tmpString = Math.floor((Math.random() * 25) + 1)
            if (tmpString < 10) {
                playSound("app" + tmpString);
            }

        }

        function makeAnegatSound() {
            var tmpString = Math.floor((Math.random() * 3) + 1)

            playSound("neg" + tmpString);


        }
        //######SOUND END##################################
        //Check if the basket is made 
        createjs.check_made_basket = function() {
            if (bonus) {
                var pt = mainParentLibrray.bball.localToGlobal(mainParentLibrray.bball._mc.x, mainParentLibrray.bball._mc.y);
                var pt2 = currentBonusBasket.localToGlobal(currentBonusBasket.hit_area.x, currentBonusBasket.hit_area.y);
                if (circlesIntersect(pt.x, pt.y, 20, pt2.x, pt2.y, 20)) {
                    currentBonusBasket.play();
                    madeBasket++;
                    mainParentLibrray.made_baskets_txt.text = madeBasket;
                    score += currentBonusBasket.nr;

                    mainParentLibrray.score_txt.text = score;
                    var tmpNr = Math.floor((Math.random() * 1000) + 300)
                    setTimeout(makeAPositiveSound, tmpNr)
                    makeAbonus();
                    console.log("check made");
                } else {
                    var pt = mainParentLibrray.bball.localToGlobal(mainParentLibrray.bball._mc.x, mainParentLibrray.bball._mc.y);
                    var pt2 = currentBonusBasket.localToGlobal(currentBonusBasket.highlight.x, currentBonusBasket.highlight.y);
                    if (circlesIntersect(pt.x, pt.y, 20, pt2.x, pt2.y, 70)) {
                        console.log("board made");
                        var tmpString = Math.floor((Math.random() * 2) + 1)
                        playSound("rim" + tmpString); //Sound of the rim when ball touch the basket
                        console.log(tmpString);
                    } else {
                        var tmpNr = Math.floor((Math.random() * 1000) + 300)
                        setTimeout(makeAnegatSound, tmpNr)

                    }
                    console.log("miss"); // Shoot missed
                    bonus = false;
                    clearInterval(bonustimerInterVal)
                    stage.removeEventListener("stagemousemove", mouseMove);
                    stage.removeEventListener("mousedown", shootAnimationStart);
                    doNextLevel();
                }
                mainParentLibrray.bball.gotoAndStop(0);
                mainParentLibrray.bball.visible = false;
                createjs.shoot = false;
                return;
            }
            if (isNormal) {


                var pt = mainParentLibrray.bball.localToGlobal(mainParentLibrray.bball._mc.x, mainParentLibrray.bball._mc.y);
                var pt2 = mainParentLibrray.basket.localToGlobal(mainParentLibrray.basket.hit_area.x, mainParentLibrray.basket.hit_area.y);
                //Score Made Shot -> increase points
                if (circlesIntersect(pt.x, pt.y, 20, pt2.x, pt2.y, 20)) {
                    mainParentLibrray.basket.play();
                    madeBasket++;
                    mainParentLibrray.made_baskets_txt.text = madeBasket;
                    score += scorePerShot;
                    var tmpNr = Math.floor((Math.random() * 1000) + 300)
                    setTimeout(makeAPositiveSound, tmpNr)
                    mainParentLibrray.score_txt.text = score;

                } else {

                    var pt = mainParentLibrray.bball.localToGlobal(mainParentLibrray.bball._mc.x, mainParentLibrray.bball._mc.y);
                    var pt2 = mainParentLibrray.basket.localToGlobal(mainParentLibrray.basket.highlight.x, mainParentLibrray.basket.highlight.y);
                    if (circlesIntersect(pt.x, pt.y, 20, pt2.x, pt2.y, 70)) {
                        console.log("board made");
                        var tmpString = Math.floor((Math.random() * 2) + 1)
                        playSound("rim" + tmpString); //Sound of the rim when ball touch the basket
                        console.log(tmpString);
                    } else {
                        var tmpNr = Math.floor((Math.random() * 1000) + 300)
                        setTimeout(makeAnegatSound, tmpNr)

                    }
                    //Score Miss Shot -> takes points
                    score -= scorePerShotMiss;
                    mainParentLibrray.score_txt.text = score;
                }

                mainParentLibrray.bball.gotoAndStop(0);
                mainParentLibrray.bball.visible = false;
                createjs.shoot = false;
            }
        }

        function mouseMove(evt) {
            player.x = evt.stageX;

        }

        function shootAnimationStart() {
            if (createjs.shoot) {
                console.log("return");
                return;
            }

            console.log("click");
            player.gotoAndPlay(1);



        }

        function circlesIntersect(c1X, c1Y, c1Radius, c2X, c2Y, c2Radius) {

            var distanceX = c2X - c1X;

            var distanceY = c2Y - c1Y;



            var magnitudeSquared = distanceX * distanceX + distanceY * distanceY;

            return magnitudeSquared < (c1Radius + c2Radius) * (c1Radius + c2Radius);



        }
    }




})(library = library || {}, images = images || {}, createjs = createjs || {});
var library, images, createjs;
 
Discussioni simili
Autore Titolo Forum Risposte Data
ecosito Aiuto con la traduzione in italiano per capire come installare questo JavaScript jQuery 0
E Aiuto per query PHP 8
I aiuto urgente per thunderbird Posta Elettronica 0
I aiuto per outlook Posta Elettronica 0
T aiuto per trasformare un quiz fatto in JS in un quiz in JQUERY jQuery 0
M Fullcalendar in Codeigniter, un aiuto per la chiamata $ajax ? jQuery 0
P Aiuto per rendere un Bot Telegram Privato PHP 1
A Aiuto per pagina php PHP 0
T cercasi aiuto per file d1 (open-edge db) Database 0
L Aiuto per programma web php/mySQL PHP 2
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
T Aiuto per php7 e mysqli PHP 3
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
wildcity9 aiuto per sbloccare account instagram bannati Social Media Marketing 0
A Aiuto per configurare il banner di Iubenda su un sito in html HTML e CSS 0
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
Z [HTML] aiuto per visualizzazione su tablet Offerte e Richieste di Lavoro e/o Collaborazione 6
W [PHP] Un aiuto per il mio primo "Multithread" PHP 0
G Vuoi fare successo? Abbiamo bisogno di aiuto per un app! Offerte e Richieste di Lavoro e/o Collaborazione 1
K [javascript] Aiuto per programma subnetting Javascript 0
F ciao, sono ferro e ho bisogno di aiuto per problemi con la mail di alice.it Presentati al Forum 1
L [PHP] aiuto per installazione mrbs PHP 0
1 Aiuto per nuovo sito SEO e Posizionamento 4
K Server per sito di annunci: aiuto nella scelta Hosting 4
P [Javascript] Aiuto per recupero variabili da script Javascript 10
P [PHP] Aiuto per gestione file CSV PHP 24
A scambio lavoro per aiuto con android Sviluppo app per Android 0
A aiuto per un codice... PHP 1
StelladelSud Cerco aiuto per una demo Offerte e Richieste di Lavoro e/o Collaborazione 3
G Piccolo aiuto per php mail PHP 2
G aiuto per semplice menu onclick HTML e CSS 6
F aiuto per funzionamento sito responsive e form contatti HTML e CSS 29
A AIUTO per impostazione doppia cifra in tabella HTML e CSS 6
G Passaggio variabili tra pagine- Aiuto per maturità 2015 PHP 3
G Passaggio variabili tra pagine- Aiuto per maturità 2015 PHP 0
A Aiuto per Flash player Flash 0
J Aiuto per localstorage con jquery/js/json Javascript 4
M Cerco aiuto per una modifica di un codice Javascript 2
A Aiuto per ordine cronologico lista file all'interno di una cartella protetta PHP 2
G Aiuto! Studente cerca aiuto per un codice PHP PHP 1
S Aiuto per 2 codifiche java Java 4
G Aiuto per creare chat stile Facebook Javascript 7
Sevenjeak Aiuto e consigli su adattamento sito per dispositivi mobile HTML e CSS 2
S aiuto per script PHP/OOP PHP 2
J Aiuto per un sitema di upload per un progetto PHP 0
K Aiuto per sito Discussioni Varie 0
D Richiesta aiuto siti per indirizzamento forum HTML e CSS 1
M Aiuto per una libreria per generare grafici PHP 1
B Saluti ed aiuto per pagina web html HTML e CSS 11
I Aiuto per modificare gruppo buddypress WordPress 0

Discussioni simili