乗車日記

自転車ときのこ

熊たたき

今日のプログラム教室 for 長女。
熊がランダムに走り回って、マウスでクリックすると点が入る。雄熊は1点、シロクマは-1点、雌熊は5点。熊のクラスを作ってしまえば、あとはそれを何度も呼び出すだけで自立的に動く熊が何匹も作り出せるのにはちょっと驚いた。多粒子系のシミュレーションに使えそうな気がする。ここをクリックするとプレイできます。

f:id:tasano-kona:20130525144925p:plain



enchant();

window.onload = function(){
    var game = new Core(320, 320);
    game.fps = 10;
    files = { 
        icon0: "http://jsrun.it/assets/v/Z/L/a/vZLas.png",
        icon1: "http://jsrun.it/assets/2/s/s/B/2ssB0.png",
        baku_oto: "http://jsrun.it/assets/y/j/j/Q/yjjQ5.wav"
    }; 
    
    game.preload(files.icon0, files.icon1, files.baku_oto);

    var rand= function(n){
        return (Math.random()*n);
    };
    
    var BEAR = enchant.Class.create(Sprite,{
        initialize: function(){
            enchant.Sprite.call(this, 32, 32);
            this.image = game.assets[files.icon0];
            this.x = rand(320);
            this.y = rand(320);
            var r = rand(70);
         
            if(r<=40){
                this.frame=4;
                this.ten=1;
            }
            else if(r<=50){
                this.frame=8;
                this.ten=-1;
            }
            else {
                this.frame=10;
                this.ten=5;
            }
            var vx= rand (30)-15;
            var vy= rand (30)-15;
        
	
            this.addEventListener("enterframe", function(){
                if(-32<=this.x && this.x<352 && -32<this.y &&this.y<352) {
                    this.x += vx/3;
                    this.y += vy/3;
                }
                else {
                    this.x=rand(320);
                    this.y=rand(320);
                    vx= rand (30)-15;
                    vy= rand (30)-15;
                }
            });
                                
            this.addEventListener("touchstart", function(){
                game.rootScene.removeChild(this);
                var bang = new Sprite(16, 16);
                bang.image = game.assets[files.icon1];
                bang.frame = 0;
                bang.x=this.x + 8;
                bang.y=this.y + 8;
                game.score+=this.ten;
                game.rootScene.addChild(bang);
                game.assets[files.baku_oto].play();
            });
           game.rootScene.addChild(this);
        }
    });
    
    var Scorelabel=enchant.Class.create(Label,{
        initialize:function(){
            enchant.Label.call(this, "score: 0");
//            this.text="score:0";
            this.x=0;
            this.y=0;
            this.color="white";
            this.addEventListener("enterframe", function(){
                this.text="score:"+game.score;
            });
            game.rootScene.addChild(this);                                  
        }
    });
           
       
    game.onload = function(){
        game.score=0;
        game.rootScene.backgroundColor = "black";
        var Score= new Scorelabel();
        for(i=0; i<60; i++){
         var bear = new BEAR();
        }
    };
    game.start();
};