Handel-Cを用いた ちょっとレトロ な 「よけゲー」 の設計
ゲームの仕様 プレイヤーは8×11マスをゲームパッドの操作によりマス単位で移動する 落ちてくる箱をよけながらゴール(旗)を目指す 箱や壁がある方向には進めない 箱にあたるとゲームオーバー ゲームオーバーになるかゴールするとリセットされる ライフ等はなし(1回きりのゲーム)
落ちてくる箱の制御1 落ちてくる箱の位置は配列に記憶 その配列をもとに箱を表示する <例> Block[0] = 1;
落ちてくる箱の制御2 箱の位置をずらすために一定時間ごとに Block[n] = Block[n-1]; という代入操作を行う という代入操作を行う さらに Block[0] には乱数を代入する 乱数を代入 代入 代入
基本的な動作 プレイヤーの移動 箱の移動 入力待ち 待ち 移動先の入力 一定時間 の経過 移動先に箱 or 壁がある? YES NO 移動先にプレイヤーがいる? 移動先がゴール? YES NO YES NO GAMEOVER… GOAL!!
まとめ 苦労した点 画像の表示は1クロックごとに行わなければならないため、並列処理をうまく使い設計した 工夫した点 ハードウェアソースが限られているために画像を数倍に拡大して表示し、画像に使う容量を減らした
以下質問用
乱数について 乱数には線形合同法を使用 初期値は時間関数からとってくる 線形合同法は下位ビットのランダム性が低いため、上位ビットをビット抽出して使用 <例> Random = 1933 *Random + 34259; Block[0] = Random[12:10]; ビット抽出 (10bit~12bit)
画像の表示 画像を0と1で表現し、配列に入れる 配列:Man_Image[Y座標 @ X座標]でアクセス