annotate TaskManager/Test/test_render/boss1_action.cpp @ 362:a64a6c34868f

vacuum -sg 15
author e065746@localhost.localdomain
date Fri, 17 Jul 2009 23:02:07 +0900
parents 6ceb40aec7fb
children a4f690f44842
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
280
b55ebcb0f934 test_render can not
e075766@henri.cr.ie.u-ryukyu.ac.jp
parents: 261
diff changeset
1 #include "SGList.h"
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
2 #include "boss1_action.h"
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
3
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents: 280
diff changeset
4 /*
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
5 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
6 null_move(SceneGraphPtr node, int screen_w, int screen_h)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
7 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
8 }
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents: 280
diff changeset
9 */
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
10
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
11 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
12 null_collision(SceneGraphPtr node, int screen_w, int screen_h,
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
13 SceneGraphPtr tree)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
14 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
15 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
16
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents: 280
diff changeset
17
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
18 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
19 boss1_move_right(SceneGraphPtr node, int screen_w, int screen_h) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
20 node->xyz[0] += node->stack_xyz[0];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
21 if(node->xyz[0] > (screen_w - boss_radius_x)) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
22 node->set_move_collision(boss1_move_left, null_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
23 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
24 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
25
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
26 //ボスが左に移動する動作
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
27 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
28 boss1_move_left(SceneGraphPtr node, int screen_w, int screen_h) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
29 node->xyz[0] -= node->stack_xyz[0];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
30 if(node->xyz[0] < boss_radius_x) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
31 node->set_move_collision(boss1_move_right, null_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
32 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
33 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
34
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
35 //ボスが戦闘位置へ戻る時の動作
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents: 280
diff changeset
36 /*
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
37 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
38 boss1_move_return(SceneGraphPtr node, int screen_w, int screen_h)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
39 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
40 node->xyz[1] -= node->stack_xyz[1];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
41 node->xyz[2] -= node->stack_xyz[2];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
42
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
43 if((node->xyz[2] = 0)) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
44 node->stack_xyz[0] = 1.0;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
45 node->set_move_collision(boss1_move_left, null_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
46 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
47 }
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents: 280
diff changeset
48 */
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
49
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
50 //ボス登場時の動き
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents: 280
diff changeset
51 /*
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
52 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
53 boss1_first_move(SceneGraphPtr node, int screen_w, int screen_h)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
54 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
55 node->xyz[1] += node->stack_xyz[1];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
56 if(node->xyz[1] > screen_h) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
57 float time = first_boss1_depth / node->stack_xyz[2];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
58 node->stack_xyz[1] = (screen_h - boss_radius_y) / time;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
59 node->stack_xyz[2] = return_boss1_depth_speed;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
60 node->set_move_collision(boss1_move_return, null_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
61 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
62 }
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents: 280
diff changeset
63 */
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
64
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
65 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
66 player_move(SceneGraphPtr node, int screen_w, int screen_h)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
67 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
68 Pad *pad = sgroot->getController();
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
69
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
70 if (pad->left.isPush()
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
71 || pad->left.isHold()) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
72 #if 0
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
73 SceneGraphPtr player_left;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
74 player_left = sgroot->createSceneGraph(PLAYER_L);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
75 player_left->set_move_collision(player_move_left, null_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
76 player_left->xyz[0] = node->xyz[0];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
77 player_left->xyz[1] = node->xyz[1];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
78 node->addChild(player_left);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
79 node->flag_drawable = 1;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
80 #endif
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
81 node->xyz[0] -= player_speed;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
82
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
83 if (node->xyz[0] - player_radius< 0) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
84 node->xyz[0] = player_radius;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
85 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
86 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
87
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
88
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
89 if (pad->right.isPush()
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
90 || pad->right.isHold()) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
91 node->xyz[0] += player_speed;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
92
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
93 if (node->xyz[0] + player_radius > screen_w) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
94 node->xyz[0] = screen_w - player_radius;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
95 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
96 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
97
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
98 if (pad->up.isPush()
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
99 || pad->up.isHold()) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
100 node->xyz[1] -= player_speed;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
101
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
102 if (node->xyz[1] - player_radius < 0) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
103 node->xyz[1] = player_radius;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
104 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
105 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
106
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
107 if (pad->down.isPush()
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
108 || pad->down.isHold()) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
109 node->xyz[1] += player_speed;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
110
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
111 if (node->xyz[1] + player_radius > screen_h) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
112 node->xyz[1] = screen_h - player_radius;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
113 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
114 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
115
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
116 if (pad->circle.isPush()) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
117 SceneGraphPtr shot = sgroot->createSceneGraph(P_SHOT1);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
118 shot->set_move_collision(shot_move, shot_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
119 shot->xyz[0] = node->xyz[0];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
120 shot->xyz[1] = node->xyz[1] - player_radius;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
121 node->addBrother(shot);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
122 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
123 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
124
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
125 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
126 player_collision(SceneGraphPtr node, int screen_w, int screen_h,
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
127 SceneGraphPtr tree)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
128 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
129 //自機とボスのx,y座標での距離と2点間の距離
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
130 static float x_distant, y_distant, distance;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
131 //ボスの四角形の四隅の座標
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
132 // static float boss_low_x, boss_low_y, boss_high_x, boss_high_y;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
133
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
134 SceneGraphIteratorPtr it = sgroot->getIterator(tree);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
135
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
136
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
137 for (; it->hasNext(BOSS1);) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
138 it->next(BOSS1);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
139 SceneGraphPtr enemy = it->get();
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
140
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
141 //各変数の初期化
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
142 x_distant = node->xyz[0] - enemy->xyz[0];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
143 y_distant = node->xyz[1] - enemy->xyz[1];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
144
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
145 //hypotfで2点間の距離を求める
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
146 distance = hypotf(x_distant, y_distant);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
147
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
148 /*四角形と円のcollision
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
149 if( (fabs( node->xyz[1] - ( boss_low_y )))
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
150 */
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
151
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
152 //円同士のcollision
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
153 if(distance < (player_radius + boss_radius_y)) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
154 printf("!!!CAUTION!!!\n");
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
155 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
156 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
157 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
158
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
159 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
160 shot_move(SceneGraphPtr node, int screen_w, int screen_h)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
161 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
162 node->xyz[1] -= shot_speed;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
163
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
164 // 描画領域から抜けたら削除
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
165 if (node->xyz[1] < 0) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
166 node->remove();
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
167 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
168 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
169
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
170 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
171 shot_collision(SceneGraphPtr node, int screen_2, int screen_h,
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
172 SceneGraphPtr tree)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
173 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
174 //自機とボスのx,y座標での距離と2点間の距離
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
175 static float x_distant, y_distant, distance;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
176 //ボスの四角形の四隅の座標
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
177 // static float boss_low_x, boss_low_y, boss_high_x, boss_high_y;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
178
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
179 SceneGraphIteratorPtr it = sgroot->getIterator(tree);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
180
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
181
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
182 for (; it->hasNext(BOSS1);) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
183 it->next(BOSS1);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
184 SceneGraphPtr enemy = it->get();
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
185
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
186 x_distant = node->xyz[0] - enemy->xyz[0];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
187 y_distant = node->xyz[1] - enemy->xyz[1];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
188
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
189 //hypotfで2点間の距離を求める
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
190 distance = hypotf(x_distant, y_distant);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
191
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
192 //円同士のcollision
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
193 if(distance < boss_radius_y) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
194 SceneGraphPtr blast = sgroot->createSceneGraph(BLAST1);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
195
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
196 blast->set_move_collision(blast_move, null_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
197 blast->xyz[0] = node->xyz[0];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
198 blast->xyz[1] = node->xyz[1];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
199 node->addBrother(blast);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
200 node->remove();
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
201 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
202 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
203 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
204
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
205 static void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
206 blast_move(SceneGraphPtr node, int screen_w, int screen_h)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
207 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
208 if(node->sgid > BLAST8) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
209 SceneGraphPtr blast = sgroot->createSceneGraph(node->sgid - 1);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
210 blast->set_move_collision(blast_move, null_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
211 blast->xyz[0] = node->xyz[0];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
212 blast->xyz[1] = node->xyz[1];
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
213 node->addBrother(blast);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
214 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
215
283
55ea4465b1a2 fix test_render
e065746@localhost.localdomain
parents: 280
diff changeset
216 if (node->sgid == BLAST8) {
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
217 node->flag_drawable = 1;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
218 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
219
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
220 if((node->frame > 1)) {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
221 node->remove();
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
222 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
223 node->frame += 1;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
224 }
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
225
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
226 void
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
227 boss1_init(int screen_w, int screen_h)
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
228 {
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
229 SceneGraphPtr root;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
230 SceneGraphPtr player;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
231 SceneGraphPtr boss1;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
232 SceneGraphPtr left_parts;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
233 SceneGraphPtr right_parts;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
234
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
235 sgroot->createFromXMLfile("xml_file/boss1.xml");
284
6ceb40aec7fb change files
koba@localhost.localdomain
parents: 283
diff changeset
236 sgroot->createFromXMLfile("xml_file/player1.xml");
261
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
237 sgroot->createFromXMLfile("xml_file/p_shot.xml");
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
238 sgroot->createFromXMLfile("xml_file/blast.xml");
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
239
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
240 //rootとなるSceneGraphを生成
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
241 root = sgroot->createSceneGraph();
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
242
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
243 //自機の初期化
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
244 player = sgroot->createSceneGraph(PLAYER);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
245 player->xyz[0] = screen_w/2;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
246 player->xyz[1] = screen_h - player_radius;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
247 root->addChild(player);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
248
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
249 //ボスの初期化
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
250 boss1 = sgroot->createSceneGraph(BOSS1);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
251 boss1->xyz[0] = screen_w/2;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
252 boss1->xyz[1] = boss_radius_y;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
253 // boss1->xyz[2] = first_boss1_depth;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
254 boss1->stack_xyz[0] = first_boss1_speed;
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
255 root->addChild(boss1);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
256
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
257 //ボスの左右パーツを追加
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
258 left_parts = sgroot->createSceneGraph(BOSS1_L);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
259 boss1->addChild(left_parts);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
260 right_parts = sgroot->createSceneGraph(BOSS1_R);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
261 boss1->addChild(right_parts);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
262
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
263 //各機体の動きと当たり判定をセット
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
264 player->set_move_collision(player_move, player_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
265 boss1->set_move_collision(boss1_move_left, null_collision);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
266
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
267 //仕上げ
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
268 sgroot->setSceneData(root);
ca13cee5fd7c Add dandy parts.
admin@koba.cr.ie.u-ryukyu.ac.jp
parents:
diff changeset
269 }