2019-10-25|閱讀時間 ‧ 約 2 分鐘

LabVIEW井字遊戲

    amp-img-attr

     

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

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

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

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

                                              -->任意位置落子

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

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

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

     

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

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

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

     

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

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

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

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

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

     

    輸贏判定的code

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

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

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

     

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

    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.