---
# System prepended metadata

title: enchant.js 宿題2-8
tags: [enchant.js 宿題]

---

# enchant.js 宿題2-8
## 課題8: ゲームオーバーシーンとゲームクリアシーンの作成
### タスク
・ゲームオーバーシーンとゲームクリアシーンを作成し、それぞれのシーンにテキストラベルを追加します。
### ヒント
・ラベルはnew Label();で作成し、textプロパティでテキストを設定します。
・シーンにラベルを追加するにはaddChild(label);を使用します。

### 開始コード:
    enchant();

    window.onload = function () {
        const FISH = "res/fish.png";
        const HEART = "res/heart.png";
        const SHARK = "res/shark.png";
        const SEA = "res/Sea.png";
        const START = "res/start.png";
        const DISP_SIZE = 640;

        var core = new Core(DISP_SIZE, DISP_SIZE);
        core.preload(FISH, HEART, SHARK, SEA, START);
        core.fps = 30;
        core.keybind(32, "Space");
        core.onload = function () {
            
            var score = 0;

            var background = new Sprite(640, 481);
            background.x = 0;
            background.y = 0;
            background.scaleX = 1.5;
            background.scaleY = 1.5;
            background.image = core.assets[SEA];
            core.rootScene.addChild(background);

            var start = new Sprite(320, 142);
            start.x = 150;
            start.y = 150;
            start.scaleX = 1.0;
            start.scaleY = 1.0;
            start.image = core.assets[START];
            core.rootScene.addChild(start);

            core.rootScene.on("enterframe", function (){

                if (core.input.Space) {
                    core.rootScene.removeChild(start);
                }
            });

            var playScene = new Scene();

            var background = new Sprite(640, 481);
            background.x = 0;
            background.y = 0;
            background.scaleX = 1.5;
            background.scaleY = 1.5;
            background.image = core.assets[SEA];
            playScene.addChild(background);

            var fish = new Sprite(320, 211);
            fish.x = 100;
            fish.y = 100;
            fish.scaleX = 0.5;
            fish.scaleY = 0.5;
            fish.image = core.assets[FISH];
            playScene.addChild(fish);
            fish.on('enterframe', function () {
                if (core.input.up) {
                    this.y -= 10;
                }
                if (core.input.down) {
                    this.y += 10;
                }
                if (core.input.right) {
                    this.x += 10;
                    fish.scaleX = 0.5;
                }
                if (core.input.left) {
                    this.x -= 10;
                    fish.scaleX = -0.5;
                }
                if (this.within(shark, 70)) {
                    core.pushScene(gameOverScene);
                }
            });
            var shark = new Sprite(320, 220);
            shark.x = 600;
            shark.y = rand(DISP_SIZE / 2);
            shark.scaleX = -0.7;
            shark.scaleY = 0.7;
            shark.image = core.assets[SHARK];
            shark.on('enterframe', function () {
                this.x -= 5;
                if (this.x < 0) {
                    this.y = rand(DISP_SIZE / 2);
                    this.x = 600
                }
            });                 
            playScene.addChild(shark);
            var Heart = Class.create(Sprite, {
                initialize: function () {
                    Sprite.call(this, 320, 211);
                    this.x = rand(500);
                    this.y = rand(DISP_SIZE / 2);
                    this.scaleX = 0.25;
                    this.scaleY = 0.25;
                    this.image = core.assets[HEART];
                    this.on('enterframe', function () {
                        if (this.within(fish, 50)) {
                            playScene.removeChild(this);
                            score++;
                            if (score == 10) {
                                core.pushScene(gameClearScene);
                            }
                        }
                    });
                    playScene.addChild(this);
                }
            });

            playScene.on('enter', function () {
                for (i = 0; i < 10; i++) {
                    new Heart();
                }
            });
            //ここにコードを作成する。
        }
        core.start();
    }
    function rand(n) {
    return Math.floor(Math.random() * (n + 1));
    }

