iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
SideProject30

毫無自信的開發Web遊戲接龍-成為創造龍的英雄之路!系列 第 28

Day28 評估是否無牌可走,建議棄權的提示(嘗試失敗)

  • 分享至 

  • xImage
  •  

前言

因為在玩紙牌接龍的過程中可能會被玩到進入無解的情況,也就是再怎麼移動撲克牌都無法完成,所以如何在遊玩中告知玩家這件事情蠻重要的,避免不必要的嘗試。

思考如何實現

老實說這篇文章可能是對我來說最難寫的,雖然身為開發者可以知道7牌堆全部的蓋牌底下是什麼花色數字,
但如何知道場上已經無解又是一回事。

基本上不考慮暴力的窮舉法,其實查到的結果大致可以推導無解的情況,不論是先天或是後天操作導致的無解都是因為疊在蓋牌上方的牌無法移動導致蓋牌無法打開,所以昨天自動結算才可以依照已經沒有蓋牌的情況下當作全部完成。

所以理論上7牌堆如果出現壓住隱藏牌的那一張未來完全無法移動,那就代表死局。

決定判斷死局的演算法(有誤)

雖然看了很多篇文章也理解死局的構成就是壓在蓋牌上的牌無法移動,
但沒有相對簡單的判斷的方法...

在邊玩接龍邊思考死局判斷的過程中,想到一個判斷方法在此命名為異色大一若隱即死局

名稱聽起來很中二,檢查方式是7牌堆共7行,每一直行最上面壓住隱牌的第一張牌視為檢查點(Ex: 梅花6),
檢查隱藏牌中是否有兩個花色與檢查點不同且大一號的數字(Ex: 紅心7、方塊7),若有則視為此局已無解(死局),若無則繼續檢查其他的檢查點。

範例圖: 黑色框為隱藏牌、紫色為檢查點、橘色為相對檢查點大一號的異色牌
異花接我皆隱即死局的說明圖

小結

實作後發現此演算法有錯誤會出現判斷活局/死局相反的情況,
但還是把程式碼推上去,明天繼續研究是否有其他方法解🫡。

程式碼: https://github.com/kabuto412rock/ithelp-pokergame/tree/day28

參考文件


上一篇
Day27 當牌全開時自動結算
下一篇
Day29 簡單評估是否還有活路
系列文
毫無自信的開發Web遊戲接龍-成為創造龍的英雄之路!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言