Twitterをやめるまで

Twitterやめたい人の毎日の話

3日目

最近キャスやりすぎな。
誰かと話したくなってしまうから仕方ない。

今日もずっとおべんきょでした。
と、その前に避難訓練があったんですけど、雨で外に避難できないから自分のヘルメットの位置と迅速にかぶれるかを確認して終わり。
みんなで一斉にオフィスでヘルメットかぶっただけ。
おわり。

そう、勉強の話ですね。
今日は『HTTPの教科書』ってのを読み終えました。

HTTPの教科書

HTTPの教科書

仕事柄、このへんの知識も必要かなと思って。
まぁ、なんですかね。
僕らが使ってるWebがどういうふうにして見れているのか。
その仕組みとか、構築の仕方とかわかりやすかったかなと。
ただ、実際に身に付けるなら、自分でサーバー立ち上げて、一から構築してってしないとすぐ忘れそう。
俺たちが何気に使ってるインターネット、わりとややこしい仕組みで成り立ってます。

シューティングゲームの進捗はうんこです。
今日はかなりうんこ。
弾を撃つところと当たり判定を付けるとこまではいったんだけど
上手いこと敵とぶつけることができない!!!!
コードはこちら。

        // 自機の弾のスプライト設定
        var hantei_shot_chara;

        function shot() { 
            var shot_chara = new Sprite(16, 16);
            shot_chara.image = game.assets['icon.png'];
            shot_chara.frame = 48;
            shot_chara.x = chara.x + 8;
            shot_chara.y = chara.y - 24;
            shot_chara.addEventListener(Event.ENTER_FRAME, function () {
                this.y -= 10;
                if (this.y < -10) {
                    game.rootScene.removeChild(this)
                }
            });

         // 自機の弾の当たり判定設定
            hantei_shot_chara = new Sprite(4,16);
            hantei_shot_chara.x = shot_chara.x + 6;
            hantei_shot_chara.y = shot_chara.y;
            hantei_shot_chara.addEventListener(Event.ENTER_FRAME, function () {
               this.y -= 10;
               if (this.y < -10){
                   game.rootScene.removeChild(this)
               }
            });

            game.rootScene.addChild(shot_chara);
            game.rootScene.addChild(hantei_shot_chara);
            setTimeout(shot,500);

        }
        shot();


        function enemies() {

            //敵機のスプライト設定
            var enemy = new Sprite(32, 32);
//中略
            enemy.addEventListener(Event.ENTER_FRAME, function () {
                if (this.y > 320) {
                    game.rootScene.removeChild(this);
                }
            });

            //敵機の当たり判定設定
            var hantei_enemy = new Sprite(20,32);
            hantei_enemy.x = enemy.x + 6;
            hantei_enemy.y = enemy.y;
            hantei_enemy.tl.moveBy(0, 800, 200);
            //hantei_enemy.backgroundColor='red';
            hantei_enemy.addEventListener(Event.ENTER_FRAME, function () {
                if (this.y > 320) {
                    game.rootScene.removeChild(this);
                }
                if (this.intersect(hantei_chara)) {
                    chara.image = game.assets["effect.gif"];
                    chara.frame = 0;
                    clearTimeout();
                    game.end();
                }
                if (this.intersect(hantei_shot_chara)){
                    enemy.image = game.assets["effect.gif"];
                    enemy.frame = 0;
                    game.rootScene.removeChild(this);
                    game.rootScene.removeChild(enemy);
                }
            });

//中略
            game.rootScene.addChild(enemy);
            game.rootScene.addChild(hantei_enemy);
            game.rootScene.addChild(shot_enemy);
            game.rootScene.addChild(hantei_shot_enemy);
            setTimeout(enemies,1000);
        }
        enemies();

これの悪いところはですね、弾が新しいの生成されると弾としての定義が新しい弾についてしまって、古い弾は画像が存在しているだけになってしまうんですよね。
画面上に存在してる弾すべてをちゃんと定義したいんですけど、それをしたらスコープの関係で敵キャラとの当たり判定をつけるのが難しくって。
何が言いたいかというと、var hantei_shot_charafunction shot()の外に出てるじゃないですか。
この定義をfunction shot()の中に入れてしまうとスコープの関係で、function enemies() の中で定義できなくなって、弾に当たったら消えるという動作を上手く実行することができなくなるんですよ。
ていうか当たらなくなる。
逆に外に出しておくと当たることには当たるけど、画面上には1つしかvar hantei_shot_charaは存在できないから古い方の弾は判定ないままインターネットの海に消えていく。
そこをいい方法ないかなと思って。
明日先輩に聞いてみようかな。

今日はこれで終わり~

誰かと話し出すと止まらなくなるわね。
また明日も頑張ろう。
おやすみ~