当前位置:网站首页>PLC也能制作小遊戲----Codesys編寫猜數字小遊戲

PLC也能制作小遊戲----Codesys編寫猜數字小遊戲

2022-06-12 23:51:00 tnt1314

1、序言

作者作為工控人員,有點羨慕學計算機的程序員,可以通過代碼實現各種功能的軟件以及遊戲(這個是重點,嘿嘿),就像windows以前自帶的紙牌,空當接龍,掃雷等。最近發現,Codesys編程軟件擁有的各種編譯方式,以及强大的可視化功能,完全可以實現類似的小遊戲程序編寫,讓疲憊的工控人員在調機的空閑之餘可以休閑下,哈。

本文先嘗試下編寫一個容易點的小遊戲,十幾年前的文曲星上比較流行的,猜數字小遊戲。

2、猜數字規則

遊戲規則如下:

a、生成被猜數,4個數字,由0-9中隨機產生,且4個數字不重複,例如:1256、0123、8563…;

b、猜數字,由玩家輸入4比特數字,對比兩個數字,給出猜測結果提示,提示說明,玩家輸入4個數字中,存在有被猜數內的數字,且比特置相同的,提示為A,存在有被猜數內的數字,且比特置相同的,提示為B;AB的數量就是提示結果,比如被猜數為:3025,玩家猜測:1234,提示結果為:0A2B,意思是1234中有2個數字存在被猜數中,但比特置不對;若猜測0123,則提示結果為:1A2B,即0123中存在1個數字,存在被猜數中,且比特置正確,還有2個數字,存在被猜數中,但比特置不對;

c、玩家根據結果提示分析並重新猜測,直到猜測結果為4A0B,則錶示猜中了;

d、玩家可猜測是次數最多為7次,若7次還沒猜出,則遊戲失敗。

3、程序編寫

猜數字的邏輯並不複雜,因此不做流程圖了,直接根據遊戲規則編寫程序,主要包括:

a、生成4比特不重複的數字,作為被猜數;

b、比較玩家輸入的數字與被猜數,生成猜測結果;

c、數據顯示與類型轉換,需要用到的類型主要了整形和字符型。

3.1、生成隨機數

codesys並沒有生成隨機數的函數,需要下載oscat庫,其中有個GEN_RDM函數可以生成隨機數,不過其函數說明全英文的,目前還沒研究明白,只能通過其他方法。

本文參考了一個生成隨機數較為簡潔的辦法,設置一個ms級別的定時器(codesys最小可設置1ms),讓x1在0-9依次循環,通過按鈕操作,當檢測到按鈕上昇沿時,x1的值就是生成的隨機數的第一比特數據,然後讓x2在0-9中去除x1後的範圍內循環,同樣的原理生成x2,依次生成x3,x4,組合就得到4比特的隨機數。

此方法可能存在一定的偶然性,並不能完全隨機,但對於本文中猜數字遊戲來說,已經可以使用了,並沒有對隨機數嚴格的要求。生成程序用梯形圖實現,程序如下:

a、建立4個數組,比特數分別為7,8,9,10

b、建立毫秒級循環

c、 依次排除掉選中的數

d、上昇沿取數據

 e、數據轉換成字符型 ,顯示使用(整數型最高比特為0是只能顯示3個數)

 3.2、輸入數據比較及提示結果

3.3、結果判斷

 

 4、可視化仿真

4.1、創建畫面,變量連接(變量連接方法略過,有疑問可參考博文ST語言實現冒泡排序的文章:https://blog.csdn.net/qq_19979629/article/details/122273823

 4.2、遊戲運行

運行視頻如下:

軟PLC也能制作小遊戲----Codesys編寫猜數字小遊戲

 5、綜述

通過編程和可視化仿真,Codesys基本可以實現猜數字小遊戲的功能,接下來空閑之餘將嘗試更多休閑遊戲的編寫哈,以便開發更多的codesys功能,嘿嘿。

本文所用Codesys版本為V3.5.14.10,本文所涉及程序可在以下地址下載:

https://download.csdn.net/download/qq_19979629/85623135

原网站

版权声明
本文为[tnt1314]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/163/202206122347525817.html