新聞中心

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

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

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

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

本文引用地址:http://butianyuan.cn/article/201901/397272.htm

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

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

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

  0 引言

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

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

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

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

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

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

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

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

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

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

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

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

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

  在鍵盤顯示模塊中,共有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)棋手開始下棋時(shí),下棋使用的程序共分為:走棋程序、吃棋程序、行棋規(guī)則。三種程序同時(shí)調(diào)用。下面以我方走馬和走車分別為例進(jìn)行說明。

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

  例如,馬的行棋規(guī)則為可走日,行走范圍為全棋盤。如圖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)警;

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

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

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

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

  具體判定過程為,先根據(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 車行棋規(guī)則

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

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

 ?、谌缓笤龠M(jìn)行判定是行棋還是吃棋,若僅有車一子進(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)用吃棋程序,如果沒有子則調(diào)用走棋程序;

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

  ④不符合行棋規(guī)則的報(bào)警。

  4 結(jié)論

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

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

  ①行棋違規(guī)自動(dòng)報(bào)警。

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

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

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

  參考文獻(xiàn)

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

  [2]孫傳友,等.感測技術(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]浦昭邦.光電測試技術(shù).北京:機(jī)械工業(yè)出版,2004.

  [7]馬忠梅,等.單片機(jī)的C語言應(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.

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



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