-
永谷 弘宣
『ハノイの塔』は、棒に刺さっている円盤を別の棒に移し替えるパズルゲームです。
【ルール】
三本の棒があり、左の棒に円盤が大きさの順に刺さっています。
これらの左の棒の全ての円盤を、右の棒へ移し替えて下さい。
円盤は 1 枚ずつ移動させることができ、
小さな円盤の上に大きな円盤を移動させることはできません。
【操作】
1 : 左の棒を選択
2 : 中央の棒を選択
3 : 右の棒を選択
【更新履歴】
2018/02/18 初版公開
2018/02/28 コード最適化
【ソースコード解説】
《変数》
C : Character, 選択状態を示すキャラクタ
K : Key, キー入力値
S : Select, 円盤の移動元の選択状態(-1:選択していない, 0:左, 1:中央, 2:右)
T : Target, 円盤の移動先の選択状態(0:左, 1:中央, 2:右)
U : 円盤の移動元の一番上にある円盤の位置( 0 ~ 11 )
V : 円盤の移動先の一番上にある円盤の位置( 0 ~ 11 )
W : Write, 描画する円盤の位置( 0 ~ 11 )
Z : 一時変数(円盤の描画に利用)
I,J : Iterator, ループ変数
《配列》
[0] ~ [3] : 左の棒の円盤
[4] ~ [7] : 中央の棒の円盤
[8] ~ [11] : 右の棒の円盤
《コード》
5 : タイトル
10 : 初期化
20 ~ 40 : 棒の描画
50 : 円盤の初期化
60 : 選択状態の初期化
70 : キー入力受付
80 : 移動元が選択された際の処理
90 : 移動先が選択された際の処理
100 ~ 110 : U の算出
120 ~ 130 : V の算出
140 : 円盤を移動できるかどうかの判定
150 ~ 160 : 円盤の移動
170 : ゲームクリア判定
180 : 選択状態の消去
190 : 無効な選択状態を示す「x」の描画
200 : 選択状態の描画
210 : 円盤の描画または消去