2013-07-25 175 views
0

我目前正在開發一款使用Actionscript 3的紙牌遊戲,並且我在想如何確保至少有一個贏的可能性。紙牌遊戲:win play

遊戲中有類似的遊戲本之一:

https://play.google.com/store/apps/details?id=com.gameduell.cleopatraspyramidnew&hl=en https://itunes.apple.com/us/app/cleopatras-pyramid/id401141292?mt=8

播放器具有播放配襯以前或所呈現的卡的下一個值的卡片。

我試過不同的方法,但還是不滿意。

我想知道的是,如何確保在隱藏卡片中,至少有一個獲勝的遊戲,所以玩家將有可能獲勝。

感謝

+0

這很大程度上取決於你的遊戲的規則和過程,根據你的描述你可以建立一個圖表給出2張牌是鄰居,這意味着2張牌之間存在邊緣,如果其中之一是前一張或下一張的另一張牌 –

回答

0

鑑於所有的卡都是預先放置,你可以做到以下幾點:

  1. 獲得清晰的板。配對你的卡片組,獲得一組配對
  2. 從剩餘的配對中取出一對。如果設置爲空,則提供填充板作爲算法結果。
  3. 將兩張牌放置到您的棋盤上到下一個可用位置,以便兩個地方都可以在遊戲階段進行拾取。如果沒有可用的地方,這意味着你已經錯誤地放置了前一對,所以你必須重新拉伸 - 從堆棧彈出狀態,嘗試另一個位置在該狀態。
  4. 將狀態推入堆棧。
  5. 轉到2.

訣竅是,開始時使用板被拿下,並添加層(一對),從而除去這一對將導致一個取勝的條件下,由狀態序列結構。顯然,你可以在隨機可用的金字塔位置添加隨機配對,偶爾隨機配對會使得例如最後2個位置在實際遊戲過程中不能同時提取,這是一種縮回的情況以前的安置,可能不只是一個。您可以通過給網格空間賦予深度值來彌補這種情況,並且如果空閒空間的最大深度等於未放置對的數量,則最深處將被佔用而不是隨機。

如果您的遊戲涉及一次玩一張卡片,則應該在挑選下一張卡片時執行額外的檢查 - 如果剩餘的一組卡片未連接,例如,你已經選擇了所有4個,並且在未選中的組中剩下3個和5個。這意味着您必須收回以在前一階段選擇其他卡。算法可以是這樣的:

  1. 準備空網格,準備一組卡。
  2. 遞歸入口點。如果通過-1(第一次),選擇一整套可用的卡。如果不是第一次,則根據先前選擇的一張卡片選擇一組有效卡片(例如,有4個,選擇全部3個,選擇全部5個,如果允許則選擇全部4個)。隨機播放。 如果這個集合是空的,並且所有可用的卡片組也是空的,用遞歸返回true,否則返回false。
  3. 從集合中選擇下一張卡片。如果沒有剩餘,則退出失敗遞歸。
  4. 檢查當前卡的移除是否停止剩餘的未放置卡。如果是,請轉到3.
  5. 在網格中選擇一個空的可用位置,將選定的卡放置在那裏。
  6. 使用當前卡的值,更新的網格和減少的未放置的卡組輸入遞歸(保存狀態,轉到2)。
  7. 如果遞歸結果爲false,則返回5中的動作,並轉至3.如果爲true,則使用true保留遞歸。