LabVIEW井字遊戲

更新於 發佈於 閱讀時間約 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

留言
avatar-img
留言分享你的想法!
avatar-img
hls Ding的沙龍
7會員
64內容數
ktest
hls Ding的沙龍的其他內容
2025/03/06
import csv import os folder = 'D:/PROGRAMMING/PythonCode/data_arrange/' fname_sum = 'sum.csv' bump = 6 csv_filenames = [f for f in os.listdir(folde
2025/03/06
import csv import os folder = 'D:/PROGRAMMING/PythonCode/data_arrange/' fname_sum = 'sum.csv' bump = 6 csv_filenames = [f for f in os.listdir(folde
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
當你邊吃粽子邊看龍舟競賽直播的時候,可能會順道悼念一下2300多年前投江的屈原。但你知道端午節及其活動原先都與屈原毫無關係嗎?這是怎麼回事呢? 本文深入探討端午節設立初衷、粽子、龍舟競渡與屈原自沉四者。看完這篇文章,你就會對端午、粽子、龍舟和屈原的四角關係有新的認識喔。那就讓我們一起解開謎團吧!
Thumbnail
給定一個9x9的輸入陣列代表數獨題目已經 部分作答 的狀態, 請驗證已經作答的部分是否為合法的Sudoku的輸入。 註: 合法的Sudoku輸入必須滿足這些規則 1~9每一直排恰好出現一次。 1~9每一橫排恰好出現一次。 1~9在3x3的小方陣裏恰好出現一次。
Thumbnail
給定一個9x9的輸入陣列代表數獨題目已經 部分作答 的狀態, 請驗證已經作答的部分是否為合法的Sudoku的輸入。 註: 合法的Sudoku輸入必須滿足這些規則 1~9每一直排恰好出現一次。 1~9每一橫排恰好出現一次。 1~9在3x3的小方陣裏恰好出現一次。
Thumbnail
題目給定一個布林代數的二元樹,要求我們計算最後的結果。 葉子節點都是真假值 非葉子節點都是布林運算子
Thumbnail
題目給定一個布林代數的二元樹,要求我們計算最後的結果。 葉子節點都是真假值 非葉子節點都是布林運算子
Thumbnail
題目敘述 給定一個piles陣列,裡面對應到每堆石頭的數量。 Alice 和 Bob玩輪流取石頭的遊戲,總共有n堆石頭,每堆的石頭數量有多有少。 Alice先取,接著Bob,反覆交替,每回合輪到的人可以從當下的第一堆或者最後一堆,拿走那堆對應的石頭。 最後比誰拿到的石頭總數量比較多就獲勝。
Thumbnail
題目敘述 給定一個piles陣列,裡面對應到每堆石頭的數量。 Alice 和 Bob玩輪流取石頭的遊戲,總共有n堆石頭,每堆的石頭數量有多有少。 Alice先取,接著Bob,反覆交替,每回合輪到的人可以從當下的第一堆或者最後一堆,拿走那堆對應的石頭。 最後比誰拿到的石頭總數量比較多就獲勝。
Thumbnail
題目敘述 題目會給我們一個輸入陣列arr,起始點固定在索引為0的位置, 終點固定在索引為n-1的位置。 假設當下所在的索引位置為i,那麼每次移動的時候,可以跳到i-1,i+1,或者其他和我有相同元素值的位置arr[j], where arr[j] = arr[i]。 例如: 假設當下在i=3
Thumbnail
題目敘述 題目會給我們一個輸入陣列arr,起始點固定在索引為0的位置, 終點固定在索引為n-1的位置。 假設當下所在的索引位置為i,那麼每次移動的時候,可以跳到i-1,i+1,或者其他和我有相同元素值的位置arr[j], where arr[j] = arr[i]。 例如: 假設當下在i=3
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,每個元素值代表那個格子點可以左右位移的固定長度。 例如,假設 nums[i] = 3,那麼下一步可以移動到nums[i-3] 或 nums[i+3]這兩個格子點。 題目​會給定一個起始點start索引位置,請問我們能不能走到內部數值為0的格子點?
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,每個元素值代表那個格子點可以左右位移的固定長度。 例如,假設 nums[i] = 3,那麼下一步可以移動到nums[i-3] 或 nums[i+3]這兩個格子點。 題目​會給定一個起始點start索引位置,請問我們能不能走到內部數值為0的格子點?
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,每個元素值代表那個格子點可以跳躍的最大長度。 一開始從最左邊的格子點出發開始跳,請問可以成功抵達終點,也就是最右邊的格子點嗎? 如果可以,返回 True。 如果不行,返回False。 題目的原文敘述 測試範例 Example 1: In
Thumbnail
題目敘述 題目會給我們一個輸入陣列nums,每個元素值代表那個格子點可以跳躍的最大長度。 一開始從最左邊的格子點出發開始跳,請問可以成功抵達終點,也就是最右邊的格子點嗎? 如果可以,返回 True。 如果不行,返回False。 題目的原文敘述 測試範例 Example 1: In
Thumbnail
題目敘述 題目會給定我們一個比賽紀錄陣列matches,裡面以pair的方式儲存,每個pair的第一個欄位代表這場比賽的贏家ID,第二個欄位代表這場比賽的輸家ID。 題目要求我們找出所有沒有輸的玩家ID,和只輸一場的玩家ID。 計算時,只考慮有比賽紀錄的玩家。 輸出時,依照遊戲玩家的ID,從
Thumbnail
題目敘述 題目會給定我們一個比賽紀錄陣列matches,裡面以pair的方式儲存,每個pair的第一個欄位代表這場比賽的贏家ID,第二個欄位代表這場比賽的輸家ID。 題目要求我們找出所有沒有輸的玩家ID,和只輸一場的玩家ID。 計算時,只考慮有比賽紀錄的玩家。 輸出時,依照遊戲玩家的ID,從
Thumbnail
題目會給們一個陣列,還有一個k值。 接著進行比大小的遊戲,規則如下: 每次取陣列前兩個元素值比大小,比較小的會被重新安排到陣列最後方,陣列前兩個元素值比大小,同樣的,比較小的會被重新安排到陣列最後方。依此類推,反覆進行比大小的遊戲。 請問第一個能連贏k回合的是哪個數字?
Thumbnail
題目會給們一個陣列,還有一個k值。 接著進行比大小的遊戲,規則如下: 每次取陣列前兩個元素值比大小,比較小的會被重新安排到陣列最後方,陣列前兩個元素值比大小,同樣的,比較小的會被重新安排到陣列最後方。依此類推,反覆進行比大小的遊戲。 請問第一個能連贏k回合的是哪個數字?
Thumbnail
為什麼要學習撰寫程式? 使用別人所撰寫的軟體時,總是會受限於別人所提供的特定功能,但是當你遇到了一些工作是目前現有的軟體都幫不上忙的情況該怎麼辦? 如果你會撰寫程式,這時候就可以自己創造一個專為解決此工作的程式;換句話說,撰寫程式讓你擁有控制電腦的力量。 安裝 Python 首先必須在電腦
Thumbnail
為什麼要學習撰寫程式? 使用別人所撰寫的軟體時,總是會受限於別人所提供的特定功能,但是當你遇到了一些工作是目前現有的軟體都幫不上忙的情況該怎麼辦? 如果你會撰寫程式,這時候就可以自己創造一個專為解決此工作的程式;換句話說,撰寫程式讓你擁有控制電腦的力量。 安裝 Python 首先必須在電腦
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News