Mercurial > hg > Members > kono > tree_dandy2
comparison Character_state.c @ 0:01387a2e419e
initial version
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 07 Dec 2010 15:39:45 +0900 |
parents | |
children | 3b92a4b17049 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:01387a2e419e |
---|---|
1 #include <stdio.h> | |
2 #include <stdlib.h> | |
3 #include <SDL.h> | |
4 #include "SDL_opengl.h" | |
5 #include "object.h" | |
6 #include "Character.h" | |
7 #include "Character_state.h" | |
8 #include "count2.h" | |
9 #include "schedule.h" | |
10 #include "bom.h" | |
11 #include "sankaku.h" | |
12 #include "sgoex.h" | |
13 #include "collision.h" | |
14 #include "debug.h" | |
15 #include "tama.h" | |
16 | |
17 CHARACTER *kyeenemyno; | |
18 CHARACTER *tekino0; | |
19 CHARACTER *enemy_part1; | |
20 CHARACTER *enemy_part2; | |
21 CHARACTER *enemy_part3; | |
22 CHARACTER *enemy_part4; | |
23 CHARACTER *enemy_part5; | |
24 | |
25 //int tekino0; | |
26 int rinkx; | |
27 int rinky; | |
28 int rinkf1 = 0, rinkf2 = 0; | |
29 CHARACTER *asteroiddt[200]; | |
30 int asteroidi = 0; | |
31 int enemyfaste = 0; | |
32 int sf; | |
33 int amari; | |
34 int fastebos = 0; | |
35 | |
36 CHARACTER * noaction(CHARACTER *p) | |
37 { | |
38 p->state = noaction; | |
39 return p; | |
40 } | |
41 | |
42 CHARACTER * chara_state0(CHARACTER *p) | |
43 { | |
44 p->x += p->vx; | |
45 p->y += p->vy; | |
46 p->state = chara_state0; | |
47 //PutSprite(count, p->x, p->y, p->charano); | |
48 return p; | |
49 } | |
50 | |
51 CHARACTER * chara_state1(CHARACTER *p) | |
52 { | |
53 p->x -= p->vx; | |
54 p->y -= p->vy; | |
55 p->state = chara_state1; | |
56 //PutSprite(count, p->x, p->y, p->charano); | |
57 return p; | |
58 } | |
59 | |
60 CHARACTER * chara_state2(CHARACTER *p) | |
61 { | |
62 p->vy -= 0.25; | |
63 p->y += p->vy; | |
64 p->state = chara_state2; | |
65 //PutSprite(count, p->x, p->y, p->charano); | |
66 return p; | |
67 } | |
68 | |
69 CHARACTER * chara_state3(CHARACTER *p) | |
70 { | |
71 p->x += p->vx; | |
72 p->y += p->vy; | |
73 if((p->dt1 == 60) || | |
74 (p->dt1 == 90) || | |
75 (p->dt1 == 30)) | |
76 { | |
77 Puttama(0, p->x, p->y); | |
78 } | |
79 p->dt1++; | |
80 p->state = chara_state3; | |
81 //PutSprite(count, p->x, p->y, p->charano); | |
82 return p; | |
83 } | |
84 | |
85 CHARACTER * chara_state4(CHARACTER *p) | |
86 { | |
87 p->y += p->vy; | |
88 p->x += p->vx; | |
89 if(p->y < jiki.y && p->y + 16 > jiki.y) | |
90 { | |
91 p->vy = -2; | |
92 p->vx = ((jiki.x > p->x) ? 4 : -4); | |
93 p->state = chara_state7; | |
94 } | |
95 else p->state = chara_state4; | |
96 //PutSprite(count, p->x, p->y, p->charano); | |
97 return p; | |
98 } | |
99 | |
100 CHARACTER * chara_state5(CHARACTER *p) | |
101 { | |
102 p->y += p->vy; | |
103 p->x += p->vx; | |
104 if(p->y + 96 < jiki.y | |
105 && p->y + 128 > jiki.y) | |
106 { | |
107 p->vy = -2; | |
108 p->vx = ((jiki.x > p->x) ? 4 : -4); | |
109 p->state = chara_state0; | |
110 } | |
111 else p->state = chara_state5; | |
112 //PutSprite(count, p->x, p->y, p->charano); | |
113 return p; | |
114 } | |
115 | |
116 CHARACTER * chara_state6(CHARACTER *p) | |
117 { | |
118 p->y += p->vy; | |
119 p->x += p->vx; | |
120 if(p->y + 96 < jiki.y | |
121 && p->y + 128 > jiki.y) | |
122 { | |
123 p->vy = 2; | |
124 p->vx = ((jiki.x > p->x) ? 4 : -4); | |
125 p->state = chara_state0; | |
126 } | |
127 else p->state = chara_state6; | |
128 //PutSprite(count, p->x, p->y, p->charano); | |
129 return p; | |
130 } | |
131 | |
132 CHARACTER * chara_state7(CHARACTER *p) | |
133 { | |
134 p->x += p->vx; | |
135 p->y += p->vy; | |
136 if((p->dt1 == 60) || (p->dt1 == 90) | |
137 || (p->dt1 == 30)) | |
138 { | |
139 Puttama(1, p->x, p->y); | |
140 } | |
141 p->dt1++; | |
142 p->state = chara_state7; | |
143 //PutSprite(count, p->x, p->y, p->charano); | |
144 return p; | |
145 } | |
146 | |
147 // state1 boss patern | |
148 CHARACTER * chara_state8(CHARACTER *p) | |
149 { | |
150 if(p->y < 520) | |
151 { | |
152 tekino0 = p; | |
153 kyeenemyno = p; | |
154 p->y += p->vy; | |
155 count++; | |
156 DefSpriteEx(p->charano, 16*4, 32*4); | |
157 PutSpriteEx(p->charano, (p->x * 4), (p->y * 4), 0.2, 0.2, 1); | |
158 p->dt1 = 512; | |
159 p->s = 0.125; | |
160 p->state = chara_state8; | |
161 return p; | |
162 } | |
163 p->state = chara_state9; | |
164 return p; | |
165 } | |
166 | |
167 CHARACTER * chara_state9(CHARACTER *p) | |
168 { | |
169 if(p->s <= 2) | |
170 { | |
171 p->s += 0.05; | |
172 p->y -= 12; | |
173 count++; | |
174 DefSpriteEx(54, 16*4, 32*4); | |
175 PutSpriteEx(54, (p->x * 4), (p->y * 4), p->s, p->s, 1); | |
176 p->state = chara_state9; | |
177 return p; | |
178 } | |
179 count++; | |
180 DefSpriteEx(54, 16, 32); | |
181 PutSpriteEx(54, p->x, p->y, p->s, p->s, 1); | |
182 rinkx = p->x; | |
183 rinky = p->y; | |
184 Putenemy(5, rinkx - 16, rinky - 16, 1, 0, chara_state10); | |
185 Putenemy(5, rinkx - 16, rinky - 16, -1, 0, chara_state10); | |
186 p->state = chara_state11; | |
187 p->dt1 = 8192; | |
188 return p; | |
189 } | |
190 | |
191 | |
192 CHARACTER * chara_state10(CHARACTER *p) | |
193 { | |
194 if(p->dt1 < 48) | |
195 { | |
196 p->x += p->vx; | |
197 p->y += p->vy; | |
198 p->dt1++; | |
199 p->state = chara_state10; | |
200 //PutSprite(count, p->x, p->y, | |
201 return p; | |
202 } | |
203 rinkf1 = 1; | |
204 p->dt1 = rinkx; | |
205 p->dt2 = rinky; | |
206 p->state = chara_state13; | |
207 return p; | |
208 } | |
209 | |
210 | |
211 CHARACTER * chara_state11(CHARACTER *p) | |
212 { | |
213 if(rinkf1 == 0) | |
214 { | |
215 count++; | |
216 DefSpriteEx(54, 16, 32); | |
217 PutSpriteEx(54, p->x, p->y, p->s, p->s, 1); | |
218 p->state = chara_state11; | |
219 return p; | |
220 } | |
221 p->dt1 = 0; | |
222 p->dt2 = 0; | |
223 p->state = chara_state12; | |
224 return p; | |
225 } | |
226 | |
227 CHARACTER * chara_state12(CHARACTER *p) | |
228 { | |
229 if(fastebos > 60*60) | |
230 { | |
231 if(p->y > 240+32) | |
232 { | |
233 p->state = delete_chara; | |
234 } | |
235 p->y += 3; | |
236 rinky += 3; | |
237 count++; | |
238 DefSpriteEx(54, 16, 32); | |
239 PutSpriteEx(54, p->x, p->y, 2, 2, 1); | |
240 p->state = chara_state12; | |
241 return p; | |
242 } | |
243 if(p->dt1 <= 60) | |
244 { | |
245 if(jiki.x + 15 - rinkx < -5) | |
246 { | |
247 p->vx = -0.8; | |
248 } | |
249 else if(jiki.x + 15 - rinkx > 5) | |
250 { | |
251 p->vx = +0.8; | |
252 } | |
253 else p->vx = 0; | |
254 rinkx = p->x; | |
255 rinky = p->y; | |
256 } | |
257 if((p->dt1 > 60) && (p->dt1 <= 70)) | |
258 { | |
259 if(p->dt1 % 2 == 1) | |
260 { | |
261 Puttama(0, rinkx - 16, rinky); | |
262 Puttama(0, rinkx, rinky); | |
263 Puttama(0, rinkx + 16, rinky); | |
264 } | |
265 } | |
266 if((p->dt1 > 180) && (p->dt1 <= 240)) | |
267 { | |
268 if(p->dt1 % 2 == 1) | |
269 { | |
270 rinkf2 = 1; | |
271 Puttama(2, rinkx - 16, p->y - 32); | |
272 Puttama(3, rinkx + 32 - 16, p->y - 32); | |
273 } | |
274 else | |
275 { | |
276 rinkf2 = 2; | |
277 } | |
278 } | |
279 if(p->dt1 > 240) | |
280 { | |
281 rinkf2 = 2; | |
282 } | |
283 if((p->dt1 > 240) && (p->dt1 <= 400)) | |
284 { | |
285 count++; | |
286 PutSprite(count, rinkx - 16, rinky + 32, | |
287 58 + p->dt1 % 4); | |
288 } | |
289 if((p->dt1 > 300) && (p->dt1 <= 400)) | |
290 { | |
291 rinkf2 = 3; | |
292 if(jiki.x + 15 - rinkx < -5) | |
293 { | |
294 p->vx = -1; | |
295 } | |
296 else if(jiki.x + 15 - rinkx > 5) | |
297 { | |
298 p->vx = +1; | |
299 } | |
300 else p->vx = 0; | |
301 p->x += p->vx; | |
302 rinkx = p->x; | |
303 rinky = p->y; | |
304 Puttama(4, rinkx - 8, rinky + 16); | |
305 } | |
306 if((p->dt1 > 400) && (p->dt1 <= 500)) | |
307 { | |
308 rinkf2 = 4; | |
309 if(jiki.x + 15 - rinkx > 5) | |
310 { | |
311 p->vx = -1; | |
312 } | |
313 else if(jiki.x + 15 - rinkx > 5) | |
314 { | |
315 p->vx = +1; | |
316 } | |
317 else p->vx = 0; | |
318 p->x += p->vx; | |
319 rinkx = p->x; | |
320 rinky = p->y; | |
321 } | |
322 if(p->dt1 > 500) | |
323 { | |
324 rinkf2 = 5; | |
325 if(jiki.x + 15 - rinkx < -5) | |
326 { | |
327 p->vx = -1; | |
328 } | |
329 else if(jiki.x + 15 - rinkx > 5) | |
330 { | |
331 p->vx = +1; | |
332 } | |
333 else p->vx = 0; | |
334 p->x += p->vx; | |
335 rinkx = p->x; | |
336 rinky = p->y; | |
337 } | |
338 if(p->dt1 > 600) | |
339 { | |
340 rinkf2 = 0; | |
341 p->dt1 = 0; | |
342 } | |
343 fastebos++; | |
344 p->dt1++; | |
345 count++; | |
346 DefSpriteEx(54, 16, 32); | |
347 PutSpriteEx(54, p->x, p->y, 2, 2, 1); | |
348 return p; | |
349 } | |
350 | |
351 | |
352 CHARACTER * chara_state13(CHARACTER *p) | |
353 { | |
354 if(tekino0->f == FALSE){ | |
355 Bom(p->x, p->y); | |
356 p->f = FALSE; | |
357 p->state = delete_chara; | |
358 p->collision = noaction; | |
359 return p; | |
360 } | |
361 | |
362 p->x += rinkx - p->dt1; | |
363 p->y += rinky - p->dt2; | |
364 p->dt1 = rinkx; | |
365 p->dt2 = rinky; | |
366 if(rinkf2 == 1) | |
367 { | |
368 if(p->x > rinkx) | |
369 { | |
370 Puttama(2, p->x + 32, p->y); | |
371 } | |
372 if(p->x < rinkx) | |
373 { | |
374 Puttama(3, p->x, p->y); | |
375 } | |
376 } | |
377 if(rinkf2 == 4) | |
378 { | |
379 count++; | |
380 PutSprite(count, p->x, p->y + 56, 58+filpcount % 4); | |
381 } | |
382 if(rinkf2 == 5) | |
383 { | |
384 if(p->x > rinkx) | |
385 { | |
386 Puttama(5, p->x + 8, p->y + 24); | |
387 } | |
388 if(p->x < rinkx) | |
389 { | |
390 Puttama(5, p->x + 8, p->y + 24); | |
391 } | |
392 } | |
393 return p; | |
394 } | |
395 | |
396 | |
397 CHARACTER * chara_state20(CHARACTER *p) | |
398 { | |
399 p->x += p->vx; | |
400 p->y += p->vy; | |
401 p->vy -= 0.5; | |
402 p->vy += 0.4; | |
403 return p; | |
404 } | |
405 | |
406 CHARACTER * chara_state21(CHARACTER *p) | |
407 { | |
408 p->x += p->vx; | |
409 p->y += p->vy; | |
410 p->vx += 0.5; | |
411 p->vy += 0.4; | |
412 return p; | |
413 } | |
414 | |
415 //ここまでgetate boss | |
416 | |
417 | |
418 CHARACTER * chara_state22(CHARACTER *p) | |
419 { | |
420 sf = rand() % 4; | |
421 if((sf == 0) || (sf == 1)) | |
422 { | |
423 p->x = -35; | |
424 p->y = rand() % (120 - 35); | |
425 p->vx = (rand() % 4 + 1); | |
426 p->vy = rand() % 3 + 1; | |
427 p->state = chara_state23; | |
428 } | |
429 if((sf == 2)) | |
430 { | |
431 p->x = rand() % 290; | |
432 p->y = -30; | |
433 p->vx = rand() % 3 - 1; | |
434 p->vy = (rand() % 4 + 1); | |
435 p->state = chara_state23; | |
436 } | |
437 if(sf == 3) | |
438 { | |
439 p->x = 320; | |
440 p->y = rand() % (120 - 35); | |
441 p->vx = (rand() % 4 + 1) * -1; | |
442 p->vy = rand() % 3 -1; | |
443 p->state = chara_state23; | |
444 } | |
445 return p; | |
446 } | |
447 | |
448 CHARACTER * chara_state23(CHARACTER *p) | |
449 { | |
450 p=asteroid(p); | |
451 return p; | |
452 } | |
453 | |
454 CHARACTER * chara_state24(CHARACTER *p) | |
455 { | |
456 kyeenemyno = p; | |
457 tekino0 = 0; | |
458 enemy_part1 = p->next; | |
459 enemy_part2 = enemy_part1->next; | |
460 enemy_part3 = enemy_part2->next; | |
461 enemy_part4 = enemy_part3->next; | |
462 enemy_part5 = enemy_part4->next; | |
463 rinkx = 0; | |
464 rinky = 0; | |
465 rinkf1 = 0; | |
466 rinkf2 = 0; | |
467 p->state = chara_state25; | |
468 return p; | |
469 } | |
470 | |
471 CHARACTER * chara_state25(CHARACTER *p) | |
472 { | |
473 if(p->dt1 <= 360) | |
474 { | |
475 p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32; | |
476 p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; | |
477 } | |
478 if(p->dt1 > 360) | |
479 { | |
480 p->x = Mycos(p->dt1) * 30 * -1 /SANKAKU + 142 + 32; | |
481 p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; | |
482 } | |
483 count++; | |
484 PutSprite(count, p->x - 42, p->y, 64); | |
485 amari = rand() % 160; | |
486 if((amari == 1) && (enemy_part5->f == TRUE)) | |
487 { | |
488 p->state = chara_state26; | |
489 rinkf1 = 1; | |
490 } | |
491 if((amari == 2) && (enemy_part1->f == TRUE)) | |
492 { | |
493 p->state = chara_state27; | |
494 rinkf1 = 5; | |
495 rinkx = 0; | |
496 return p; | |
497 } | |
498 if((enemy_part5->f == TRUE) && (enemy_part1->f != TRUE)) | |
499 { | |
500 p->state = chara_state28; | |
501 } | |
502 p->dt1 += 3; | |
503 if(p->dt1 == 720) | |
504 { | |
505 p->dt1 = 0; | |
506 } | |
507 return p; | |
508 } | |
509 | |
510 CHARACTER * chara_state26(CHARACTER *p) | |
511 { | |
512 if((p->dt2 > 50) && (p->dt2 < 100)) | |
513 { | |
514 rinkf1 = 2; | |
515 } | |
516 if(p->dt2 > 100) | |
517 { | |
518 rinkf1 = 3; | |
519 } | |
520 if(p->dt2 == 400) | |
521 { | |
522 rinkf1 = 4; | |
523 } | |
524 count++; | |
525 PutSprite(count, p->x - 42, p->y, 64); | |
526 if(p->dt2 == 401) | |
527 { | |
528 p->dt2 = 0; | |
529 rinkf1 = 0; | |
530 p->state = chara_state25; | |
531 return p; | |
532 } | |
533 p->dt2++; | |
534 return p; | |
535 } | |
536 | |
537 CHARACTER * chara_state27(CHARACTER *p) //rocket punch | |
538 { | |
539 if((p->dt2 > 50) && (p->dt2 < 60) && (p->x > -24) && (p->y > -24)) | |
540 { | |
541 rinkf1 = 6; | |
542 rinkx -= 4; | |
543 p->x -= 4; | |
544 p->y -= 4; | |
545 } | |
546 if(p->dt2 == 80) | |
547 { | |
548 rinkf1 = 7; | |
549 } | |
550 if(p->dt2 == 81) | |
551 { | |
552 rinkf1 = 8; | |
553 } | |
554 if(p->dt2 == 124) | |
555 { | |
556 rinkf1 = 9; | |
557 } | |
558 if(p->dt2 == 400) | |
559 { | |
560 rinkf1 = 10; | |
561 } | |
562 if(p->dt2 == 444) | |
563 { | |
564 rinkf1 = 11; | |
565 } | |
566 if(p->dt2 == 500) | |
567 { | |
568 rinkf1 = 12; | |
569 } | |
570 if((p->dt2 > 80) && (p->dt2 < 200)) | |
571 { | |
572 if((rinkx != 0) && (p->dt2 % 2 == 1)) | |
573 { | |
574 rinkx++; | |
575 p->x++; | |
576 p->y++; | |
577 } | |
578 } | |
579 count++; | |
580 PutSprite(count, p->x - 32, p->y, 6); | |
581 if(rinkf1 == 12) | |
582 { | |
583 p->dt2 = 0; | |
584 rinkf1 = 0; | |
585 rinkx = 0; | |
586 p->state = chara_state25; | |
587 return p; | |
588 } | |
589 p->dt2++; | |
590 return p; | |
591 } | |
592 CHARACTER * chara_state28(CHARACTER *p) | |
593 { | |
594 if (p->dt1 <= 360) | |
595 { | |
596 p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32; | |
597 p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; | |
598 } | |
599 if (p->dt1 > 360) | |
600 { | |
601 p->x = Mycos(p->dt1) * 30 * -1 / SANKAKU + 142 + 32; | |
602 p->y = Mysin(p->dt1) * 30 / SANKAKU + 30; | |
603 } | |
604 count++; | |
605 PutSprite(count, p->x - 42, p->y, 64); | |
606 if (p->dt1 % 30 == 3) | |
607 { | |
608 Putenemy(24, p->x + 14, | |
609 p->y + 14, | |
610 (rand() % 5 + 0.5) * (rand() % 2 == | |
611 1 ? -1 : 1), | |
612 (rand() % 5 + 0.5) * (rand() % 2 == | |
613 1 ? -1 : 1), chara_state29); | |
614 } | |
615 p->dt1 += 3; | |
616 return p; | |
617 } | |
618 | |
619 | |
620 CHARACTER * chara_state29(CHARACTER *p) | |
621 { | |
622 p->x += p->vx; | |
623 p->y += p->vy; | |
624 if(p->dt1 % 18 == 1) | |
625 { | |
626 Puttama(0, p->x, p->y); | |
627 } | |
628 p->dt1++; | |
629 return p; | |
630 } | |
631 | |
632 | |
633 CHARACTER * chara_state30(CHARACTER *p) | |
634 { | |
635 p->x = p->x - 32; | |
636 p->y = p->y; | |
637 return p; | |
638 } | |
639 | |
640 CHARACTER * chara_state31(CHARACTER *p) //right hand | |
641 { | |
642 | |
643 if((enemy_part3->f == FALSE) || (kyeenemyno->f == FALSE)) | |
644 { | |
645 Bom(p->x, p->y); | |
646 p->f = FALSE; | |
647 p->state = delete_chara; | |
648 p->collision = noaction; | |
649 return p; | |
650 } | |
651 | |
652 if(rinkf1 == 0) | |
653 { | |
654 p->x = kyeenemyno->x + 40; | |
655 p->y = kyeenemyno->y + 28; | |
656 p->dt2 = 0; | |
657 } | |
658 if(rinkf1 == 5) | |
659 { | |
660 p->x = kyeenemyno->x + 52; | |
661 p->y = kyeenemyno->y; | |
662 count++; | |
663 PutSprite(count, p->x - 4, p->y - 20, 80 + p->dt2 % 4); | |
664 p->dt2++; | |
665 } | |
666 if(rinkf1 == 6) | |
667 { | |
668 if(p->y < 240 - 40) | |
669 { | |
670 p->y += 6; | |
671 } | |
672 else | |
673 { | |
674 return p; | |
675 } | |
676 count++; | |
677 PutSprite(count, p->x - 4, p->y - 20, 90 + p->dt2 % 4); | |
678 p->dt2++; | |
679 } | |
680 if(rinkf1 == 7) | |
681 { | |
682 Putenemy(22, p->x + 14, p->y + 14, 0, 0, chara_state40); | |
683 return p; | |
684 } | |
685 if(rinkf1 == 11) | |
686 { | |
687 if(p->y + 20 != p->y) | |
688 { | |
689 p->y--; | |
690 } | |
691 else | |
692 { | |
693 return p; | |
694 } | |
695 count++; | |
696 PutSprite(count, p->x + 8, p->y + 44, 58 + p->dt2 % 4); | |
697 p->dt2++; | |
698 } | |
699 return p; | |
700 } | |
701 | |
702 | |
703 CHARACTER * chara_state32(CHARACTER *p) //left hand | |
704 { | |
705 if ((enemy_part4->f == FALSE) | |
706 || (kyeenemyno->f == FALSE)) | |
707 { | |
708 Bom(p->x, p->y); | |
709 p->f = FALSE; | |
710 p->state = delete_chara; | |
711 p->collision = noaction; | |
712 return p; | |
713 } | |
714 p->x = kyeenemyno->x - 40; | |
715 p->y = kyeenemyno->y + 28; | |
716 if (rinkf1 == 5) | |
717 { | |
718 p->x = kyeenemyno->x - 24 + 4; | |
719 p->y = kyeenemyno->y + 28; | |
720 p->charano = enemystate[20].charano; | |
721 } | |
722 if (rinkf1 == 11) | |
723 { | |
724 p->charano = enemystate[14].charano; | |
725 } | |
726 if (rinkf1 == 7) | |
727 { | |
728 Putenemy(23, p->x + 14, | |
729 p->y + 14, 0, 0, chara_state41); | |
730 // rinkf1=8; | |
731 return p; | |
732 } | |
733 return p; | |
734 } | |
735 | |
736 | |
737 CHARACTER * chara_state33(CHARACTER *p) // right shoulder | |
738 { | |
739 if (kyeenemyno->f == FALSE) | |
740 { | |
741 Bom(p->x, p->y); | |
742 p->f = FALSE; | |
743 p->state = delete_chara; | |
744 p->collision = noaction; | |
745 return p; | |
746 } | |
747 p->x = kyeenemyno->x + 32; | |
748 p->y = kyeenemyno->y; | |
749 if (rinkf1 == 5) | |
750 { | |
751 p->x = kyeenemyno->x + 32 - 4; | |
752 p->y = kyeenemyno->y; | |
753 p->charano = enemystate[19].charano; | |
754 } | |
755 if (rinkf1 == 6) | |
756 { | |
757 p->charano = enemystate[11].charano; | |
758 } | |
759 return p; | |
760 } | |
761 | |
762 | |
763 CHARACTER * chara_state34(CHARACTER *p) //left shoulder | |
764 { | |
765 if (kyeenemyno->f == FALSE) | |
766 { | |
767 Bom(p->x, p->y); | |
768 p->f = FALSE; | |
769 p->state = delete_chara; | |
770 p->collision = noaction; | |
771 return p; | |
772 } | |
773 p->x = kyeenemyno->x - 32; | |
774 p->y = kyeenemyno->y; | |
775 if (rinkf1 == 5) | |
776 { | |
777 p->charano = enemystate[21].charano; | |
778 } | |
779 if (rinkf1 == 6) | |
780 { | |
781 p->charano = enemystate[12].charano; | |
782 } | |
783 return p; | |
784 } | |
785 | |
786 CHARACTER * chara_state35(CHARACTER *p) // bust | |
787 { | |
788 if (kyeenemyno->f == FALSE) | |
789 { | |
790 Bom(p->x, p->y); | |
791 p->f = FALSE; | |
792 p->state = delete_chara; | |
793 p->collision = noaction; | |
794 return p; | |
795 } | |
796 p->x = kyeenemyno->x; | |
797 p->y = kyeenemyno->y + 32; | |
798 if (rinkf1 == 1) | |
799 { | |
800 p->charano = enemystate[16].charano; | |
801 } | |
802 if (rinkf1 == 2) | |
803 { | |
804 count++; | |
805 PutSprite(count, p->x - 10, | |
806 p->y + 16, | |
807 58 + p->dt2 % 4); | |
808 count++; | |
809 PutSprite(count, p->x + 10, | |
810 p->y + 16, | |
811 58 + p->dt2 % 4); | |
812 p->dt2++; | |
813 } | |
814 if (rinkf1 == 3) | |
815 { | |
816 count++; | |
817 PutSprite(count, p->x - 10, | |
818 p->y + 16, | |
819 58 + p->dt2 % 4); | |
820 count++; | |
821 PutSprite(count, p->x + 10, | |
822 p->y + 16, | |
823 58 + p->dt2 % 4); | |
824 if (p->dt2 % 20 == 1) | |
825 { | |
826 Puttama(7, p->x, p->y + 16); | |
827 Puttama(7, p->x + 20, | |
828 p->y + 16); | |
829 } | |
830 p->dt2++; | |
831 } | |
832 if (rinkf1 == 4) { | |
833 p->charano = enemystate[15].charano; | |
834 p->dt2 = 0; | |
835 } | |
836 return p; | |
837 } | |
838 | |
839 | |
840 CHARACTER * chara_state40(CHARACTER *p) //arm vulkan | |
841 { | |
842 if (enemy_part1->f == FALSE) | |
843 { | |
844 Bom(p->x, p->y); | |
845 p->f = FALSE; | |
846 p->state = delete_chara; | |
847 p->collision = noaction; | |
848 return p; | |
849 } | |
850 if ((rinkf1 == 8) && (p->dt1 % 3 == 1)) | |
851 { | |
852 if ((p->dt2 < 16)) | |
853 { | |
854 p->dt2++; | |
855 DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss); | |
856 } | |
857 else | |
858 { | |
859 // rinkf1=9; | |
860 return p; | |
861 } | |
862 } | |
863 if (rinkf1 == 9) | |
864 { | |
865 if (p->dt1 % 15 == 1) | |
866 { | |
867 Puttama(8, p->x, p->y); | |
868 } | |
869 } | |
870 if (rinkf1 == 10) | |
871 { | |
872 if (p->dt2 != 0) | |
873 { | |
874 p->dt2--; | |
875 DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, boss); | |
876 } | |
877 else | |
878 { | |
879 p->f = FALSE; | |
880 p->state = delete_chara; | |
881 p->collision = noaction; | |
882 // rinkf1=11; | |
883 } | |
884 } | |
885 p->dt1++; | |
886 return p; | |
887 } | |
888 | |
889 | |
890 CHARACTER * chara_state41(CHARACTER *p) //left arm up arm vulkan | |
891 { | |
892 if (enemy_part2->f == FALSE) | |
893 { | |
894 Bom(p->x, p->y); | |
895 p->f = FALSE; | |
896 p->state = delete_chara; | |
897 p->collision = noaction; | |
898 return p; | |
899 } | |
900 p->x = kyeenemyno->x - 20 - 7; | |
901 p->y = kyeenemyno->y + 28 + 15; | |
902 if ((rinkf1 == 8) && (p->dt1 % 3 == 1)) | |
903 { | |
904 if ((p->dt2 < 16)) | |
905 { | |
906 p->dt2++; | |
907 DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss); /*左腕アップアーム砲 */ | |
908 } | |
909 else | |
910 { | |
911 rinkf1 = 9; | |
912 return p; | |
913 } | |
914 } | |
915 if (rinkf1 == 9) | |
916 { | |
917 if (p->dt1 % 15 == 1) | |
918 { | |
919 Puttama(9 + rand() % 2, p->x, p->y); | |
920 } | |
921 } | |
922 if (rinkf1 == 10) | |
923 { | |
924 if (p->dt2 != 0) | |
925 { | |
926 p->dt2--; | |
927 DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, boss); | |
928 } | |
929 else | |
930 { | |
931 p->f = FALSE; | |
932 p->state = delete_chara; | |
933 p->collision = noaction; | |
934 return p; | |
935 // rinkf1=11; | |
936 } | |
937 } | |
938 p->dt1++; | |
939 return p; | |
940 } | |
941 | |
942 | |
943 CHARACTER * chara_state400(CHARACTER *p) | |
944 { | |
945 p->vy++; | |
946 p->y += p->vy / 4; | |
947 p->state = chara_state400; | |
948 return p; | |
949 } | |
950 | |
951 | |
952 CHARACTER * chara_state401(CHARACTER *p) | |
953 { | |
954 p->vx++; | |
955 p->x += p->vx / 8; | |
956 if (p->x > (jiki.x - 32)) | |
957 { | |
958 p->vy--; | |
959 } | |
960 p->y += p->vy / 8; | |
961 if (p->dt1 % 50 == 37) | |
962 { | |
963 Puttama(1, p->x + 8, p->y + 24); | |
964 } | |
965 p->dt1++; | |
966 return p; | |
967 } | |
968 | |
969 | |
970 CHARACTER * chara_state402(CHARACTER *p) | |
971 { | |
972 p->vx--; | |
973 p->x += p->vx / 8; | |
974 if (p->x < (jiki.x + 32)) | |
975 { | |
976 p->vy--; | |
977 } | |
978 p->y += p->vy / 8; | |
979 if (p->dt1 % 50 == 37) | |
980 { | |
981 Puttama(1, p->x + 8, p->y + 24); | |
982 } | |
983 p->dt1++; | |
984 return p; | |
985 } | |
986 | |
987 | |
988 CHARACTER * chara_state410(CHARACTER *p) | |
989 { | |
990 kyeenemyno = p; | |
991 p->state = chara_state411; | |
992 return p; | |
993 } | |
994 | |
995 | |
996 CHARACTER * chara_state411(CHARACTER *p) | |
997 { | |
998 if (p->dt2 > 356) | |
999 { | |
1000 p->vx = -1; | |
1001 } | |
1002 if (p->dt2 < -398) | |
1003 { | |
1004 p->vx = 1; | |
1005 } | |
1006 if ((p->dt1) % 62 == 0) | |
1007 Putenemy(41, | |
1008 p->x, | |
1009 p->y, | |
1010 (int) -Mycos(p->dt1 / 16) * 4 / | |
1011 SANKAKU, | |
1012 (int) -Mysin(p->dt1 / 16) * 4 / | |
1013 SANKAKU, chara_state7); | |
1014 if ((p->dt1) % 13 == 0) | |
1015 Puttama(11, p->x + 32, | |
1016 p->y + 32); | |
1017 | |
1018 p->dt2 += p->vx; | |
1019 p->dt1 += p->dt2 / 4; | |
1020 | |
1021 p->x = jiki.x - 16 + | |
1022 Mycos(p->dt1 / 16) * 128 / SANKAKU; | |
1023 p->y = jiki.y - 16 + | |
1024 Mysin(p->dt1 / 16) * 128 / SANKAKU; | |
1025 if (p->x < 0) | |
1026 { | |
1027 p->x = 0; | |
1028 } | |
1029 if (p->x > 260) | |
1030 { | |
1031 p->x = 260; | |
1032 } | |
1033 if (p->y < 0) | |
1034 { | |
1035 p->y = 0; | |
1036 } | |
1037 if (p->y > 232) | |
1038 { | |
1039 p->y = 232; | |
1040 } | |
1041 return p; | |
1042 } | |
1043 | |
1044 | |
1045 CHARACTER * chara_state500(CHARACTER *p) | |
1046 { | |
1047 p->s = 0; | |
1048 | |
1049 kyeenemyno = p; | |
1050 p->dt2++; | |
1051 p->dt2 %= 512; | |
1052 p->dt1++; | |
1053 count++; | |
1054 DefSpriteEx(100, 16, 16); | |
1055 // PutSprite(count, enemy[tekino].x + 16, | |
1056 // enemy[tekino].y + 16, 100); | |
1057 PutSpriteEx(100, p->x + 16, p->y + 16, 2, 2, p->dt1); | |
1058 | |
1059 if (p->dt1 % (5 + p->dt2 / 8) == 1) { | |
1060 if (rand() % 2 == 1) | |
1061 Putenemy(24, p->x, p->y, | |
1062 (rand() % 5 + 0.5) * (rand() % 2 == | |
1063 1 ? -1 : 1), | |
1064 (rand() % 5 + 0.5) * (rand() % 2 == | |
1065 1 ? -1 : 1), chara_state501); | |
1066 else | |
1067 Putenemy(rand() % 2 + 1, p->x, | |
1068 p->y, | |
1069 (int) Mycos(p->dt1 / 4) * 4 / | |
1070 SANKAKU, | |
1071 (int) -Mysin(p->dt1 / 4) * 4 / | |
1072 SANKAKU, chara_state501); | |
1073 } | |
1074 if (p->dt1 == 50) { | |
1075 /*Putenemy(44,0,0,1,1,411); */ | |
1076 } | |
1077 return p; | |
1078 } | |
1079 | |
1080 | |
1081 CHARACTER * chara_state501(CHARACTER *p) | |
1082 { | |
1083 p->x += p->vx; | |
1084 p->y += p->vy; | |
1085 if(p->dt1 % 32 == 1) | |
1086 { | |
1087 Puttama(11, p->x, p->y); | |
1088 } | |
1089 p->dt1++; | |
1090 return p; | |
1091 } | |
1092 | |
1093 | |
1094 CHARACTER * chara_state600(CHARACTER *p) | |
1095 { | |
1096 kyeenemyno = p; | |
1097 p->dt1 += 30; | |
1098 p->dt2++; | |
1099 p->dt1 %= 360; | |
1100 p->x += Mycos(p->dt1) * 4 / SANKAKU; | |
1101 p->y += Mysin(p->dt1) * 4 / SANKAKU; | |
1102 Puttama(11, p->x + 16, p->y + 16); | |
1103 Puttama(11, p->x + 32, p->y + 48); | |
1104 Puttama(11, p->x + 48, p->y + 16); | |
1105 if (p->dt2 > 240) | |
1106 p->state = chara_state601; | |
1107 if (p->x < 0) | |
1108 p->x = 0; | |
1109 if (p->x > 260) | |
1110 p->x = 260; | |
1111 if (p->y < 0) | |
1112 p->y = 0; | |
1113 if (p->y > 232) | |
1114 p->y = 232; | |
1115 return p; | |
1116 } | |
1117 | |
1118 | |
1119 CHARACTER * chara_state601(CHARACTER *p) | |
1120 { | |
1121 p->dt2++; | |
1122 if (p->x < jiki.x) | |
1123 p->vx++; | |
1124 if (p->x > jiki.x) | |
1125 p->vx--; | |
1126 p->x += p->vx; | |
1127 Putenemy(6, p->x + 16 + rand() % 32, | |
1128 p->y, 0, rand() % 4, chara_state400); | |
1129 if (p->x < 0) | |
1130 p->x = 0; | |
1131 if (p->x > 260) | |
1132 p->x = 260; | |
1133 if (p->y < 0) | |
1134 p->y = 0; | |
1135 if (p->y > 232) | |
1136 p->y = 232; | |
1137 if (p->dt2 > 800) { | |
1138 p->state = chara_state602; | |
1139 } | |
1140 return p; | |
1141 } | |
1142 | |
1143 | |
1144 CHARACTER * chara_state602(CHARACTER *p) | |
1145 { | |
1146 p->dt2++; | |
1147 Putenemy(24, p->x + 14, p->y + 14, | |
1148 (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1), | |
1149 (rand() % 5 + 0.5) * (rand() % 2 == 1 ? -1 : 1), | |
1150 chara_state29); | |
1151 if (p->dt2 > 1024) { | |
1152 p->state = chara_state600; | |
1153 p->dt2 = 0; | |
1154 } | |
1155 return p; | |
1156 } | |
1157 | |
1158 | |
1159 CHARACTER * asteroid(CHARACTER *p) | |
1160 { | |
1161 int i; | |
1162 | |
1163 asteroiddt[asteroidi] = p; | |
1164 // if(asteroidi==0) | |
1165 // { | |
1166 p->x += p->vx; | |
1167 p->y += p->vy; | |
1168 // } | |
1169 if (asteroidi > 0) { | |
1170 for (i = 0; i < asteroidi; i++) { | |
1171 if ((asteroiddt[i]->x + 32 > p->x) | |
1172 && (p->x + 32 > asteroiddt[i]->x) | |
1173 && (asteroiddt[i]->y + 32 > p->y) | |
1174 && (asteroiddt[i]->y < p->y + 32)) { | |
1175 p->vx *= -1; | |
1176 p->vy *= -1; | |
1177 } | |
1178 } | |
1179 } | |
1180 asteroidi++; | |
1181 return p; | |
1182 } |