「日記2010年10月その1」の編集履歴(バックアップ)一覧に戻る

日記2010年10月その1 - (2010/10/12 (火) 07:31:29) の編集履歴(バックアップ)


2010/10/10~11




自作ミニゲーム プログラム制作日記。
HTML5.0+JScript5.5
固定画面に次々と現れる雑魚敵を倒す超古典ゲーム。
この程度のコードでは趣味レベルなので、オープンソースとして公開。
多分誰も使わないと思うけど。
一応完成したら、"趣味で作る初めてのブラウザゲーム"という初心者向けタイトルを関した本レベルのゲームにまで完成させる予定。


  • 製作者履歴
コード製作者 堀江伸一
ソースが気に入って手を入れた方はここに追加してください。




var KeyBuffer;//キー入力バッファ
var e_manage=new Array()//マップ上にいる敵データを管理する配列
var myUnit=CreateMyUnit(100,100) //自機の管理,当面ダミーデータ
var x_position=new Array()//敵味方の大雑把な位置を表現する
var eBullet_manage=new Array();//敵の弾を管理する配列
var myBullet_manage=new Array();//自機の弾を管理する配列。
var map;//画面マップ
var mapHeightDates=new Array()//地面の凸凹を現す変数データ、地面は1次元の折れ線として表現される、当たり判定がめんどくさくなる理由の王様;
var g=9.8//重力の値、必要に応じて変更予定

 function eCannon(x,y,hp,timer,rndTimer,BulletSpeed) {
   //大砲を表現するクラス
  this.x = x;
  this.y = y;
   this.hp= hp;//ヒットポイント
   //this.bmp        = new Image("e_CannonBody.jpg");//キャノン本体の画像jscriptは久しぶりなのでこれでよかったかちょっと記憶が、、、、
   //this.Cannon     = new Image("e_Cannon.jpg");キャノンの砲身の画像
   this.AttackTimer= timer;//攻撃間隔
   this.rndTimer   = rndTimer;//攻撃間隔のランダムな揺らぎのサイズ
   this.BulletSpeed=BulletSpeed;//弾速
  this.state=0;//0なら稼働中、1なら爆発エフェクト中、2なら大砲を発射後の反動アニメーション
   this.round=0;//大砲の砲身の角度を表す変数
   this.nextAttackTimer=100;//fps計算一回ごとに1引かれる変数、これが0以下になると弾発射処理が行われ、nextAttackTimerは再セットされる。
   this.r=30//大砲のサイズ



   this.attack = function() {
     //放物線を描いて飛ぶ大砲の弾。これを発射しeBullet_manageに弾を登録するメソッド;
   //弾の移動は全てeBullet_manageから取り出しmoveメソッドで行う。jscriptではスタックに複数の型を混在させることが出来たか記憶があいまい、混在出来るいい意味でいい加減な言語だったと思うけど?
        // 主人公機と自機のX,Y座標の差分にあわせて、
    //微分と2次曲線の性質なんて何て懐かしい
    var x1=myUnit.x-this.x;
    var y1=myUnit.y-this.y;
    var k=0.5*g*x1*x1/(this.BulletSpeed*this.BulletSpeed);
    var d=x1*x1-4*k*(k+y1);
    //弾が届く位置に敵がいたらd>0となるので発射
    if(d>0){
         var s=(x1+Math.sqrt(d))/(2*k);
         var t=Math.sqrt(1+s*s);
         
         var cb=CannonBullet(this.x,this.y,this.BulletSpeed/t,this.BulletSpeed*s/t);
         //弾を生成したので、弾を管理するデータ型に管理させる。これはサブルーチンに渡して処理を行う。
         //ホテルの空き部屋を探すのと同じ処理でまず空いてる場所を探す
   }
   this.raunchingR_Set=function(){

    }
   }
   this.nextAttackCheck=function(){
    //
   } 
}

function CreateMyUnit(x,y){
 this.x=x;
 this.y=y;
}


 function CannonBullet(x,y,xSpeed,ySpeed){
   //大砲から発射される弾を表現するデータ、弾は大地と接触する、もしくは画面の右端、左端に到達するまで放物線を描いて飛び、到達、着弾と同時に画面から消失する
  //誤差が出て困る計算なわけもなく座標は折れ線で近似計算する
   this.x=x;
   this.y=y;
   this.xSpeed=xSpeed;
   this.ySpeed=ySpeed; 
   this.state=0//大砲の弾の状態、0なら移動中、1なら着弾し爆発エフェクト
   this.nextCalcCount=10;//ここで指定した数nだけ、nFPS過ぎるまで直線移動で近似
   this.explosionTimer=10;//爆発の持続時間
   this.explosionSize=10;//爆発時のサイズ,ゲーバラとあわせてよく考える必要あり
   this.nextX;//弾の移動後の位置
   this.nextY;//弾の移動後の位置
   this.move=founction (){
   //弾の移動state=0なら移動処理;
   //state=1なら爆発アニメ,explosionTimeを1減らし、これが0以下になるまでは爆発効果
   //計算により弾が地面とぶつかることが判明した場合、state=1に変更、弾を爆発させる。
   }
}














JSCRIPTの配列は異なる型を混在できるというすこし楽しい言語だったりする。
この性質を使って、いい加減コーディングでゲームを作れないか思案中。
<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT language="JavaScript">
<!--
function alt() {
var a=new xx(100);
var x=new Array("a",a,8);
window.alert(x[0]+" "+ x[1].x+" "+x[2]);

}

function xx(x){
this.x=x
}

</SCRIPT>
</HEAD>
<BODY bgcolor="#ffffff">
<BR><BR>
<p onClick="alt()">jscriptの配列は異なる型を混在できる!</p>
</BODY>
</HTML>










2010/10/12

今日は、ブラウザゲームの敵移動の模式図作図。
しなさんこと管理人に絵描きとしての能力はない。
ので相当簡単な模式図で間に合わせる予定。