新聞中心

        EEPW首頁 > 設計應用 > 智能棋盤的研究與設計

        智能棋盤的研究與設計

        作者:王天睿 時間:2019-01-29 來源:電子產品世界 收藏

        作者 王天睿(遼寧軌道交通職業學院,遼寧 沈陽 110023)

        本文引用地址:http://www.104case.com/article/201901/397272.htm

          摘要:本文主要介紹了在不改變棋手弈棋習慣的前提下,將我國傳統智力娛樂項目與電子技術、應用技術、軟件編程技術等相結合,實現信息記錄、規則裁決的智能化和自動化。智能棋盤是以技術為依托,合理配備選型,將多個模塊整合到一起,運用高科技手段實現棋手弈棋的完全智能化。

          智能棋盤系統將改變老式象棋諸多弊端,提高比賽的品味和檔次,同時減輕棋手負擔,提高對局質量,實現自動采集對局信息發送到采集服務器進行處理的功能。具體包括自動計時、計著子數、語音提示、判斷行棋是否符合規則等功能。

          該系統是以為核心,利用光電檢測技術,具有性能可靠、價格低廉、易于功能擴展等功能,可用于競技比賽,家庭娛樂。

          關鍵詞;單片機;;

          0 引言

          此文以現代傳統的為背景,為實現中國象棋弈棋的智能化、自動化,主要研究了一種以中國象棋為依托來實現智能棋盤的軟硬件設計。

          在行棋的過程中,利用光電管進行持續的掃描,根據每個棋子種類碼進行判斷,根據每個棋子位置碼進行定位,并且了解棋手按照交替的方式進行行棋,從而確定棋子的移動方式的。為了確定棋子的移動是否違規,筆者為每一類棋子專門設定了程序。在比賽尚未開始時,就要設置好雙方的行棋規定用時,如果在行棋的過程中起手規定時間到,就會被判定為違規,本棋盤規定當棋手落子后,對方必須在100 s內完成行棋(總步數不超過99步)。這樣就不用棋手每次走完棋進行人工按壓計時(計時器),采用自動化的技術來計算子數,替換到人工崗位,具有全自動功能,極大的節約了比賽時的人工成本。

          軟件設計主要為行棋程序設計,行棋程序主要由計著子數程序、計時器程序、吃棋程序、走棋程序、各棋子行棋規則判斷程序等組成。

          軟件設計部分要在棋局開始前完成初始化設置,以及棋盤各類棋子的編碼設置。開始按鍵按下后,由主程序不斷檢測8255所得到的棋盤各位置的變化,根據不同的棋子的變化,轉去執行相應的棋子走子或吃子等相關子程序。

          行棋程序中包含行棋規則是:①紅先黑后;②棋子落定后,不得悔棋;③吃棋拿棋后,不得悔棋。

          吃棋時,棋手應該先拿起己方棋子,然后再拿起想要吃的棋子,再將自己的棋子放在被吃棋子的位置上。如“炮”吃“卒”,應該先拿起自己的“炮”,然后去拿起對方的“卒”,最后將自己的“炮”放在對方原來的“卒”的位置上。

          在三條規則之中,第三條規則可以進行二選一,為了滿足用戶使用的需要本程序設定為先拿起自己的棋子去覆蓋敵方棋子。

          當一方拿起自己的棋子,落在無棋子的位置上時,即為走棋;調用走棋程序,同時要調用棋子行棋規則判斷程序,判斷是否違規;如違規即報警;如無違規則記錄該棋子的位置編碼。當一方拿起自己的棋子,再拿起對方的棋子,并將自己的棋子落在該新位置上時,即為吃棋;調用吃棋程序,同時要調用棋子行棋規則判斷程序,判斷是否違規;如違規即報警;如無違規則記錄該棋子的新位置編碼。

          棋子的類型編碼是始終不變的,位置編碼是隨著行棋的進行而變化的。在開始鍵按下后,不斷檢測棋盤數據并與初始值進行比較,直至有變化,即表示有棋子移動。由移動的位置碼可知是什么棋子在移動。

          軟件設計流程圖如圖1所示。

          1 棋盤各點的檢測掃描程序

          此程序的功能是對棋盤初始值的檢測,以及對各棋子位置變化的記錄是整個軟件設計部分的核心,本部分程序如能順利完成,其他的軟件部分也能迎刃而解。棋子的類型編碼是實現設定好的,而位置編碼是隨著行棋的進行而不斷刷新的。在開始鍵按下后,不斷檢測棋盤數據并與初始值進行比較,當棋子位置編碼發生變化時,即說明有棋手行棋。由移動的位置碼可知是什么棋子在移動。

          2 8279鍵盤顯示驅動程序

          在鍵盤顯示模塊中,共有8個數碼管,前四個與后四個各分為一組,前兩位顯示紅方棋手的每步行棋剩余時間,三、四位顯示紅方棋手的著子數,五、六位顯示黑方棋手每步行棋剩余時間,七、八位顯示黑方棋手的著子數。這樣就減輕了裁判員的負擔,實現自動判斷、計時的功能。該部分程序主要完成對走棋剩余時間的顯示,以及走子數的顯示。

          3 下棋子程序設計

          當棋手開始下棋時,下棋使用的程序共分為:走棋程序、吃棋程序、行棋規則。三種程序同時調用。下面以我方走馬和走車分別為例進行說明。

          3.1 馬行棋設計

          例如,馬的行棋規則為可走日,行走范圍為全棋盤。如圖2,可以向23456789中八個方向走,落地位置有對方子時可以直接吃掉,而不可向1處走,為蹩馬腿。

          當棋手走馬時,流程圖如圖3所示。具體地,需要考慮如下情況:

          ①根據是否僅有一個子動作判斷調用走棋程序還是吃棋程序;

          ②若僅有一個子動作則調用走棋程序;

          ③再根據行棋規則判斷是否符合馬的行棋規則,判斷方法為橫縱坐標中有一項移動兩格另一個移動一格,如不符合則報警;

          ④如果沒有犯規記錄則自動將馬的程序編碼及移動位置進行儲存;

          ⑤若有兩個棋子位置發生改變,則判定調用吃棋程序,當棋手吃完棋后,再根據行棋規則判斷是否符合,如若不符合則自動報警;

          ⑥如果沒有犯規記錄則自動將馬的程序編碼及移動位置進行儲存;

          ⑦同時要注意根據事先設定的程序,吃棋時需要先拿起自己的子再去拿對方的子。

          具體判定過程為,先根據馬的位置編碼判定動作的子為馬。然后根據行棋規則調用馬的行棋規則,只能走日,即縱坐標移動2,橫坐標移動1;或橫坐標移動2縱坐標移動為1,如果不符合馬的行棋規則則報警,如果符合則判定是否存在蹩馬腿現象,存在則報警,如果不存在則繼續;最后判定此步為吃棋還是行棋,結束。

          3.2 車行棋規則

          車走棋時設計程序同理:車的行棋規則較為簡單,只能直走,可以橫向直走也可以縱向直走前后左右均可走,中間遇到對方子可以直接吃掉,前后左右為對方子可以直接吃掉。

          ①首先判定車為縱向行走還是橫向行走,如果為縱向行走則記錄下縱向行走的位置編碼進行儲存;

          ②然后再進行判定是行棋還是吃棋,若僅有車一子進行移動則為行棋,調用行棋程序;

          ③若行棋結束位置還有其他子被替代則為吃棋,調用吃棋程序;

          ④如果出現橫縱坐標都變化、或者都不變化、或其他位置子消失等不符合行棋規則情況出現時則報警。

          3.3 炮行棋規則

          炮的行棋規則較為特殊,走棋時可以直行,縱橫方向皆可。吃棋時中間必須隔一個子;炮可向四個方向移動,也可以吃隔子吃子。這樣程序設計時需考慮以下步驟:

          ①先判斷是走棋還是吃棋,判斷橫縱坐標是否只有其中一個有變化;

          ②然后判斷目標位置是否有子,如果有子則調用吃棋程序,如果沒有子則調用走棋程序;

          ③將走棋的炮坐標和目標位置的子以代碼形式儲存;

          ④不符合行棋規則的報警。

          4 結論

          本次智能棋盤設計,在硬件選用上較為合理,各個芯片均選用市面上經常見到的常用芯片,并且性能穩定,操作簡單,方便,整體電路搭配較為完善。

          本次設計題目已經實現的功能有:

          ①行棋違規自動報警。

          ②自動記憶著子數。

          ③顯示走棋剩余時間等。

          由于篇幅的限制筆者刪除了棋盤與棋子編碼,僅列出了車馬炮三種棋子的行棋程序,本課題作為一項的研究的理論與嘗試,與實際應用還有一段差距。隨著微電子技術,軟件設計技術和傳感器技術的發展。此項目也將會有更大的發展空間,和更多的功能完善。

          參考文獻

          [1]徐愛鈞.智能化測量控制儀表原理與設計[M].北京:北京航空航天大學出版社.

          [2]孫傳友,等.感測技術與系統設計.北京:科學出版社, 2004.

          [3]戴梅萼,史嘉權.微型計算機技術及應用(4版).北京:清華大學出版社,2001.

          [4]馬群生,溫冬嬋,等.微型計算機技術.北京:清華大學出版社,2006.

          [5]秦維佳,侯春光,等.C/C++程序設計教程.北京:機械工業出版社,2007.

          [6]浦昭邦.光電測試技術.北京:機械工業出版,2004.

          [7]馬忠梅,等.單片機的C語言應用程序設計.北京:北京航空航天大學出版社,2007.

          [8]向紅.51系列單片機應用與實踐教程.北京:北京航空航天大學出版社,2008.

          [9]PCI Special Interest Group. PCI Local Bus Specification,1999.

          [10]Barry B B.The Intel Microprocessors: 6th ed,2005.

        本文來源于科技期刊《電子產品世界》2019年第2期第52頁,歡迎您寫論文時引用,并注明出處



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 通化县| 英山县| 柯坪县| 岱山县| 清徐县| 青河县| 湛江市| 巍山| 苏尼特右旗| 武强县| 兴化市| 迭部县| 拜泉县| 濮阳市| 漳平市| 长兴县| 于都县| 宁德市| 伊春市| 松桃| 青海省| 丰原市| 福海县| 正阳县| 奉贤区| 朔州市| 陕西省| 奉新县| 汾西县| 岳普湖县| 崇左市| 牙克石市| 新宁县| 军事| 洪江市| 宜川县| 海城市| 图们市| 保靖县| 田东县| 永兴县|