Untitled

 avatar
unknown
plain_text
2 years ago
4.8 kB
3
Indexable
stage {
    backdrop White("gallery:General/White")
    let cols = 5;
    let rows = 5;
    let matrix = [  ];
    let db = 0;
    let point = 0;
    let hidelist = [  ];
    let item2;

    
    actor Robot {
        default costume Idle("gallery:Figures/Robot Idle")
        costume Winner("gallery:Text/Winner Blue")
        function createMatrix(row, col) {
            matrix = [  ];
            for(let i = 0; i < row; i++) {
                let list = [  ];
                for(let j = 0; j < col; j++) {
                    list.push(0);
                }
                matrix.push(list);
            }
        }
        function showMatrix(row, col) {
            let y = 130;
            for(let i = 0; i < row; i++) {
                 let x = -280;
                for(let j = 0; j < col; j++) {
                    let item = matrix[i][j];
                    item.setPosition(x, y);
                    item.setCostume(Math.randomBetween(1, 3));
                    item.show();
                    x += 50;
                }
                y -= 50;
            }
        }
        function createClones(n) {
            for(let i = 0; i < n; i++) {
                createClone(Button);
            }
        }
        function remove(i, j) {
            let item = matrix[i][j];
            if(item) {
                let color = item.costumeId;
                item.setCostume(4);
                if(i > 0) {
                    let up = matrix[i - 1][j];
                    if(up && up.costumeId == color) {
                        this.remove(i - 1, j);
                    }
                }
                if(i < rows - 1) {
                    let down = matrix[i + 1][j];
                    if(down && down.costumeId == color) {
                        this.remove(i + 1, j);
                    }
                }
                if(j > 0) {
                    let left = matrix[i][j - 1];
                    if(left && left.costumeId == color) {
                        this.remove(i, j - 1);
                    }
                }
                if(j < cols - 1) {
                    let right = matrix[i][j + 1];
                    if(right && right.costumeId == color) {
                        this.remove(i, j + 1);
                    }
                }
                hidelist.push(item);
            }
        }
        function hideAndFall() {
            for(let item of hidelist) {
                let i = item.i;
                let j = item.j;
                item.hide();
                matrix[i][j] = 0;
                while(i > 0) {
                    item2 = matrix[i - 1][j];
                    if(item2) {
                        item2.i += 1;
                        item2.y -= 50;
                        matrix[i][j] = item2;
                        matrix[i - 1][j] = 0;
                    }
                    i--;
                }
            }
            let k = hidelist.length;
            point += k * k;
            Ring.sayPoint();
            db += k;
            if(db == rows * cols) {
                this.show();
                this.setPosition(0, 0);
                this.setCostume(this.Winner);
            }
        }
        when stage.started {
            this.createMatrix(rows, cols);
            this.createClones(rows * cols);
            this.setPosition(-200, 50);
            this.show();
            this.say("Welcome to the game! You have to blow up button by clicking on them. Of coursem the neighbours with the same color will also be destroyed.");
            this.wait(2);
            this.say("");
            this.hide();
            this.showMatrix(rows, cols);
        }
    }
    
    actor Button {
        default costume Blue("gallery:Objects/Button Blue")
        costume Red("gallery:Objects/Button Purple")
        costume Green("gallery:Objects/Button Green")
        costume Bomb("gallery:Objects/Bomb Explode")
        let i = 0;
        let j = 0;
        when clicked {
            hidelist = [  ];
            Robot.remove(i, j);
            Robot.hideAndFall();
        }
        when cloned {
            let id = this.cloneId - 1;
            this.j = id % cols;
            this.i = (id - this.j) / cols;
            matrix[this.i][this.j] = this;
        }
        when stage.started {
            this.hide();
            this.size = 100;
        }
    }
    
    actor Ring {
        costume Red("gallery:Objects/Ring Red")
        when stage.started{
            this.setPosition(300, 150);
            point = 0;
            db = 0;
            sayPoint();
        }
        function sayPoint(){
            this.say("Point: "+ point);
        }
    }
}
Editor is loading...
Leave a Comment