漢諾塔的規則:
有abc三個柱子,a柱子上從小到大排列圓盤
要將a柱子上所有圓盤移動到c柱子上,每次只能移乙個
圓盤放置必須從小到大,不能存在此盤子上面有比它大的存在。
比如三個漢諾塔玩法:
理理思路,大體演算法就是這個樣:
那麼演算法就很清晰了。
不知道哪一天我又想把這個遊戲擴充套件,我決定用四個類,讓遊戲的設計更條理一點:
temp類//臨時儲存圓盤物件,就是正在移動的圓盤
torus類//圓盤類,每個圓盤都有
cylinder類//圓柱類,每個圓柱都用,滑鼠點選觸發遊戲
gamemanage類//遊戲管理類,儲存的遊戲物件可以方便管理
1cylinder.csusing
system.collections;
2using
system.collections.generic;
3using
unityengine;45
///6
///版本unity2017.1.0f3
7///89
public
class
cylinder : monobeh**iour
1026}27
28void
onmousedown()
2937
else
if (torus_list.count == 0)//
判斷柱子上沒有東西
3841}42
if (_istrans == false)43
48if (torus_list.count != 0)//
判斷要放置的柱子有圓環
4961}62
else
6366}67
}68}69
70}7172
void
translatefunc()
7381
82void
taketorus()
8392 }
1torus.csusing
system.collections;
2using
system.collections.generic;
3using
unityengine;45
///6
///版本unity2017.1.0f3
7///89
public
class
torus : monobeh**iour
1018}19
20 }
1temp.csusing
system.collections;
2using
system.collections.generic;
3using
unityengine;45
///6
///版本unity2017.1.0f3
7///89
public
class
temp : monobeh**iour
10
1using
system.collections;
2using
system.collections.generic;
3using
unityengine;
4using
unityengine.ui;56
///7
///版本unity2017.1.0f3
漢諾塔遊戲
漢諾塔 於印度傳說的乙個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從下往上按大小順序摞著64片 圓盤。上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一回只能移動乙個圓盤。要想玩轉漢諾塔,需要先理解遞迴。如果乙個問題可以不斷地...
漢諾塔遊戲
題目描述 在a b c三根柱子上,有n個不同大小的圓盤 設半徑分別為1 n 一開始他們都疊在a上,你的目標是在最少的合法移動步數內將所有盤子從a塔移動到c塔。遊戲中的每一步規則如下 1 每一步只允許移動乙個盤子 從一根柱子最上方到另乙個柱子的最上方 2 移動的過程中,你必須保證大的盤子不能在小的盤子...
漢諾塔遊戲演算法實現
筆者以前在大學裡面學習演算法的時候一直沒有把漢諾塔這個遊戲給整明白,直到在工作被人問起,然後一臉的尷尬說我不知道才意識到我以前的大學都白讀了,甚是慚愧啊,研究一會兒之後,做個筆記,算是給自己的大學演算法老師做個交代吧 漢諾塔遊戲簡介 有三根柱子,假設為x,y z三根柱子,現在x柱子上放置了諾幹個圓盤...