Mercurial > hg > Game > WebGL
view 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 source
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]); } }