Meddelande

Minska
No announcement yet.

Bakläxa

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Bakläxa

    Hej,

    jag har fått bakläxa på en flashuppgift. Jag har skapat ett memoryspel, och min lärare har bett mig att lägga till en knapp så att en spelare som tröttnar mitt i ett spel ska kunna gå tillbaka till "startsidan" och välja ny svårighetsgrad.

    Testa här för att se hur det ser ut: http://pollyjuice.se/Skola/memoryspel.swf

    Koden för börja om-knappen ser ut såhär:
    Kod:
    on (release) {
    	gotoAndPlay("Start", "starten");
    }
    och det funkar utmärkt - bortsett från att rutorna från föregående spel ligger kvar när man går tillbaka till starten.

    Rutorna skapas mha ett script som jag laddat ner från internet. Koden är:
    Kod:
    // Gamefield settings
    
    // EDIT HERE
    card_w = 100;
    card_h = 100;
    card_wdistance = 10;
    card_hdistance = 10;
    
    // STOP EDIT
    card_dw = card_w + card_wdistance;
    card_dh = card_h + card_hdistance;
    row_card = Math.floor((Stage.width - card_wdistance) / card_dw);
    col_card = Math.floor((Stage.height - card_hdistance) / card_dh);
    n_card = col_card * row_card % 2 == 0 ? col_card * row_card : (col_card - 1) * row_card;
    imgs_n = n_card / 2;
    
    // CENTER THE IMAGE IN THE CARD
    centerImage = function(target){
        target.front._visible = false
        target.front.container._x -= target.front.container._width / 2
        target.front.container._y -= target.front.container._height / 2
    }
    // ---------------------------------------------
     
    empty = new Array();
    function createCard(n, w, h) {
        empty.push(n);
        this.createEmptyMovieClip('card' + n, n);
        with (this['card' + n]) {
            lineStyle(0, 0x000000, 100);
            beginFill(0x000099, 60);
            moveTo(w / 2, 0);
            lineTo(w / 2, h / 2);
            lineTo(-w / 2, h / 2);
            lineTo(-w / 2, -h / 2);
            lineTo(w / 2, -h / 2);
            lineTo(w / 2, 0);
            endFill();
            createEmptyMovieClip('front', 1);
            front.createEmptyMovieClip('container', 2);
            front.createEmptyMovieClip('backgr', 1);
            with (front.backgr) {
                moveTo(-w / 2, -h / 2);
                lineStyle(0, 0x000000, 0);
                beginFill(0x333333, 100);
                lineTo(w / 2, -h / 2);
                lineTo(w / 2, h / 2);
                lineTo(-w / 2, h / 2);
                lineTo(-w / 2, -h / 2);
                endFill();
            }
            front.onEnterFrame = function() {
                tot = this.container.getBytesTotal();
                car = this.container.getBytesLoaded();
                if (tot == car && tot > 200) {
                    this._parent._parent.centerImage(this._parent);
                    delete this.onEnterFrame;
                }
            };
        }
    }
    selcards = [];
    function placeImages() {
        act_img = 0;
        for (img = 0; img < imgs_n; img++) {
            for (k = 0; k < 2; k++) {
                act = Math.round(Math.random() * (empty.length - 1));
                this['card' + empty[act]].img_id = act_img;
                this['card' + empty[act]].front.container.loadMovie("Easy/" + act_img + ".gif");
                this['card' + empty[act]].onRelease = function() {
                    this.rotateCard(0, 0);
                    this.enabled = false;
                    MovieClip.prototype.enabled = false;
                };
                empty.splice(act, 1);
            }
            act_img++;
        }
    }
    MovieClip.prototype.rotateCard = function(v, i) {
        this.operazione = v == 0 ? +0.1 : -0.1;
        this.incremento = i == 0 ? 100 : 10;
        selcards.push(this._name);
        this.onEnterFrame = function() {
            this.incremento += this.operazione;
            this._xscale = (100 * Math.sin(this.incremento));
            if (this._xscale > 0) {
                this.front._visible = v == 1 ? false : true;
            }
            if (this._xscale >= 99) {
                delete this.onEnterFrame;
                selcards.length < 2 ? MovieClip.prototype.enabled = true : null;
                v == 0 && selcards.length > 1 ? checkCards() : null;
            }
        };
    };
    function generateGameField(cards, distance, hdistance) {
        Ypos = card_h / 2 + hdistance;
        Xpos = card_w / 2 + distance;
        for (c = 0; c < cards; c++) {
            createCard(c, card_w, card_h);
            if (c % row_card == 0 && c > 0) {
                Ypos += this['card' + c]._height + hdistance;
                Xpos = card_w / 2 + distance;
            }
            this['card' + c]._x = Xpos;
            this['card' + c]._y = Ypos;
            Xpos += this['card' + c]._width + distance;
        }
        placeImages();
    }
    generateGameField(n_card, card_wdistance, card_hdistance);
    
    function generateGameField(cards, distance, hdistance) {
        Ypos = card_h / 2 + hdistance;
        Xpos = card_w / 2 + distance;
        for (c = 0; c < cards; c++) {
            createCard(c, card_w, card_h);
            if (c % row_card == 0 && c > 0) {
                Ypos += this['card' + c]._height + hdistance;
                Xpos = card_w / 2 + distance;
            }
            this['card' + c]._x = Xpos;
            this['card' + c]._y = Ypos;
            Xpos += this['card' + c]._width + distance;
        }
        placeImages();
    }
    
    function createCard(n, w, h) {
        empty.push(n);
        this.createEmptyMovieClip('card' + n, n);
        with (this['card' + n]) {
            lineStyle(0, 0x000000, 100);
            beginFill(0x000099, 60);
            moveTo(w / 2, 0);
            lineTo(w / 2, h / 2);
            lineTo(-w / 2, h / 2);
            lineTo(-w / 2, -h / 2);
            lineTo(w / 2, -h / 2);
            lineTo(w / 2, 0);
            endFill();
            createEmptyMovieClip('front', 1);
            front.createEmptyMovieClip('container', 2);
            front.createEmptyMovieClip('backgr', 1);
            with (front.backgr) {
                moveTo(-w / 2, -h / 2);
                lineStyle(0, 0x000000, 0);
                beginFill(0x333333, 100);
                lineTo(w / 2, -h / 2);
                lineTo(w / 2, h / 2);
                lineTo(-w / 2, h / 2);
                lineTo(-w / 2, -h / 2);
                endFill();
            }
        }
    }
    
    function placeImages() {
        act_img = 0;
        for (img = 0; img < 16; img++) {
            for (k = 0; k < 1; k++) {
                act = Math.round(Math.random() * (empty.length - 1));
                this['card' + empty[act]].img_id = act_img;
                this['card' + empty[act]].front.container.loadMovie("Easy/" + act_img + ".gif");
                this['card' + empty[act]].front.onEnterFrame = function() {
                    tot = this.container.getBytesTotal();
                    car = this.container.getBytesLoaded();
                    if (tot == car && tot > 200) {
                        this._parent._parent.centerImage(this._parent);
                        delete this.onEnterFrame;
                    }
                };
                this['card' + empty[act]].onRelease = function() {
                    this.rotateCard(0, 0);
                    this.enabled = false;
                    MovieClip.prototype.enabled = false;
                };
                empty.splice(act, 1);
            }
            act_img++;
        }
    }
    
    MovieClip.prototype.rotateCard = function(v, i) {
        this.operazione = v == 0 ? +0.1 : -0.1;
        this.incremento = i == 0 ? 100 : 10;
        selcards.push(this._name);
        this.onEnterFrame = function() {
            this.incremento += this.operazione;
            this._xscale = (100 * Math.sin(this.incremento));
            if (this._xscale > 0) {
                this.front._visible = v == 1 ? false : true;
            }
            if (this._xscale >= 99) {
                delete this.onEnterFrame;
                selcards.length < 2 ? MovieClip.prototype.enabled = true : null;
                v == 0 && selcards.length > 1 ? checkCards() : null;
            }
        };
    };
    
    score = 0;
    this.createTextField('punti', -1, 500, 380, 0, 0);
    punti.autoSize = true;
    punti.text = 0;
    function checkCards() {
        if (this[selcards[0]].img_id == this[selcards[1]].img_id+8 || this[selcards[0]].img_id == this[selcards[1]].img_id-8) {
            score++;
            punti.text = score;
            eval(selcards[0])._visible = eval(selcards[1])._visible = false;
        } else {
            eval(selcards[0]).rotateCard(1, 1);
            eval(selcards[1]).rotateCard(1, 1);
            eval(selcards[0]).enabled = eval(selcards[1]).enabled = true;
        }
        selcards = [];
        MovieClip.prototype.enabled = true;
    		if (score ==8)	{
    		punti.text = "Grattis!"
    		}
    }
    Kan någon tipsa mig om hur jag ska få bort alla rutorna när man trycker på börja om-knappen? Kanske man kan lägga in någon kod i början som kollar om börja om-knappen har tryckts ned, i annat fall körs koden..? Eller finns det något bättre sätt?

    Och kan någon också tipsa mig om hur jag kan förvandla sluta-knappen så att den stänger fönstret när man trycker på den? Jag trodde det var close(), men tydligen inte...

  • #2
    Nu är det mer risk för att låta lite elak jag skriver.. Tanken med en Flashuppgift är sannolikt att du skall förbättra dina kunnskaper i programmet. Det verkar mer som att du använder 'lånad' och gammal kod som du inte riktigt har inblick i vad den gör. Jag skulle föreslå att backa bandet något och försöka lösa uppgiften på egen hand. Hjälpfilen i Flash är inte fantastisk, men oftast finns svaren där.

    Lycka till!

    Kommentera


    • #3
      Nja, vitsen med uppgiften var att skapa ett dator-relaterat program/spel/forum/nåt i den stilen anpassat för utvecklingsstörda. Det handlade alltså inte om att jag skulle bli duktigare på Flash, för jag fick använda vilket program jag ville.
      Läraren hade inget emot att jag använde en lånad kod, huvudsaken var att utvecklingsstörda barn lätt kunde förstå hur spelet skulle spelas.

      Visst kan jag kolla i hjälpfilen, men om någon har något tips om hur detta kan lösas så tar jag gärna emot det.

      Kommentera


      • #4
        Glöm allt - jag fick ett tips om att använda

        Kod:
        on (release) {
            loadMovieNum("memoryspel.swf", 0);
        }
        på ett annat forum, och det funkar som jag vill ha det. Tack iallafall.

        Kommentera

        Working...
        X