Document

ブロック運びゲーム
発表項目
プロジェクトの目的
 ゲーム概要
 問題点と改善点
 工夫した部分
 まとめ

プロジェクトの目的
・高位システム記述言語 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の部分を増減させる。
