Mercurial > hg > Papers > 2009 > koba-thesis
comparison presentation/thesis_pre.html @ 15:8dcf232adf8a
pre finish.
author | e055722 |
---|---|
date | Thu, 26 Feb 2009 01:50:17 +0900 |
parents | 95821d81b331 |
children | a264f5f7e9f6 |
comparison
equal
deleted
inserted
replaced
14:95821d81b331 | 15:8dcf232adf8a |
---|---|
134 <font size="5"> | 134 <font size="5"> |
135 <ul> | 135 <ul> |
136 <li>Blenderでオブジェクトモデルを作成</li> | 136 <li>Blenderでオブジェクトモデルを作成</li> |
137 <li>作成したオブジェクトモデルをpythonスクリプトでxmlファイルに変換</li> | 137 <li>作成したオブジェクトモデルをpythonスクリプトでxmlファイルに変換</li> |
138 <li>xmlファイルからSceneGraphを生成する</li> | 138 <li>xmlファイルからSceneGraphを生成する</li> |
139 <li>各ノードにはオブジェクトの動きを決めるmoveとオブジェクトの相互作用を決めるcollisionがある。</li> | |
139 </ul> | 140 </ul> |
140 <br> | 141 <br> |
141 <br> | 142 <br> |
142 <center> | 143 <center> |
143 <img src="image/SGcreate.jpg" width="50%" height="30%"> | 144 <img src="image/SGcreate.jpg" width="50%" height="30%"> |
144 </center> | 145 </center> |
146 </font> | |
147 </div> | |
148 | |
149 <div class="slide"> | |
150 <h1>move,collision</h1> | |
151 boss1_action.cpp<br> | |
152 <font size="5"> | |
153 <pre> | |
154 static void | |
155 boss1_move_right(SceneGraphPtr node, int screen_w, int screen_h) { | |
156 node->xyz[0] += node->stack_xyz[0]; | |
157 if(node->xyz[0] > screen_w-280) { | |
158 node->set_move_collision(boss1_move_left, boss1_collision); | |
159 } | |
160 } | |
161 | |
162 static void | |
163 boss1_move_left(SceneGraphPtr node, int screen_w, int screen_h) { | |
164 node->xyz[0] -= node->stack_xyz[0]; | |
165 if(node->xyz[0] < 280) { | |
166 node->set_move_collision(boss1_move_right, boss1_collision); | |
167 } | |
168 } | |
169 </pre> | |
170 </font> | |
171 <br> | |
172 <ul> | |
173 <li>boss1_move_right,left…boss1が左右に移動する動きを記述</li> | |
174 <li>boss1_collision…boss1の衝突判定を記述</li> | |
175 <li>set_move_collision…新しいmoveとcollitsionを設定する</li> | |
176 </ul> | |
177 </div> | |
178 | |
179 <div class="slide"> | |
180 <h1>CppUnitによるテスト手法</h1> | |
181 <font size="5"> | |
182 <ul> | |
183 <li>C++の単体テストを自動化するflame workである</li> | |
184 <li>テストケースを増やす事が容易</li> | |
185 <li>テストケース群は一括で実行し、結果の表示も行える</li> | |
186 </ul> | |
187 <br> | |
188 <br> | |
189 <center> | |
190 <img src="image/test_state.jpg" width="40%" height="50%"> | |
191 </center> | |
192 </font> | |
193 </div> | |
194 | |
195 <div class="slide"> | |
196 <h1>テストを行うゲームプログラム</h1> | |
197 <font size="5"> | |
198 <br> | |
199 <table> | |
200 <tr> | |
201 <td><img src="image/boss1.png" width=" " height=" "></td> | |
202 <td> | |
203 <ul> | |
204 <li>3つのSceneGraphを持つ</li> | |
205 <li>本体の他に左右にパーツを1つずつ持つ。</li> | |
206 <li>本体をTreeのrootとして左右のパーツがその子供となっている</li> | |
207 </ul> | |
208 </td> | |
209 </table> | |
210 <br> | |
211 <ul> | |
212 <li>各オブジェクトのSceneGraphはその親や子、兄弟に対するアドレスを保持している</li> | |
213 <li>パーツオブジェクトのテストを行いたい場合、Rootである本体から辿れば、パーツオブジェクトの各パラメータを参照できる</li> | |
214 </ul> | |
215 </font> | |
216 </div> | |
217 | |
218 <div class="slide"> | |
219 <h1>CppUnitによるゲームプログラムのテスト</h1> | |
220 <font size="5"> | |
221 <ul> | |
222 <li>getSGPによりSceneGraphのrootのアドレスを取得</li> | |
223 <li>rootアドレスから本体オブジェクトの各パラメータを参照</li> | |
224 <li>rootアドレスを走査してパーツオブジェクトの各パラメータを参照</li> | |
225 </ul> | |
226 <br> | |
227 <table> | |
228 <tr> | |
229 <td><img src="image/test_part.jpg" width=" " height=" "></td> | |
230 <td> | |
231 <pre> | |
232 void | |
233 sgTest::rootTest() { | |
234 test_init(); | |
235 | |
236 sg_root->print_member(); | |
237 CPPUNIT_ASSERT_EQUAL((float)width/2, sg_root->xyz[0]); | |
238 CPPUNIT_ASSERT_EQUAL(0.0f, sg_root->xyz[1]); | |
239 CPPUNIT_ASSERT_EQUAL(-100.0f, sg_root->xyz[2]); | |
240 } | |
241 | |
242 void | |
243 sgTest::childTest() { | |
244 while (sg_root) { | |
245 if(sg_root->children != NULL) { | |
246 sg_root->children->print_member(); | |
247 ... | |
248 sg_root = sg_root->children; | |
249 } else if(sg_root->brother != NULL) { | |
250 sg_root->brother->print_member(); | |
251 CPPUNIT_ASSERT_EQUAL(0.0f, sg_root->brother->xyz[0]); | |
252 ... | |
253 sg_root = sg_root->brother; | |
254 } else { | |
255 ... | |
256 </pre> | |
257 </td> | |
258 </table> | |
259 </font> | |
260 </div> | |
261 | |
262 <div class="slide"> | |
263 <h1>評価・今後の課題</h1> | |
264 <ul> | |
265 <li>全てのオブジェクトの座標の初期位置が正しい事を確認</li> | |
266 <li>move,collision中の各オブジェクトの座標は確認出来ない</li> | |
267 <li>今後各moveとcollisionを抜き出してテストする手法を実装する</li> | |
268 </ul> | |
269 </div> | |
270 | |
271 <div class="slide"> | |
272 <h1>ご清聴ありがとうございました。</h1> | |
145 </div> | 273 </div> |
146 | 274 |
147 </div> | 275 </div> |
148 | 276 |
149 </body> | 277 </body> |