<details>
<summary>解答</summary>
    
    enchant();

    window.onload = function () {
        const FISH = "res/fish.png";
        const HEART = "res/heart.png";
        const SHARK = "res/shark.png";
        const SEA = "res/Sea.png";
        const START = "res/start.png";
        const DISP_SIZE = 640;

        var core = new Core(DISP_SIZE, DISP_SIZE);
        core.preload(FISH, HEART, SHARK, SEA, START);
        core.fps = 30;
        core.keybind(32, "Space");
        core.onload = function () {

            var background = new Sprite(640, 481);
            background.x = 0;
            background.y = 0;
            background.scaleX = 1.5;
            background.scaleY = 1.5;
            background.image = core.assets[SEA];
            core.rootScene.addChild(background);

            var start = new Sprite(320, 142);
            start.x = 150;
            start.y = 150;
            start.scaleX = 1.0;
            start.scaleY = 1.0;
            start.image = core.assets[START];
            core.rootScene.addChild(start);

            core.rootScene.on("enterframe", function (){

                if (core.input.Space) {
                    core.rootScene.removeChild(start);
                }
            });

            var playScene = new Scene();

            var background = new Sprite(640, 481);
            background.x = 0;
            background.y = 0;
            background.scaleX = 1.5;
            background.scaleY = 1.5;
            background.image = core.assets[SEA];
            playScene.addChild(background);

            var fish = new Sprite(320, 211);
            fish.x = 100;
            fish.y = 100;
            fish.scaleX = 0.5;
            fish.scaleY = 0.5;
            fish.image = core.assets[FISH];
            playScene.addChild(fish);
            fish.on('enterframe', function () {
                if (core.input.up) {
                    this.y -= 10;
                }
                if (core.input.down) {
                    this.y += 10;
                }
                if (core.input.right) {
                    this.x += 10;
                    fish.scaleX = 0.5;
                }
                if (core.input.left) {
                    this.x -= 10;
                    fish.scaleX = -0.5;
                }
                if (this.within(shark, 70)) {
                    core.pushScene(gameOverScene);
                }
            });
    
            var shark = new Sprite(320, 220);
            shark.x = 600;
            shark.y = rand(DISP_SIZE / 2);
            shark.scaleX = -0.7;
            shark.scaleY = 0.7;
            shark.image = core.assets[SHARK];
            shark.on('enterframe', function () {
                this.x -= 5;
                if (this.x < 0) {
                    this.y = rand(DISP_SIZE / 2);
                    this.x = 600
                }
            });                 
            playScene.addChild(shark);
                               
            var Heart = Class.create(Sprite, {
                initialize: function () {
                    Sprite.call(this, 320, 211);
                    this.x = rand(500);
                    this.y = rand(DISP_SIZE / 2);
                    this.scaleX = 0.25;
                    this.scaleY = 0.25;
                    this.image = core.assets[HEART];
                               this.on('enterframe', function () {
                        if (this.within(fish, 50)) {
                            playScene.removeChild(this);
                            score++;
                            if (score == 10) {
                                core.pushScene(gameClearScene);
                            }
                        }
                    });
                    playScene.addChild(this);
                }
            });

            playScene.on('enter', function () {
                for (i = 0; i < 10; i++) {
                    new Heart();
                }
            });
            
            var gameOverScene = new Scene();
            gameOverScene.backgroundColor = 'black';

            var GOlabel = new Label();
            GOlabel.x = 180;
            GOlabel.y = 200;
            GOlabel.font = '40px Hiragino';
            GOlabel.text = "GAME OVER";
            GOlabel.color = 'white';
            gameOverScene.addChild(GOlabel);

            var gameClearScene = new Scene();

            var GClabel = new Label();
            GClabel.x = 180;
            GClabel.y = 200;
            GClabel.font = '40px Hiragino';
            GClabel.text = "GAME CLEAR";
            gameClearScene.addChild(GClabel);
        }
        core.start();
    }
    function rand(n) {
    return Math.floor(Math.random() * (n + 1));
    }


</details>