ブロック運びゲーム 発表項目 プロジェクトの目的 ゲーム概要 問題点と改善点 工夫した部分 まとめ プロジェクトの目的 ・高位システム記述言語 Handle-C ・FPGA開発ボード(RC10) これらを用いてハードウェアの設計方法を学ぶ。 ・並列処理を用いたプラグラムを行う。 ・通信機能を使ったゲームを製作する。 ゲームの概要 最初の状態は縦5マス、横11マスのフィールドの 左端に自機が、右端に敵機、真ん中にブロックが配 置してあります。 このブロックは弾をあてることによって相手の陣地に1 マス移動させることができます。 自機 ブロック 敵機 ゲームのルール 機体は縦ラインの5マスしか動けない。 一つの横ラインに弾は同時に2発まで撃てる。 ブロックを敵陣地の端まで移動できれば勝利 敵に自陣の端まで移動させられたら負け WIN 問題点と改善点 弾がブロックに当たりにくい。 →画面をマス目状に分割することで、操作しやすくした。 ひとつのラインで同時に弾がブロックに当たったときに、弾が ブロックを透過する。 →ブロックを通りこした場合でも当たったのと同等の判定とした。 通信の状態により対戦で多少のずれが生じる。 → 弾の発射状態を逐一通信しあうことでブレを少なくした。 工夫した部分 弾を一つの横ラインにつき2発まで撃てるようにした。 フィールドをマス目状にし、それぞれマスにゲーム の状態を振り分けた。 画像のサイズを大きくなるよう調整した。 通信時に弾を発射したかの他に現在の発射状況も 送るようにした。 工夫した部分(マスの説明) 弾とブロックの配置、マス目を基準とした動きの説明。 (例) Beam[行]=列となるように作成する。 弾の位置 Beam[0]=2 0 1 2 3 ブロックの位置 Block[1]=2 Block[2]=3 0 1 2 3 まとめ 原型のゲームを作ることはそれほど難しくはなかったが、通 信で同期をとることが非常に難しかった。特にリアルタイムに 動くゲームだったので、少しのズレが生じると左右の結果が ずれてしまうこともあった。 機体やブロックの画像や、色など非常にゲームらしく仕上 がった。 通信として課題は残るものの、ゲームらしくなって良かった。 質問用 通信の仕方 最初の3ビットで今いる横ラインの弾の有無 最後の3ビットで今いる位置を送信 受け取ったデータを見て、もし相手の弾の数 が自分の持ちデータと異なっていたら弾の数 を修正(不足分を発射) 質問用 通信の誤差について 実際のブロックの位置を互いに把握していな いため左右の結果が違う。 弾の発射ルーチン 弾用の変数を2個用意 1個目が発射されていることを確認して2発目を 発射、それぞれ固有のIDを持つ 質問用 弾の発生 弾は画面外に存在している。発射されれば 移動して画面内に現れる。 消滅し次第、またもとの位置に戻る。 弾の移動 Beam[Y]=X Xの部分を増減させる。
© Copyright 2024 ExpyDoc