Atlas.jsブログ

Webブラウザで動作する、教育用JavaScriptゲームエンジン、Atlas.jsに関する知識共有ブログです。

ブロック崩しを作ってみよう〜クラスのまとめ・今まで作ったものを合わせてみよう〜


こんにちは。moltomheadです。前回までで、ボール、バー、ブロックの作成を行いました。あとはこれらをあわせるだけです。しかし、前回のblogでせっかくクラスを使った書き方を覚えたので、一旦ボールとバーをクラスに書きなおしてみます。では早速やっていきましょう。
クラスを新しく作る場合は、Atlas.createClassを使うんでしたね。

/*ボールのクラス*/
Ball = Atlas.createClass(Atlas.Shape.Circle,{
  		initialize: function(col,radius){
     		this.inherit(col,radius);
          	 this.setPosition(250,200);
      		this.dirX = game.getRand(3,4);
      		this.dirY = game.getRand(4,6);
     	}, 
     	enterFrame: function(){
     		this.x += this.dirX;
    		this.y += this.dirY;
    		if(this.x > 480 || this.x < 0)
    			this.dirX = -this.dirX;
              if(this.y > 480){
                 this.dirX = 0;
              	this.dirY = 0;
                 game.addChild(gameover);
              }
              if(this.y < 40)
                   this.dirY = -this.dirY;
          	 if(this.hitTest(bar))//バーに当たった時の処理
         	   	 this.dirY = -this.dirY;
               
    	}	
  	});

/*バーのクラス*/
 	 Bar = Atlas.createClass(Atlas.Shape.Box, {
  		initialize: function(col,numx,numy){
     		this.inherit(col,numx,numy);
      		this.setPosition(250,400);
     	},
    	 keyDown: function(key){
       		if(key.right){
         		if(this.x < 400)
      				this.x+=20;
       		}
       		if(key.left){
         		if(this.x > 0)
      				this.x-=20;
       }
     	}
  	});

前回のblogの内容を見ている方にとってはすぐに出来ると思います。今まで書いてきたenterFrameやkeyDownをクラス内に記述するだけです。ただし、ボールはバーとの当たり判定が追加されているためそれを忘れないようにしましょう。ボールがバーをすり抜けてしまいます。初期化処理などの記述はBlockクラスを参考にしてみてください。
ブロック崩しを作ってみよう〜ブロックを作ってみよう〜
ボールとバーを作るときは、Atlas.jsの提供しているクラス(CIrecleクラスとBoxクラス)からオブジェクトを生成して、メソッドやプロパティを付与する、つまり一旦工場から製品を作ってからそれに操作や製品の持つデータをつけていくような形でした。しかし、新しくクラス(BallクラスやBarクラス)を作ると、製品が作られた時点で操作や製品のデータが設定されているようになります。これにより、製品を作るたびに設定をする必要がなくなり、無駄なコードを書かなくても良くなります。それはBlockクラスを作った時に感じられたと思います。また、新しく作ったクラスを元にまた新しくクラスを作ることも可能です。今回はやりませんが興味のある方はぜひやってみてください。
これでブロック崩しのほとんどが完成しました。あとはそれぞれパワーアップアイテムを作ってみたり、クリアやゲームオーバー、制限時間を表示してみたりと自分の好きなように作ってみてください。うまくできなかった人もサンプルを貼りますのでこれを改造して遊んでみてください。
ブロック崩しclass生成
みなさんが新しいアイディアで面白いゲームが作れることを楽しみにしています。


blog comments powered by Disqus

エントリーリスト

カテゴリーリスト

Facebook

Twitter

おすすめの本