comparison 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
comparison
equal deleted inserted replaced
0:718974a1a32b 1:54589bb5e57d
1 lg = new Object();
2 lg.stg = 0;//レーザーゲージ
3 pg = new Object();
4 pg.stg = 0;
5 infg = new Object();
6 infg.stg = 0;
7 infg_level = 0;
8 p_extend = 0;
9 fastebos = 0;
10 se_key = [-1,-1,-1,-1,-1,-1];
11
12 rswait = 0;
13
14 function Pad()
15 {
16 this.up=0;
17 this.down=0;
18 this.right=0;
19 this.left=0;
20 this.count=0;
21 this.ccount=0;
22 this.state=0;
23 this.k0=0;
24 this.k1=0;
25 this.k2=0;
26 this.k3=0;
27 this.k4=0;
28 this.r2=0;
29 this.r1=0;
30 this.r2=0;
31 this.l1=0;
32 this.l2=0;
33 this.l3=0;
34 this.se=0;
35 this.st=0;
36
37 //勝手につけた
38 this.quit=0;
39 this.start=0;
40 return this;
41 }
42
43 function makePlayer( object )
44 {
45 this.x = 100;
46 this.y = 100;
47 this.z = 10;
48 this.ch = 0;
49 this.dx = 0;
50 this.dy = 0;
51 this.scale = 1.0;
52 this.muteki = 120;
53 this.bf = true;
54 this.zanki = 3;
55 this.point = 0;
56 this.count = 0;
57 this.ccount = 0;
58 this.idle = object["player_idle"];
59 this.rightmove = object["player_rightmove"];
60 this.leftmove = object["player_leftmove"];
61 this.turntoright = object["player_turnright"];
62 this.turntoleft = object["player_turnleft"];
63 this.image = this.idle;
64 this.w = this.image.w;
65 this.h = this.image.h;
66 this.vertexObject = new Object();
67 this.normalObject = new Object();
68 this.texCoordObject = new Object();
69 this.indexObject = new Object();
70 this.numIndices = new Object();
71 this.texture=new Object();
72
73 return this;
74 }
75
76
77
78 function loadImageJiki( jiki, Image)
79 {
80 jiki.vertexObject = Image.vertexObject;
81 jiki.normalObject = Image.normalObject;
82 jiki.texCoordObject = Image.texCoordObject;
83 jiki.indexObject = Image.indexObject;
84 jiki.numIndices = Image.numIndices;
85 jiki.texture = Image.texture;
86 }
87
88
89
90 function Player(ctx, jiki, pad, ortho )
91 {
92
93
94
95 /*自機無敵計算*/
96 /*
97 if(jiki.muteki > 0 && jiki.bf == true){
98 cout++;
99 jiki.muteki--;
100 }
101 */
102
103
104 pad.right = Math.min(pad.right, 0.7);
105 pad.left = Math.min(pad.left, 0.7);
106 pad.up = Math.min(pad.up, 0.7);
107 pad.down = Math.min(pad.down, 0.7);
108
109 /*コントローラー上限値----------------------*/
110 jiki.x += pad.right;
111 jiki.x -= pad.left;
112 jiki.y -= pad.up;
113 jiki.y += pad.down;
114
115 /*自機の動き--------------------------------*/
116 jiki.x = Math.min(jiki.x, ortho.right - jiki.w/2);
117 jiki.x = Math.max(jiki.x, ortho.left + jiki.w/2);
118 jiki.y = Math.min(jiki.y, ortho.bottom - jiki.w/2);
119 jiki.y = Math.max(jiki.y, ortho.top + jiki.w/2);
120
121 if( pad.count == 1) pad.state=0;
122 if( pad.count > 0) pad.state=1;
123 if( pad.count > 10 ) pad.state=2;
124
125 if( pad.state == 0 ) loadImageJiki(jiki, jiki.idle);
126 if( pad.state == 1 ) {
127 if( pad.right > 0 ) loadImageJiki(jiki, jiki.turntoright);
128 if( pad.left > 0 )loadImageJiki(jiki, jiki.turntoleft);
129 }
130 if( pad.state == 2 ) {
131 if( pad.right > 0 ) loadImageJiki(jiki, jiki.rightmove);
132 if( pad.left > 0 ) loadImageJiki(jiki, jiki.leftmove);
133 }
134 //分かりやすいように横幅と縦幅はjiki.w,jiki.hに直でいれておく
135 jiki.w = jiki.image.w;
136 jiki.h = jiki.image.h;
137
138
139 // if(jiki.muteki < 5) alert("jiki.muteki "+jiki.muteki);
140 if(jiki.muteki > 0) jiki.muteki--;
141 if(jiki.bf == true) {
142 PutSpriteF(ctx, jiki.x, jiki.y, jiki.scale, jiki);
143 } else {
144
145 /* 自機が復活するまでは玉は撃たせない */
146 pad.k4 = 0;
147 pad.k3 = 0;
148 pad.k1 = 0;
149 pad.k0 = 0;
150 }
151
152
153
154 //玉レベル1登録
155 if ((pad.k4 % 3 == 1) && (pad.k3 % 3 == 0)){
156 pad.k4 = 1;
157 // audioShoot && audioShoot.play();//このaudioは試験使用中.global宣言されてる奴(htmlファイルのなかで)
158 SoundPlay(1);
159
160 tama_lv1_end++;
161
162 // if(tama_lv1_end > 19) tama_lv1_end = 0;
163 i = tama_lv1_end;
164 // if(tama_lv1_end > 50) alert(tama_lv1_end);
165
166 tama = new tama1();
167 tama.x = jiki.x;
168 tama.y = jiki.y;
169 tama.r = 1;
170 tama.l = 1;
171 tama.scale = 1.0; //玉がでかいので調整
172 tama_lv1[i] = tama;
173 }
174
175 /*玉レベル2登録--------------------------------------*/
176 if((pad.k3 % 3 == 1) && (pad.k4 == 0) && (pg.stg > 64)) {
177 // PlaySdlMixer(0, SHOT_B);
178 SoundPlay(2);
179
180 // se_key[1] = SsUtKeyOn(vab[SHOT_B], 0, 0, 65, 0, 80, 80);
181
182 pad.k3 = 1;
183 tama_lv2_end++;
184 i = tama_lv2_end;
185
186 tama = new tama2();
187 tama.x = jiki.x;
188 tama.y = jiki.y;
189 tama.rr = 1;
190 tama.sr = 1;
191 tama.sl = 1;
192 tama.ll = 1;
193 tama.scale = 1.0;//少し画像がでかいので調整
194
195 tama_lv2[i] = tama;
196
197 pg.stg -= 64;
198 }
199
200 /*押してないときの玉ゲージ回復-------------------*/
201 if ((pad.k3 == 0) && (pad.k4 == 0))
202 if(pg.stg <= MAXP)
203 pg.stg += 4;
204
205 //玉レベル1表示
206 for (i = 0; i < tama_lv1_end + 1; i++)
207 {
208 tama_lv1[i].y -= 10;
209 if (tama_lv1[i].r == 1) {
210 PutSpriteF(ctx, tama_lv1[i].x+5, tama_lv1[i].y, tama_lv1[i].scale, bullets[2]);
211 }
212 if (tama_lv1[i].l == 1) {
213 PutSpriteF(ctx, tama_lv1[i].x-5, tama_lv1[i].y, tama_lv1[i].scale, bullets[2]);
214 }
215 if (tama_lv1[i].y < ortho.top) {
216 if(tama_lv1_end == i){
217 tama_lv1_end--;
218 break;
219 }
220 if(tama_lv1_end > i){
221 tama_lv1[i] = tama_lv1[tama_lv1_end];
222 tama_lv1_end--;
223 i--;
224 }
225
226 }
227
228 }
229
230 /*玉レベル2表示--------------------------*/
231 for(i = 0; i < tama_lv2_end + 1; i++) {
232 tama_lv2[i].y -= 10;
233 if(tama_lv2[i].rr == 1) {
234 count++;
235 PutSpriteF(ctx, tama_lv2[i].x+10, tama_lv2[i].y, tama_lv2[i].scale, bullets[4]);
236 }
237 if(tama_lv2[i].sr == 1) {
238 count++;
239 PutSpriteF(ctx, tama_lv2[i].x+5, tama_lv2[i].y, tama_lv2[i].scale, bullets[4]);
240 }
241 if(tama_lv2[i].sl == 1) {
242 count++;
243 PutSpriteF(ctx, tama_lv2[i].x-5, tama_lv2[i].y, tama_lv2[i].scale, bullets[4]);
244 }
245 if(tama_lv2[i].ll == 1) {
246 count++;
247 PutSpriteF(ctx, tama_lv2[i].x-10, tama_lv2[i].y, tama_lv2[i].scale, bullets[4]);
248 }
249 if(tama_lv2[i].y < 0) {
250 if(tama_lv2_end == i) {
251 tama_lv2_end--;
252 break;
253 }
254 if(tama_lv2_end > i) {
255 tama_lv2[i] = tama_lv2[tama_lv2_end];
256 tama_lv2_end--;
257 i--;
258 }
259 }
260 }
261
262
263 /* 照準コントロール--------------------- */
264 if(pad.r1 == 1) {
265 pad.r1 = 1;
266 jiki.point += 10;
267 }
268 if(pad.l1 == 1) {
269 pad.l1 = 1;
270 jiki.point -= 10;
271 }
272 jiki.point %= 360;
273 // var siny = 50 * Mysin(jiki.point - 90) / SANKAKU;
274 // var cosx = 30 + 50 * Mycos(jiki.point - 90) / SANKAKU;
275 var siny = -100 + 50 * Mysin(jiki.point - 90) / SANKAKU;
276 var cosx = -80 + 50 * Mycos(jiki.point - 90) / SANKAKU;
277
278 count++;
279 if(jiki.bf) PutSpriteA(ctx, (jiki.x + cosx * d_x), (jiki.y + siny * d_y), 1.0, jiki.point, bullets[1]);
280
281
282 /* 押してないときレーザーゲージ回復-------------------- */
283 if((pad.k1 == 0) && (pad.k0 == 0))
284 if (lg.stg <= MAXP)
285 lg.stg += 4;
286
287 /* レーザーレベル1登録---------------------------------- */
288 if((pad.k1 %3 == 1) && (pad.k0 == 0) && (lg.stg > 16)) {
289 // PlaySdlMixer(0, RING)
290 SoundPlay(4);
291
292 pad.k1 = 1;
293 laser_lv1_end++;
294 var i = laser_lv1_end;
295
296 var tama = new laser();
297 tama.sx = ( 32 * Mysin(jiki.point) / SANKAKU ) * d_x;
298 tama.sy = (32 * Mycos(jiki.point) / SANKAKU) * d_y;
299 tama.x = jiki.x;// + 128*d_x;
300 tama.y = jiki.y;// + 128*d_y;
301 tama.r = 1000;
302 tama.s = 0.08;
303 tama.scale = 1.0;
304 lg.stg -= 16;
305
306 laser_lv1[i] = tama;
307
308 }
309 /*laser_lv1表示----------------------------------*/
310 for(i = 0; i < laser_lv1_end + 1; i++) {
311 if(laser_lv1[i].r != -1) {
312 laser_lv1[i].y -= laser_lv1[i].sy;
313 laser_lv1[i].x += laser_lv1[i].sx;
314 laser_lv1[i].r += 100;
315 laser_lv1[i].s += 0.05;
316 count++;
317 // DefSpriteEx(16, 16, 16);
318 // PutSpriteEx(16, laser_lv1[i].x, laser_lv1[i].y, laser_lv1[i].s, laser_lv1[i].s, 1);
319 PutSpriteF(ctx, laser_lv1[i].x, laser_lv1[i].y, laser_lv1[i].scale, bullets[5]);
320 }
321 // if(waku(laser_lv1[i].x, laser_lv1[i].y)) {
322 if( (laser_lv1[i].y < ortho.top ) || (laser_lv1[i].y > ortho.bottom)
323 || (laser_lv1[i].x < ortho.left) || (laser_lv1[i].x > ortho.right)) {
324 if(laser_lv1_end == i) {
325 laser_lv1_end--;
326 break;
327 }
328 if(laser_lv1_end > i) {
329 laser_lv1[i] = laser_lv1[laser_lv1_end];
330 laser_lv1_end--;
331 i--;
332 }
333 }
334 }
335
336 /*レーザーレベル2登録--------------------------*/
337 if((pad.k1 == 0) && (pad.k0 != 0) && (lg.stg > 200)) {
338 // PlaySdlMixer(0. NEW);
339 if(laser_lv2[0].r == 0) {
340 laser_lv2[0].r = 1;
341 lg.stg -= 100;
342 } else {
343 laser_lv2[0].r %= 45;
344 laser_lv2[0].r++;
345 lg.stg -= 10;
346 }
347 } else {
348 laser_lv2[0].r = 0;
349 }
350
351 /*レーザーレベル2表示 -----------------------*/
352 if(laser_lv2[0].r != 0) {
353 laser_lv2[0].x = jiki.x + jiki.w*2 * Mysin(jiki.point) / SANKAKU;
354 laser_lv2[0].y = jiki.y - jiki.w*2 * Mycos(jiki.point) / SANKAKU;
355 laser_lv2[0].scale = 1.0;
356 count++;
357 PutSpriteF(ctx, laser_lv2[0].x, laser_lv2[0].y, laser_lv2[0].scale, bullets[0]);
358 }
359
360
361 }