LabVIEW井字遊戲

2019/10/25閱讀時間約 1 分鐘

raw-image

 

首先要知道遊戲流程,這相當於是程式流程

-->人落子-->贏了嗎-->END

               -->沒贏-->換CPU-->檢查本回落子會贏位置

                                          -->不會贏檢查人下一回落子會贏位置

                                          -->任意位置落子

井字棋判定演算法很單純,就是把會贏的狀況作成array,每次落子就用array檢查棋盤現況

比較麻煩的地方在如何在front panel顯示每次落子後棋盤的狀態

當然方法有很多種,我希望可以使用Labview原本就有的東西來顯示

 

這邊選用了獨立的9顆布林LED (不可以作成array)

布林LED的好處在於可以用布林值標注這個位置是不是已有落子

另外又可以用property改變燈色,在panel顯示出不同家的落子

raw-image

 

整個架構就是基本狀態機,包含初始化、iDLE、1P(人下子後判斷)、CPU、end幾個狀態

需要一個array紀錄真實棋盤狀態(因為panel顯示的是獨立布林)、一個array紀錄有效空位(可能也不需要)

另外需要一個整數標記現在要下子的是哪一方

每輪都會停在iDLE等人下在有效的位置

這邊確認下子的方式是讀取鍵盤scancode,用下面code來確認輸入合法及改變棋盤

raw-image

 

輸贏判定的code

輸入棋盤狀態跟現在落子方標記

贏棋列表紀錄三個一組的index,檢查棋盤後只要三個都屬於同一方就是贏棋

若是有兩個屬同一方而且第三格未落子,會記錄下來供CPU防守

raw-image

 

CPU落子演算法如同一開始的判斷流程

raw-image

    5會員
    56內容數
    ktest
    留言0
    查看全部
    發表第一個留言支持創作者!