<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 設(shè)計(jì)應(yīng)用 > 智能棋盤(pán)的研究與設(shè)計(jì)

          智能棋盤(pán)的研究與設(shè)計(jì)

          作者:王天睿 時(shí)間:2019-01-29 來(lái)源:電子產(chǎn)品世界 收藏

          作者 王天睿(遼寧軌道交通職業(yè)學(xué)院,遼寧 沈陽(yáng) 110023)

          本文引用地址:http://www.ex-cimer.com/article/201901/397272.htm

            摘要:本文主要介紹了在不改變棋手弈棋習(xí)慣的前提下,將我國(guó)傳統(tǒng)智力娛樂(lè)項(xiàng)目與電子技術(shù)、應(yīng)用技術(shù)、軟件編程技術(shù)等相結(jié)合,實(shí)現(xiàn)信息記錄、規(guī)則裁決的智能化和自動(dòng)化。智能棋盤(pán)是以技術(shù)為依托,合理配備選型,將多個(gè)模塊整合到一起,運(yùn)用高科技手段實(shí)現(xiàn)棋手弈棋的完全智能化。

            智能棋盤(pán)系統(tǒng)將改變老式象棋諸多弊端,提高比賽的品味和檔次,同時(shí)減輕棋手負(fù)擔(dān),提高對(duì)局質(zhì)量,實(shí)現(xiàn)自動(dòng)采集對(duì)局信息發(fā)送到采集服務(wù)器進(jìn)行處理的功能。具體包括自動(dòng)計(jì)時(shí)、計(jì)著子數(shù)、語(yǔ)音提示、判斷行棋是否符合規(guī)則等功能。

            該系統(tǒng)是以為核心,利用光電檢測(cè)技術(shù),具有性能可靠、價(jià)格低廉、易于功能擴(kuò)展等功能,可用于競(jìng)技比賽,家庭娛樂(lè)。

            關(guān)鍵詞;單片機(jī);;

            0 引言

            此文以現(xiàn)代傳統(tǒng)的為背景,為實(shí)現(xiàn)中國(guó)象棋弈棋的智能化、自動(dòng)化,主要研究了一種以中國(guó)象棋為依托來(lái)實(shí)現(xiàn)智能棋盤(pán)的軟硬件設(shè)計(jì)。

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

            軟件設(shè)計(jì)主要為行棋程序設(shè)計(jì),行棋程序主要由計(jì)著子數(shù)程序、計(jì)時(shí)器程序、吃棋程序、走棋程序、各棋子行棋規(guī)則判斷程序等組成。

            軟件設(shè)計(jì)部分要在棋局開(kāi)始前完成初始化設(shè)置,以及棋盤(pán)各類(lèi)棋子的編碼設(shè)置。開(kāi)始按鍵按下后,由主程序不斷檢測(cè)8255所得到的棋盤(pán)各位置的變化,根據(jù)不同的棋子的變化,轉(zhuǎn)去執(zhí)行相應(yīng)的棋子走子或吃子等相關(guān)子程序。

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

            吃棋時(shí),棋手應(yīng)該先拿起己方棋子,然后再拿起想要吃的棋子,再將自己的棋子放在被吃棋子的位置上。如“炮”吃“卒”,應(yīng)該先拿起自己的“炮”,然后去拿起對(duì)方的“卒”,最后將自己的“炮”放在對(duì)方原來(lái)的“卒”的位置上。

            在三條規(guī)則之中,第三條規(guī)則可以進(jìn)行二選一,為了滿(mǎn)足用戶(hù)使用的需要本程序設(shè)定為先拿起自己的棋子去覆蓋敵方棋子。

            當(dāng)一方拿起自己的棋子,落在無(wú)棋子的位置上時(shí),即為走棋;調(diào)用走棋程序,同時(shí)要調(diào)用棋子行棋規(guī)則判斷程序,判斷是否違規(guī);如違規(guī)即報(bào)警;如無(wú)違規(guī)則記錄該棋子的位置編碼。當(dāng)一方拿起自己的棋子,再拿起對(duì)方的棋子,并將自己的棋子落在該新位置上時(shí),即為吃棋;調(diào)用吃棋程序,同時(shí)要調(diào)用棋子行棋規(guī)則判斷程序,判斷是否違規(guī);如違規(guī)即報(bào)警;如無(wú)違規(guī)則記錄該棋子的新位置編碼。

            棋子的類(lèi)型編碼是始終不變的,位置編碼是隨著行棋的進(jìn)行而變化的。在開(kāi)始鍵按下后,不斷檢測(cè)棋盤(pán)數(shù)據(jù)并與初始值進(jìn)行比較,直至有變化,即表示有棋子移動(dòng)。由移動(dòng)的位置碼可知是什么棋子在移動(dòng)。

            軟件設(shè)計(jì)流程圖如圖1所示。

            1 棋盤(pán)各點(diǎn)的檢測(cè)掃描程序

            此程序的功能是對(duì)棋盤(pán)初始值的檢測(cè),以及對(duì)各棋子位置變化的記錄是整個(gè)軟件設(shè)計(jì)部分的核心,本部分程序如能順利完成,其他的軟件部分也能迎刃而解。棋子的類(lèi)型編碼是實(shí)現(xiàn)設(shè)定好的,而位置編碼是隨著行棋的進(jìn)行而不斷刷新的。在開(kāi)始鍵按下后,不斷檢測(cè)棋盤(pán)數(shù)據(jù)并與初始值進(jìn)行比較,當(dāng)棋子位置編碼發(fā)生變化時(shí),即說(shuō)明有棋手行棋。由移動(dòng)的位置碼可知是什么棋子在移動(dòng)。

            2 8279鍵盤(pán)顯示驅(qū)動(dòng)程序

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

            3 下棋子程序設(shè)計(jì)

            當(dāng)棋手開(kāi)始下棋時(shí),下棋使用的程序共分為:走棋程序、吃棋程序、行棋規(guī)則。三種程序同時(shí)調(diào)用。下面以我方走馬和走車(chē)分別為例進(jìn)行說(shuō)明。

            3.1 馬行棋設(shè)計(jì)

            例如,馬的行棋規(guī)則為可走日,行走范圍為全棋盤(pán)。如圖2,可以向23456789中八個(gè)方向走,落地位置有對(duì)方子時(shí)可以直接吃掉,而不可向1處走,為蹩馬腿。

            當(dāng)棋手走馬時(shí),流程圖如圖3所示。具體地,需要考慮如下情況:

           ?、俑鶕?jù)是否僅有一個(gè)子動(dòng)作判斷調(diào)用走棋程序還是吃棋程序;

           ?、谌魞H有一個(gè)子動(dòng)作則調(diào)用走棋程序;

            ③再根據(jù)行棋規(guī)則判斷是否符合馬的行棋規(guī)則,判斷方法為橫縱坐標(biāo)中有一項(xiàng)移動(dòng)兩格另一個(gè)移動(dòng)一格,如不符合則報(bào)警;

           ?、苋绻麤](méi)有犯規(guī)記錄則自動(dòng)將馬的程序編碼及移動(dòng)位置進(jìn)行儲(chǔ)存;

           ?、萑粲袃蓚€(gè)棋子位置發(fā)生改變,則判定調(diào)用吃棋程序,當(dāng)棋手吃完棋后,再根據(jù)行棋規(guī)則判斷是否符合,如若不符合則自動(dòng)報(bào)警;

           ?、奕绻麤](méi)有犯規(guī)記錄則自動(dòng)將馬的程序編碼及移動(dòng)位置進(jìn)行儲(chǔ)存;

           ?、咄瑫r(shí)要注意根據(jù)事先設(shè)定的程序,吃棋時(shí)需要先拿起自己的子再去拿對(duì)方的子。

            具體判定過(guò)程為,先根據(jù)馬的位置編碼判定動(dòng)作的子為馬。然后根據(jù)行棋規(guī)則調(diào)用馬的行棋規(guī)則,只能走日,即縱坐標(biāo)移動(dòng)2,橫坐標(biāo)移動(dòng)1;或橫坐標(biāo)移動(dòng)2縱坐標(biāo)移動(dòng)為1,如果不符合馬的行棋規(guī)則則報(bào)警,如果符合則判定是否存在蹩馬腿現(xiàn)象,存在則報(bào)警,如果不存在則繼續(xù);最后判定此步為吃棋還是行棋,結(jié)束。

            3.2 車(chē)行棋規(guī)則

            車(chē)走棋時(shí)設(shè)計(jì)程序同理:車(chē)的行棋規(guī)則較為簡(jiǎn)單,只能直走,可以橫向直走也可以縱向直走前后左右均可走,中間遇到對(duì)方子可以直接吃掉,前后左右為對(duì)方子可以直接吃掉。

           ?、偈紫扰卸ㄜ?chē)為縱向行走還是橫向行走,如果為縱向行走則記錄下縱向行走的位置編碼進(jìn)行儲(chǔ)存;

           ?、谌缓笤龠M(jìn)行判定是行棋還是吃棋,若僅有車(chē)一子進(jìn)行移動(dòng)則為行棋,調(diào)用行棋程序;

           ?、廴粜衅褰Y(jié)束位置還有其他子被替代則為吃棋,調(diào)用吃棋程序;

            ④如果出現(xiàn)橫縱坐標(biāo)都變化、或者都不變化、或其他位置子消失等不符合行棋規(guī)則情況出現(xiàn)時(shí)則報(bào)警。

            3.3 炮行棋規(guī)則

            炮的行棋規(guī)則較為特殊,走棋時(shí)可以直行,縱橫方向皆可。吃棋時(shí)中間必須隔一個(gè)子;炮可向四個(gè)方向移動(dòng),也可以吃隔子吃子。這樣程序設(shè)計(jì)時(shí)需考慮以下步驟:

           ?、傧扰袛嗍亲咂暹€是吃棋,判斷橫縱坐標(biāo)是否只有其中一個(gè)有變化;

           ?、谌缓笈袛嗄繕?biāo)位置是否有子,如果有子則調(diào)用吃棋程序,如果沒(méi)有子則調(diào)用走棋程序;

           ?、蹖⒆咂宓呐谧鴺?biāo)和目標(biāo)位置的子以代碼形式儲(chǔ)存;

           ?、懿环闲衅逡?guī)則的報(bào)警。

            4 結(jié)論

            本次智能棋盤(pán)設(shè)計(jì),在硬件選用上較為合理,各個(gè)芯片均選用市面上經(jīng)常見(jiàn)到的常用芯片,并且性能穩(wěn)定,操作簡(jiǎn)單,方便,整體電路搭配較為完善。

            本次設(shè)計(jì)題目已經(jīng)實(shí)現(xiàn)的功能有:

           ?、傩衅暹`規(guī)自動(dòng)報(bào)警。

           ?、谧詣?dòng)記憶著子數(shù)。

           ?、埏@示走棋剩余時(shí)間等。

            由于篇幅的限制筆者刪除了棋盤(pán)與棋子編碼,僅列出了車(chē)馬炮三種棋子的行棋程序,本課題作為一項(xiàng)的研究的理論與嘗試,與實(shí)際應(yīng)用還有一段差距。隨著微電子技術(shù),軟件設(shè)計(jì)技術(shù)和傳感器技術(shù)的發(fā)展。此項(xiàng)目也將會(huì)有更大的發(fā)展空間,和更多的功能完善。

            參考文獻(xiàn)

            [1]徐愛(ài)鈞.智能化測(cè)量控制儀表原理與設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社.

            [2]孫傳友,等.感測(cè)技術(shù)與系統(tǒng)設(shè)計(jì).北京:科學(xué)出版社, 2004.

            [3]戴梅萼,史嘉權(quán).微型計(jì)算機(jī)技術(shù)及應(yīng)用(4版).北京:清華大學(xué)出版社,2001.

            [4]馬群生,溫冬嬋,等.微型計(jì)算機(jī)技術(shù).北京:清華大學(xué)出版社,2006.

            [5]秦維佳,侯春光,等.C/C++程序設(shè)計(jì)教程.北京:機(jī)械工業(yè)出版社,2007.

            [6]浦昭邦.光電測(cè)試技術(shù).北京:機(jī)械工業(yè)出版,2004.

            [7]馬忠梅,等.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2007.

            [8]向紅.51系列單片機(jī)應(yīng)用與實(shí)踐教程.北京:北京航空航天大學(xué)出版社,2008.

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

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

          本文來(lái)源于科技期刊《電子產(chǎn)品世界》2019年第2期第52頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();