久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

智能棋盤,?你也能做!

 千粟館 2019-07-18

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

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

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

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

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

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

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

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

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

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

棋盤各點的檢測掃描程序

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

8279鍵盤顯示驅(qū)動程序

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

下棋子程序設(shè)計

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

1馬行棋設(shè)計

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

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

  1. 根據(jù)是否僅有一個子動作判斷調(diào)用走棋程序還是吃棋程序;

  2. 若僅有一個子動作則調(diào)用走棋程序;

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

  4. 如果沒有犯規(guī)記錄則自動將馬的程序編碼及移動位置進(jìn)行儲存;

  5. 若有兩個棋子位置發(fā)生改變,,則判定調(diào)用吃棋程序,,當(dāng)棋手吃完棋后,再根據(jù)行棋規(guī)則判斷是否符合,,如若不符合則自動報警;

  6. 如果沒有犯規(guī)記錄則自動將馬的程序編碼及移動位置進(jìn)行儲存;

  7. 同時要注意根據(jù)事先設(shè)定的程序,,吃棋時需要先拿起自己的子再去拿對方的子。

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

2車行棋規(guī)則

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

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

  2. 然后再進(jìn)行判定是行棋還是吃棋,,若僅有車一子進(jìn)行移動則為行棋,,調(diào)用行棋程序;

  3. 若行棋結(jié)束位置還有其他子被替代則為吃棋,調(diào)用吃棋程序;

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

3炮行棋規(guī)則

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

  • 先判斷是走棋還是吃棋,,判斷橫縱坐標(biāo)是否只有其中一個有變化;

  • 然后判斷目標(biāo)位置是否有子,如果有子則調(diào)用吃棋程序,,如果沒有子則調(diào)用走棋程序;

  • 將走棋的炮坐標(biāo)和目標(biāo)位置的子以代碼形式儲存;

  • 不符合行棋規(guī)則的報警,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多