18 |
インベーダーゲームのソースの研究 (2) |
インベーダーゲームのソースの研究を読んで理解したことを記します。
UFOスコア表
参考にしたUFOスコア表です。
BSV実装
この表には重なりがあるので、実は、表は1つで問題ありません。右に8個シフトすると重なることがわかります。
弊社のBSV実装では以下の表を用いています。
UInt#(5) ufo_score[15] = {10,10,10,5,15,10,10,5,5,10,15,10,10,5,30};
ただし、インデックスの初期値を6としており、7番目から使用することで上記のアルゴリズムを再現しています。まず、インデックスの初期化です。
ufo_score_idx <= 6;
次にインクリメント部です。この表は15エントリしかないので、15でラップアラウンドします。
ufo_score_idx <= ufo_score_idx + 1; if (ufo_score_idx == 15) ufo_score_idx <= 0;
また、インベーダーゲームは得点の1の位は常に0なので、得点は1/10で記憶しています。
オリジナル
さて、ソースコードの研究によると、少々ズレています。
結果として、上記は実装が微妙に異なるものの、最終的には同一の結果となります。