国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Proteus的井字棋游戲設計與仿真

2021-06-15 01:08朱其祥蔣宗華陳曉玲
關(guān)鍵詞:數(shù)碼管落子棋盤

朱其祥,徐 勇,蔣宗華,陳曉玲

(安徽財經(jīng)大學 管理科學與工程學院,安徽 蚌埠 233030)

0 引言

井字棋[1](Tic Tac Toe)又稱井字游戲,也叫九宮格游戲,即兩人輪流在印有九格方盤上畫“X”或“O”字,誰先把三個同一記號排成橫線、直線、斜線即為勝者.1952年,EDSAC計算機上的“OXO”游戲成為了已知的第一款電子游戲,計算機能與人類對手完美地進行對戰(zhàn).井字棋也被應用于人工智能與博弈論的研究.本文擬用單片機結(jié)合Proteus仿真軟件來設計一款井字棋游戲.

1 功能說明

依據(jù)系統(tǒng)電路的按鍵來控制游戲雙方放置棋子的位置,分別用仿手機鍵盤中的①~⑨與棋盤格子相對應,其中①~③對應棋盤第一行從左到右的3個棋格,④~⑥對應棋盤第二行從左到右的3個棋格,⑦~⑨對應棋盤第三行從左到右的3個棋格.分別用‘紅’和‘黃’兩種顏色的雙色發(fā)光二極管代表游戲雙方的棋子.若棋盤格子為空時,則可以放置棋子;若格子已有棋子,則放置無效.當程序判斷出有一方獲勝時,即在數(shù)碼管上顯示‘r’或‘y’(表示‘紅’方或‘黃’方獲勝),同時禁止輸?shù)囊环皆倮^續(xù)落子,此局宣告結(jié)束;當棋盤格子已被棋子占滿且無任何一方獲勝時,即在數(shù)碼管上顯示‘P’(表示‘平手’),如圖1所示;當棋盤格子未被占滿且無任何一方獲勝或平手時,即在數(shù)碼管上顯示‘-’(表示可以‘繼續(xù)’).延遲一段時間后(也可在游戲進行中按‘0’鍵),程序會自動清空棋盤,開始新的對局,同時交換‘紅’、‘黃’先手(先手多一子獲勝概率大,每次交換先手較為公平).

圖1 “紅”方勝、“黃”方勝、“平手”仿真效果圖

2 硬件電路設計

依據(jù)游戲功能說明,繪制出游戲仿真電路圖[2-5],如圖2所示.電路由單片機最小系統(tǒng)、蜂鳴器、共陽極數(shù)碼管及限流電阻、9只紅黃雙色LED及限流電阻、仿手機鍵盤及解碼芯片等組成.解碼芯片74C922[6]的作用:一方面可以省去用軟件掃描矩陣鍵盤獲得按鍵編碼;另一方面按鍵時可以形成外部中斷請求信號.為了形成棋子與棋盤的效果,將做好的方格圖覆蓋在雙色LED圖上,如圖3所示.

3 軟件設計

軟件采用KeilC51集成開發(fā)環(huán)境來編寫,程序由主函數(shù)、延時函數(shù)、發(fā)聲函數(shù)、清空棋盤函數(shù)、判贏函數(shù)、外部中斷處理函數(shù)等構(gòu)成.游戲雙方的按鍵采用外部中斷方式處理,當任何一方按鍵后,即進入外部中斷處理函數(shù).首先判斷該位置是否為空,若為空,才可放棋子.點擊按鍵后,使該位置的LED點亮,若是‘黃’方,則使其發(fā)黃光,若是‘紅’方,則使其發(fā)紅光.并發(fā)出‘滴’一聲,然后修改走棋方的標志,如剛才走棋的是‘黃’方,則下次就該輪到‘紅’方走棋,反之亦然;若該位置已有棋子,則操作無效,并發(fā)出‘嘟’一聲,此時,不修改走棋標志,仍是該當前走棋的一方落子.在程序處理上,定義一個2維數(shù)組arr[3],用以記錄棋子的狀態(tài).開始將數(shù)組初始化為‘’(空格)字符,如當‘黃’方在某方格落子有效后,數(shù)組中相應位置的數(shù)據(jù)則修改為‘Y’;如當‘紅’方在某方格落子有效后,數(shù)據(jù)的內(nèi)容變則為‘R’.判贏函數(shù)的算法是:掃描數(shù)組中的所有元素,當某一行的三個元素內(nèi)容相同、或某一列三個元素內(nèi)容相同、或者是對角線上的三個元素內(nèi)容相同即為獲勝!(返回對應數(shù)組元素即可判斷是哪方贏了,如返回的內(nèi)容是‘Y’,則為‘黃’方獲勝,若返回的內(nèi)容是‘R’,則為‘紅’方獲勝).若輸贏的判斷沒有結(jié)果,并判斷棋盤上是否還有位置(是否有空格),若還有的話則繼續(xù)(返回‘N’表示游戲繼續(xù));沒有則是平局!(返回‘P’表示平局).

圖2 井字棋游戲仿真電路圖

圖3 模擬的棋子和棋盤仿真圖

4 游戲仿真

用Keil C51集成開發(fā)環(huán)境將編寫好的項目文件及添加的.C文件進行編譯生成.HEX文件,然后將其裝載到用Proteus畫好的電路圖的CPU中即可仿真運行[7-11].仿真效果如圖1所示.

5 總結(jié)

利用AT89C51單片機來設計井字棋游戲,結(jié)合Proteus仿真軟件,實現(xiàn)了井字棋游戲的預期功能,對于用單片機開發(fā)和設計游戲有一定的借鑒作用,譬如還可以設計人機對弈的井字棋游戲以及五子棋游戲等.

猜你喜歡
數(shù)碼管落子棋盤
物理項目教學設計,用單片機控制四位數(shù)碼管顯示
藍橋杯樹莓派模擬題解析三:“電子測距儀”
Arduino編程
琴(外一首)
MC9S08FL16單片機數(shù)碼管靜態(tài)顯示分析
銀行理財子公司“落子”布局
落子山東,意在全局
落子滄州
棋盤人生
棋盤里的天文數(shù)字
屯留县| 合山市| 邢台市| 集安市| 城步| 南川市| 元谋县| 安福县| 阜康市| 荥阳市| 洛隆县| 图们市| 府谷县| 邯郸县| 横峰县| 彭山县| 策勒县| 陇南市| 连南| 甘孜县| 西畴县| 布拖县| 凭祥市| 宾阳县| 龙门县| 万年县| 新巴尔虎左旗| 漳浦县| 昌黎县| 炎陵县| 西贡区| 海南省| 屯昌县| 准格尔旗| 马尔康县| 长丰县| 黑水县| 会宁县| 林甸县| 舟山市| 黄山市|