comparison count2.c @ 0:435ac1cdb64e

create task dandy directry.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Sat, 11 Dec 2010 21:25:28 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:435ac1cdb64e
1 #include <stdlib.h>
2 #include "object.h"
3 #include "count2.h"
4 #include "sound.h"
5 #include "bom.h"
6 #include "sankaku.h"
7 //#include "libps.h"
8 #include "sgoex.h"
9 #include "debug.h"
10 extern int SsUtKeyOn(int vabId, int prog, int tone, int note, int fine, int voll, int vlor);
11
12
13 /*
14 * debugging
15 */
16 extern SGO_PAD pad[2];
17
18 player jiki = { 60, 200, 3, 0, FALSE, 120, 3, 3 };
19
20 laser laser_lv1[20];
21 laser laser_lv2[20];
22 stge lg = { 4096 };
23 stge pg = { 4096 };
24
25 int infg_level = { 0 };
26
27 stge infg = { 1 };
28
29 tama1 tama_lv1[20];
30 tama2 tama_lv2[20];
31 tama1 tlv3[3];
32
33 int py;
34 int bomcount = { 0 };
35 int charcount = { 0 };
36 int bania;
37
38 int pointkakudo(int playerno);
39
40 int bf = { 0 };
41
42 int tama_lv1_end = { -1 };
43 int tama_lv2_end = { -1 };
44 int laser_lv1_end = { -1 };
45 int laser_lv2_end = { -1 };
46
47 laser laser_lv3[64] = { {0, 0, 0, 0, 64, 0} };
48
49 int se_key[6] = { -1, -1, -1, -1, -1, -1 };
50
51 void Player(int playerno)
52 {
53 int i;
54 float wariai1, wariai2;
55 /*
56 if (jiki.zanki > 0) {
57 DefSprite(194, "remainder.bmp", 8 * (jiki.zanki - 1), 8, 480, effect);
58 count++;
59 PutSprite(count, 128, 224, 194);
60 }
61 */
62 if (jiki.bf == FALSE) {
63 Bom(jiki.x, jiki.y);
64 return;
65 }
66 /*時機無敵時間計算 */
67 if (jiki.muteki > 0 && jiki.bf == TRUE) {
68 count++;
69 // PutSprite(count, jiki.x + 16, jiki.y + 16, 193);
70 PutSpriteEx(193, jiki.x + 16, jiki.y + 16, 2, 2, 1);
71 count++;
72 // PutSprite(count, jiki.x + 16, jiki.y + 16, 193);
73 PutSpriteEx(193, jiki.x + 16, jiki.y + 16, 2, 2, 1);
74
75 jiki.muteki--;
76 }
77 /*コントローラ上限値-------------------------------- */
78 maxf(pad[0].right, 3);
79 maxf(pad[0].left, 3);
80 maxf(pad[0].up, 3);
81 maxf(pad[0].down, 3);
82
83
84 /*自機の動き---------------------------------------- */
85 jiki.x += pad[0].right - pad[0].left;
86 jiki.y += pad[0].down - pad[0].up;
87
88
89 /*自機の動き---------------------------------------- */
90 mini(jiki.x, 0);
91 maxf(jiki.x, 1688 - 128);
92 mini(jiki.y, 0);
93 maxf(jiki.y, 964 - 128);
94
95 if (pad[0].right > 0) {
96 if (charcount < 0)
97 charcount = 0;
98 else
99 charcount++;
100 }
101 if (pad[0].left > 0) {
102 if (charcount > 0)
103 charcount = 0;
104 else
105 charcount--;
106 }
107 if ((pad[0].left == 0) && (pad[0].right == 0))
108 charcount = 0;
109 jiki.ch =
110 3 * (charcount < 3) * (charcount > -3) + 2 * (charcount <
111 -3) * (charcount >=
112 -15) +
113 1 * (charcount < -15)
114 + 4 * (charcount > 3) * (charcount <= 15) + 5 * (charcount > 15);
115
116
117 /*玉レベル1登録------------------------------------ */
118 if ((pad[0].k4 % 3 == 1) && (pad[0].k3 % 3 == 0)) {
119
120 PlaySdlMixer(0, SHOT_A);// output sound
121 //se_voice[0] = SsUtKeyOn(vab[SHOT_A], 0, 0, 65, 0, 60, 60);
122 pad[0].k4 = 1;
123 tama_lv1_end++;
124 i = tama_lv1_end;
125
126 tama_lv1[i].x = jiki.x;
127 tama_lv1[i].y = jiki.y;
128 tama_lv1[i].r = 1;
129 tama_lv1[i].l = 1;
130
131 if (pg.stg <= MAXP)
132 pg.stg += 1;
133 }
134 /*玉レベル2登録------------------------------------ */
135 if ((pad[0].k3 % 3 == 1) && (pad[0].k4 == 0) && (pg.stg > 64)) {
136
137 PlaySdlMixer(0, SHOT_B);// output sound
138 //se_key[1] = SsUtKeyOn(vab[SHOT_B], 0, 0, 65, 0, 80, 80);
139 se_key[1] = SsUtKeyOn(vab[SHOT_B], 0, 0, 65, 0, 80, 80);
140 pad[0].k3 = 1;
141 tama_lv2_end++;
142 i = tama_lv2_end;
143
144 tama_lv2[i].x = jiki.x;
145 tama_lv2[i].y = jiki.y;
146 tama_lv2[i].rr = 1;
147 tama_lv2[i].sr = 1;
148 tama_lv2[i].sl = 1;
149 tama_lv2[i].ll = 1;
150
151 pg.stg -= 64;
152 }
153 /*玉レベル3登録------------------------------------- */
154 if ((pad[0].k3 % 5 > 0) && (pad[0].k4 % 5 > 0)) {
155 pad[0].k3 = 1;
156 pad[0].k4 = 1;
157 i = 0;
158 while (tlv3[i].y != -1) {
159 i++;
160 }
161 if ((i < 1) && (pg.stg > 2000)) {
162 PlaySdlMixer(0,SHOT_C); // re-za-
163 //se_voice[0] = SsUtKeyOn(vab[SHOT_C], 0, 0, 65, 0, 75, 75);
164 se_voice[0] = SsUtKeyOn(vab[SHOT_C], 0, 0, 65, 0, 75, 75);
165 tlv3[i].x = jiki.x;
166 tlv3[i].y = jiki.y;
167 pg.stg -= 2000;
168 tlv3[i].r = 90;
169 jiki.muteki = 4;
170 }
171 }
172 /*押してないときの玉ゲージ回復---------------------- */
173 if ((pad[0].k3 == 0) && (pad[0].k4 == 0))
174 if (pg.stg <= MAXP)
175 pg.stg += 4;
176 /*玉レベル1表示------------------------------ */
177 for (i = 0; i < tama_lv1_end + 1; i++) {
178 tama_lv1[i].y -= 64;
179 if (tama_lv1[i].r == 1) {
180 count++;
181 PutSprite(count, tama_lv1[i].x + 64, tama_lv1[i].y, 6);
182 }
183 if (tama_lv1[i].l == 1) {
184 count++;
185 PutSprite(count, tama_lv1[i].x, tama_lv1[i].y, 7);
186 }
187 if (tama_lv1[i].y < 0) {
188 if (tama_lv1_end == i) {
189 tama_lv1_end--;
190 break;
191 }
192 if (tama_lv1_end > i) {
193 tama_lv1[i] = tama_lv1[tama_lv1_end];
194 tama_lv1_end--;
195 i--;
196 }
197 }
198 }
199 /*玉レベル2表示------------------------------ */
200 for (i = 0; i < tama_lv2_end + 1; i++) {
201 tama_lv2[i].y -= 64;
202 if (tama_lv2[i].rr == 1) {
203 count++;
204 PutSprite(count, tama_lv2[i].x + 128, tama_lv2[i].y-96, 8);
205 }
206 if (tama_lv2[i].sr == 1) {
207 count++;
208 PutSprite(count, tama_lv2[i].x + 64, tama_lv2[i].y - 192, 8);
209 }
210 if (tama_lv2[i].sl == 1) {
211 count++;
212 PutSprite(count, tama_lv2[i].x, tama_lv2[i].y - 192, 8);
213 }
214 if (tama_lv2[i].ll == 1) {
215 count++;
216 PutSprite(count, tama_lv2[i].x - 64, tama_lv2[i].y-92, 8);
217 }
218 if (tama_lv2[i].y < 0) {
219 if (tama_lv2_end == i) {
220 tama_lv2_end--;
221 break;
222 }
223 if (tama_lv2_end > i) {
224 tama_lv2[i] = tama_lv2[tama_lv2_end];
225 tama_lv2_end--;
226 i--;
227 }
228 }
229 }
230 /*玉レベル3表示----------------------------------- */
231 if (tlv3[0].r > 0) {
232 /*波動砲本体 */
233 tlv3[0].x = jiki.x + 96;
234 tlv3[0].y = jiki.y;
235 count++;
236 // PutSprite(count, tlv3[0].x, tlv3[0].y - 128, 9);
237 PutSpriteEx(9, tlv3[0].x, tlv3[0].y - 128, tlv3[0].r *2 /45, 3, 1);
238
239
240 /*干渉部分 */
241 //DefSprite(39, 0, 16, 112 - ((tlv3[0].r % 8) / 2) * 16, 16, 16,
242 // 480);
243
244 /*波動砲干渉部分 */
245 count++;
246 // PutSprite(count, jiki.x + 16, jiki.y + 32, 39);
247 PutSpriteEx(39, jiki.x + 16, jiki.y + 32, 2, 2, 1);
248
249 /*終了フラグ */
250 tlv3[0].r--;
251 if (tlv3[0].r == 0)
252 tlv3[0].y = -1;
253 }
254 /* } */
255 /*玉ゲージの中身表示------------------------- */
256 wariai2 = pg.stg;
257 wariai1 = wariai2 / 4096.0;
258 py = 64.0 * wariai1;
259
260 //DefSprite(11, "offensivepower_gauge.bmp", 8, py, 480, effect);
261 count++;
262 //PutSprite(count, 0, 240 - 96 + 64 - py, 11);
263 /*レーザーゲージの中身表示------------------------ */
264 wariai2 = lg.stg;
265 wariai1 = wariai2 / 4096.0;
266 py = 64.0 * wariai1;
267 //DefSprite(15, "diffensivepower_gauge.bmp", 9, py, 480, effect);
268
269 count++;
270 //PutSprite(count, 18, 240 - 105, 15);
271 /*インフレゲージ------------------------------------- */
272 if (infg.stg > 640) {
273 infg.stg = 0;
274 infg_level++;
275 if (infg_level > 11) {
276 infg_level = 11;
277 infg.stg = 640;
278 }
279 }
280 py = infg.stg / 8;
281 //DefSprite(49, "inflation_meter.bmp", 16, py, 320, effect);
282
283 #define REGULATION_PUTSIZE_X 5
284 count++;
285 //PutSprite(count, REGULATION_PUTSIZE_X + 4 - 7, 24 + 83 - py, 49);
286 count++;
287 //PutSprite(count, REGULATION_PUTSIZE_X + 0, 40 + 80, 200 + infg_level);
288
289 /*バーニアアニメーション----------------------------- */
290 bania++;
291 bania %= 3;
292 //DefSprite(12, "burner.bmp", 16, 16, 480, effect);
293 count++;
294 //PutSprite(count, jiki.x + 8, jiki.y + 32, 12);
295
296 /*照準コントロール----------------------------------- */
297 if (pad[0].r1 % 2 == 1) {
298 pad[0].r1 = 1;
299 jiki.point += 10;
300 }
301 if (pad[0].l1 % 2 == 1) {
302 pad[0].l1 = 1;
303 jiki.point -= 10;
304 }
305 jiki.point %= 360;
306 int siny = 50 * Mysin(jiki.point - 90) / SANKAKU;
307 int cosx = 30 + 50 * Mycos(jiki.point - 90) / SANKAKU;
308 count++;
309 DefSpriteEx(13, 4, 64);
310 // PutSprite(count, jiki.x + 16, jiki.y, 13);
311 PutSpriteEx(13, jiki.x + cosx, jiki.y + siny, 2, 2, jiki.point);
312 /*押してないときレーザーゲージ回復------------------- */
313
314 if ((pad[0].k1 == 0) && (pad[0].k0 == 0))
315 if (lg.stg <= MAXP)
316 lg.stg += 4;
317 /*レーザーレベル1登録------------------------------- */
318 if ((pad[0].k1 % 3 == 1) && (pad[0].k0 == 0) && (lg.stg > 16)) {
319 PlaySdlMixer(0, RING) ; // RING
320
321 //se_key[3] = SsUtKeyOn(vab[LASER_A], 0, 0, 65, 0, 50, 50);
322 pad[0].k1 = 1;
323 laser_lv1_end++;
324 i = laser_lv1_end;
325
326 laser_lv1[i].sx = 32 * Mysin(jiki.point) / SANKAKU;
327 laser_lv1[i].sy = 32 * Mycos(jiki.point) / SANKAKU;
328 laser_lv1[i].x = jiki.x + 128;
329 laser_lv1[i].y = jiki.y + 128;
330 laser_lv1[i].r = 1000;
331 laser_lv1[i].s = 0.08;
332 lg.stg -= 16;
333 }
334 /*--------------------------------------------------*/
335 for (i = 0; i < laser_lv1_end + 1; i++) {
336 if (laser_lv1[i].r != -1) {
337 laser_lv1[i].y -= laser_lv1[i].sy;
338 laser_lv1[i].x += laser_lv1[i].sx;
339 laser_lv1[i].r += 100;
340 laser_lv1[i].s += 0.05;
341 count++;
342 DefSpriteEx(16, 16, 16);
343 // PutSprite(count, laser_lv1[i].x, laser_lv1[i].y, 16);
344 PutSpriteEx(16, laser_lv1[i].x, laser_lv1[i].y, laser_lv1[i].s, laser_lv1[i].s, 1);
345 }
346 if (waku(laser_lv1[i].x, laser_lv1[i].y)) {
347 if (laser_lv1_end == i) {
348 laser_lv1_end--;
349 break;
350 }
351 if (laser_lv1_end > i) {
352 laser_lv1[i] = laser_lv1[laser_lv1_end];
353 laser_lv1_end--;
354 i--;
355 }
356 }
357 }
358 /*レーザーレベル2登録------------------------------- */
359 if ((pad[0].k1 == 0) && (pad[0].k0 != 0) && (lg.stg > 200)) {
360 PlaySdlMixer(0, NEW) ;// SHIELD
361
362 if (laser_lv2[0].r == 0) {
363 laser_lv2[0].r = 1;
364 lg.stg -= 100;
365 } else {
366 laser_lv2[0].r %= 45;
367 laser_lv2[0].r++;
368 lg.stg -= 10;
369 }
370 } else {
371 laser_lv2[0].r = 0;
372 }
373 /*------------------------------------*/
374 if (laser_lv2[0].r != 0) {
375 laser_lv2[0].x = jiki.x + 128 + 256 * Mysin(jiki.point) / SANKAKU;
376 laser_lv2[0].y = jiki.y + 128 - 256 * Mycos(jiki.point) / SANKAKU;
377 count++;
378 // PutSprite(count, laser_lv2[0].x, laser_lv2[0].y, 17);
379 PutSpriteEx(17, laser_lv2[0].x, laser_lv2[0].y, 2, 2, laser_lv2[0].r * 8);
380 }
381
382 /*ここに特殊兵器ボムの関数をよろしく*/
383 /*発射準備 (laser_lv3[playerno][0] は、爆発発生の種。)*/
384 if ((pad[0].k1 > 0) && (pad[0].k0 > 0)
385 && (lg.stg > 2400) && (laser_lv3[0].r > 61)) {
386 PlaySdlMixer(0, BOM) ;// BOM
387 //se_voice[0] = SsUtKeyOn(vab[LASER_C], 0, 0, 65, 0, 70, 70);
388
389 laser_lv3[0].x = jiki.x + 256 * Mysin(jiki.point) / SANKAKU;
390 laser_lv3[0].y = jiki.y - 256 * Mycos(jiki.point) / SANKAKU;
391 laser_lv3[0].r = 0;
392 lg.stg -= 2400;
393 jiki.muteki = 60;
394 }
395 if (laser_lv3[0].r < 62) { /*ボムフラグ継続か */
396 laser_lv3[0].r++;
397 if (laser_lv3[0].r % 2 == 0) { /*爆風発生 */
398 laser_lv3[1 + laser_lv3[0].r / 2].r = 8;
399 laser_lv3[1 + laser_lv3[0].r / 2].x =
400 laser_lv3[0].x + rand() % 640 - 320;
401 laser_lv3[1 + laser_lv3[0].r / 2].y =
402 laser_lv3[0].y + rand() % 640 - 320;
403 }
404 }
405 /*ボムノアニメーション */
406 for (i = 1; i < 32; i++) {
407 if (laser_lv3[i].r > 0) {
408 laser_lv3[i].r--;
409 count++;
410 // PutSprite(count, laser_lv3[i].x, laser_lv3[i].y,
411 // 47 - (laser_lv3[i].r));
412 PutSpriteEx(47 - (laser_lv3[i].r), laser_lv3[i].x, laser_lv3[i].y, 4, 4, 1);
413 }
414 }
415 }