diff dandy/resources/Player.js @ 1:54589bb5e57d

add dandy
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Thu, 23 Feb 2012 14:51:33 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dandy/resources/Player.js	Thu Feb 23 14:51:33 2012 +0900
@@ -0,0 +1,361 @@
+lg = new Object();
+lg.stg = 0;//レーザーゲージ
+pg = new Object();
+pg.stg = 0;
+infg = new Object();
+infg.stg = 0;
+infg_level = 0;
+p_extend = 0;
+fastebos = 0;
+se_key = [-1,-1,-1,-1,-1,-1];
+
+rswait = 0;
+
+function Pad()
+{
+    this.up=0;
+    this.down=0;
+    this.right=0;
+    this.left=0;
+    this.count=0;
+    this.ccount=0;
+    this.state=0;
+    this.k0=0;
+    this.k1=0;
+    this.k2=0;
+    this.k3=0;
+    this.k4=0;
+    this.r2=0;
+    this.r1=0;
+    this.r2=0;
+    this.l1=0;
+    this.l2=0;
+    this.l3=0;
+    this.se=0;
+    this.st=0;
+
+    //勝手につけた
+    this.quit=0;
+    this.start=0;
+    return this;
+}
+
+function makePlayer( object )
+{
+    this.x = 100;
+    this.y = 100;
+    this.z = 10;
+    this.ch = 0;
+    this.dx = 0;
+    this.dy = 0;
+    this.scale = 1.0;
+    this.muteki = 120;
+    this.bf = true;
+    this.zanki = 3;
+    this.point = 0;
+    this.count = 0;
+    this.ccount = 0;
+    this.idle = object["player_idle"];
+    this.rightmove = object["player_rightmove"];
+    this.leftmove = object["player_leftmove"];
+    this.turntoright = object["player_turnright"];
+    this.turntoleft = object["player_turnleft"];
+    this.image = this.idle;
+    this.w = this.image.w;
+    this.h = this.image.h;
+	this.vertexObject =  new Object();
+	this.normalObject =  new Object();
+	this.texCoordObject = new Object();
+	this.indexObject = new Object();
+	this.numIndices = new Object();
+    this.texture=new Object();
+    
+    return this;
+}
+
+
+
+function loadImageJiki( jiki, Image)
+{
+	jiki.vertexObject = Image.vertexObject;
+	jiki.normalObject = Image.normalObject;
+	jiki.texCoordObject = Image.texCoordObject;
+	jiki.indexObject = Image.indexObject;
+	jiki.numIndices = Image.numIndices;
+	jiki.texture = Image.texture;
+}
+
+
+
+function Player(ctx, jiki, pad, ortho )
+{
+
+
+
+    /*自機無敵計算*/
+    /*
+    if(jiki.muteki > 0 && jiki.bf == true){
+	cout++;
+	jiki.muteki--;
+    }
+    */
+
+    
+    pad.right = Math.min(pad.right, 0.7);
+    pad.left = Math.min(pad.left, 0.7);
+    pad.up = Math.min(pad.up, 0.7);
+    pad.down = Math.min(pad.down, 0.7);
+
+    /*コントローラー上限値----------------------*/
+    jiki.x += pad.right;
+    jiki.x -= pad.left;
+    jiki.y -= pad.up;
+    jiki.y += pad.down;
+
+    /*自機の動き--------------------------------*/
+    jiki.x = Math.min(jiki.x, ortho.right - jiki.w/2);
+    jiki.x = Math.max(jiki.x, ortho.left + jiki.w/2);
+    jiki.y = Math.min(jiki.y, ortho.bottom - jiki.w/2);
+    jiki.y = Math.max(jiki.y, ortho.top + jiki.w/2);
+
+	if( pad.count == 1) pad.state=0;
+    if( pad.count > 0) pad.state=1;
+    if( pad.count > 10 ) pad.state=2;
+
+    if( pad.state == 0 ) 	loadImageJiki(jiki, jiki.idle);
+    if( pad.state == 1 ) {
+	if( pad.right > 0 ) loadImageJiki(jiki, jiki.turntoright);
+        if( pad.left > 0 )loadImageJiki(jiki, jiki.turntoleft);
+    }
+    if( pad.state == 2 ) {
+	if( pad.right > 0 ) loadImageJiki(jiki, jiki.rightmove);
+        if( pad.left > 0 ) loadImageJiki(jiki, jiki.leftmove);
+    }
+    //分かりやすいように横幅と縦幅はjiki.w,jiki.hに直でいれておく
+    jiki.w = jiki.image.w;
+    jiki.h = jiki.image.h;
+
+
+    //    if(jiki.muteki < 5) alert("jiki.muteki "+jiki.muteki);
+    if(jiki.muteki > 0) jiki.muteki--;
+    if(jiki.bf == true) {
+	PutSpriteF(ctx, jiki.x, jiki.y, jiki.scale, jiki);
+    } else {
+
+	/* 自機が復活するまでは玉は撃たせない  */
+	pad.k4 = 0;
+	pad.k3 = 0;
+	pad.k1 = 0;
+	pad.k0 = 0;
+    }
+    
+
+
+    //玉レベル1登録
+        if ((pad.k4 % 3 == 1) && (pad.k3 % 3 == 0)){
+ 	pad.k4 = 1;
+	//	audioShoot && audioShoot.play();//このaudioは試験使用中.global宣言されてる奴(htmlファイルのなかで)
+	SoundPlay(1);
+
+	tama_lv1_end++;
+
+	//	if(tama_lv1_end > 19) tama_lv1_end = 0;
+	i = tama_lv1_end;
+	//     	if(tama_lv1_end > 50) alert(tama_lv1_end);
+
+	tama = new tama1();
+	tama.x = jiki.x;
+	tama.y = jiki.y;
+	tama.r = 1;
+	tama.l = 1;
+	tama.scale = 1.0; //玉がでかいので調整
+	tama_lv1[i] = tama;
+    }
+
+    /*玉レベル2登録--------------------------------------*/
+    if((pad.k3 % 3 == 1) && (pad.k4 == 0) && (pg.stg > 64)) {
+	    //	    PlaySdlMixer(0, SHOT_B);
+	SoundPlay(2);
+	    
+	    //	    se_key[1] = SsUtKeyOn(vab[SHOT_B], 0, 0, 65, 0, 80, 80);
+	    
+	    pad.k3 = 1;
+	    tama_lv2_end++;
+	    i = tama_lv2_end;
+	    
+	    tama = new tama2();
+	    tama.x = jiki.x;
+	    tama.y = jiki.y;
+	    tama.rr = 1;
+	    tama.sr = 1;
+	    tama.sl = 1;
+	    tama.ll = 1;
+	    tama.scale = 1.0;//少し画像がでかいので調整
+	    
+	    tama_lv2[i] = tama;
+	    
+	    pg.stg -= 64;
+	}
+
+    /*押してないときの玉ゲージ回復-------------------*/
+    if ((pad.k3 == 0) && (pad.k4 == 0))
+	if(pg.stg <= MAXP)
+	    pg.stg += 4;
+
+    //玉レベル1表示
+    for (i = 0; i < tama_lv1_end + 1; i++) 
+	{
+	    tama_lv1[i].y -= 10;
+	    if (tama_lv1[i].r == 1) {
+		PutSpriteF(ctx, tama_lv1[i].x+5, tama_lv1[i].y, tama_lv1[i].scale, bullets[2]);
+	    }
+	    if (tama_lv1[i].l == 1) {
+		PutSpriteF(ctx, tama_lv1[i].x-5, tama_lv1[i].y, tama_lv1[i].scale, bullets[2]);
+	    }
+	    if (tama_lv1[i].y < ortho.top) {
+		if(tama_lv1_end == i){
+		    tama_lv1_end--;
+		    break;
+		}
+		if(tama_lv1_end > i){
+		    tama_lv1[i] = tama_lv1[tama_lv1_end];
+		    tama_lv1_end--;
+		    i--;
+		}
+
+	    }
+
+	}
+    
+    /*玉レベル2表示--------------------------*/
+    for(i = 0; i < tama_lv2_end + 1; i++) {
+	tama_lv2[i].y -= 10;
+	if(tama_lv2[i].rr == 1) {
+	    count++;
+	    PutSpriteF(ctx, tama_lv2[i].x+10, tama_lv2[i].y, tama_lv2[i].scale, bullets[4]);
+	}
+	if(tama_lv2[i].sr == 1) {
+	    count++;
+	    PutSpriteF(ctx, tama_lv2[i].x+5, tama_lv2[i].y, tama_lv2[i].scale, bullets[4]);
+	}
+	if(tama_lv2[i].sl == 1) {
+	    count++;
+	    PutSpriteF(ctx, tama_lv2[i].x-5, tama_lv2[i].y, tama_lv2[i].scale, bullets[4]);
+	}
+	if(tama_lv2[i].ll == 1) {
+	    count++;
+	    PutSpriteF(ctx, tama_lv2[i].x-10, tama_lv2[i].y, tama_lv2[i].scale, bullets[4]);
+	}
+	if(tama_lv2[i].y < 0) {
+	    if(tama_lv2_end == i) {
+		tama_lv2_end--;
+		break;
+	    }
+	    if(tama_lv2_end > i) {
+		tama_lv2[i] = tama_lv2[tama_lv2_end];
+		tama_lv2_end--;
+		i--;
+	    }
+	}
+    }
+
+
+    /* 照準コントロール--------------------- */
+    if(pad.r1 == 1) {
+	pad.r1 = 1;
+	jiki.point += 10;
+    }
+    if(pad.l1 == 1) {
+	pad.l1 = 1;
+	jiki.point -= 10;
+    }
+    jiki.point %= 360;
+    //    var siny = 50 * Mysin(jiki.point - 90) / SANKAKU;
+    //    var cosx = 30 + 50 * Mycos(jiki.point - 90) / SANKAKU;
+    var siny = -100 + 50 * Mysin(jiki.point - 90) / SANKAKU;
+    var cosx = -80 + 50 * Mycos(jiki.point - 90) / SANKAKU;
+
+    count++;
+    if(jiki.bf) PutSpriteA(ctx, (jiki.x + cosx * d_x), (jiki.y + siny * d_y), 1.0, jiki.point, bullets[1]);
+
+
+    /* 押してないときレーザーゲージ回復--------------------  */
+    if((pad.k1 == 0) && (pad.k0 == 0))
+	if (lg.stg <= MAXP)
+	    lg.stg += 4;
+    
+    /* レーザーレベル1登録---------------------------------- */
+    if((pad.k1 %3 == 1) && (pad.k0 == 0) && (lg.stg > 16)) {
+	//	PlaySdlMixer(0, RING)
+	SoundPlay(4);
+
+	pad.k1 = 1;
+	laser_lv1_end++;
+	var i = laser_lv1_end;
+
+	var tama = new laser();
+	tama.sx = ( 32 * Mysin(jiki.point) / SANKAKU ) * d_x;
+	tama.sy = (32 * Mycos(jiki.point) / SANKAKU) * d_y;
+	tama.x = jiki.x;// + 128*d_x;
+	tama.y = jiki.y;// + 128*d_y;
+	tama.r = 1000;
+	tama.s = 0.08;
+	tama.scale = 1.0;
+	lg.stg -= 16;
+	
+	laser_lv1[i] = tama;
+
+    }
+    /*laser_lv1表示----------------------------------*/
+    for(i = 0; i < laser_lv1_end + 1; i++) {
+	if(laser_lv1[i].r != -1) {
+	    laser_lv1[i].y -= laser_lv1[i].sy;
+	    laser_lv1[i].x += laser_lv1[i].sx;
+	    laser_lv1[i].r += 100;
+	    laser_lv1[i].s += 0.05;
+	    count++;
+	    //	    DefSpriteEx(16, 16, 16);
+	    //            PutSpriteEx(16, laser_lv1[i].x, laser_lv1[i].y, laser_lv1[i].s, laser_lv1[i].s, 1);
+		PutSpriteF(ctx, laser_lv1[i].x, laser_lv1[i].y, laser_lv1[i].scale, bullets[5]);
+	}
+	//	if(waku(laser_lv1[i].x, laser_lv1[i].y)) {
+	if( (laser_lv1[i].y < ortho.top ) || (laser_lv1[i].y > ortho.bottom)
+	    || (laser_lv1[i].x < ortho.left) || (laser_lv1[i].x > ortho.right)) {
+	    if(laser_lv1_end == i) {
+		laser_lv1_end--;
+		break;
+	    }
+	    if(laser_lv1_end > i) {
+		laser_lv1[i] = laser_lv1[laser_lv1_end];
+		laser_lv1_end--;
+		i--;
+	    }
+	}
+    }
+
+    /*レーザーレベル2登録--------------------------*/
+    if((pad.k1 == 0) && (pad.k0 != 0) && (lg.stg > 200)) {
+	    //	    PlaySdlMixer(0. NEW);
+	    if(laser_lv2[0].r == 0) {
+		laser_lv2[0].r = 1;
+		lg.stg -= 100;
+	    } else {
+		laser_lv2[0].r %= 45;
+		laser_lv2[0].r++;
+		lg.stg -= 10;
+	    }
+	} else {
+	    laser_lv2[0].r = 0;
+    }
+
+    /*レーザーレベル2表示 -----------------------*/
+    if(laser_lv2[0].r != 0) {
+	laser_lv2[0].x = jiki.x  + jiki.w*2 * Mysin(jiki.point) / SANKAKU;
+	laser_lv2[0].y = jiki.y  - jiki.w*2 * Mycos(jiki.point) / SANKAKU;
+	laser_lv2[0].scale = 1.0;
+	count++;
+	PutSpriteF(ctx, laser_lv2[0].x, laser_lv2[0].y, laser_lv2[0].scale, bullets[0]);
+    }
+
+
+}