最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

基于Python實(shí)現(xiàn)的五子棋游戲設(shè)計(jì)

2023-06-15 16:44 作者:下班被游戲打-  | 我要投稿

一、設(shè)計(jì)目的:

1.1 課程設(shè)計(jì)教學(xué)目的

本課程設(shè)計(jì)是本專業(yè)的一門重要實(shí)踐性教學(xué)環(huán)節(jié)。在學(xué)習(xí)了專業(yè)基礎(chǔ)課和《Python程序設(shè)計(jì)》課程的基礎(chǔ)上,本課程設(shè)計(jì)旨在加深對(duì)Python程序設(shè)計(jì)的認(rèn)識(shí),對(duì)Python語言及其語言生態(tài)有一個(gè)進(jìn)一步的掌握和應(yīng)用,學(xué)會(huì)運(yùn)用Python標(biāo)準(zhǔn)庫及外接相關(guān)庫來解決實(shí)際問題的基本能力,培養(yǎng)和提高學(xué)生分析問題、解決問題的能力,尤其是提高學(xué)生使用Python為開發(fā)語言來進(jìn)行問題描述、交流與思考的能力,為畢業(yè)設(shè)計(jì)和以后的工程實(shí)踐打下良好的基礎(chǔ)。

1.2 本課程設(shè)計(jì)具體目的

經(jīng)過小組討論分析,我們最終選擇了“五子棋”作為本次課設(shè)主題。

五子棋起源于中國上古時(shí)期的傳統(tǒng)黑白棋種之一。主要流行于華人和漢字文化圈的國家以及歐美一些地區(qū),是世界上最古老的棋。古代五子棋棋盤與圍棋棋盤是通用的,直到1931年,才出現(xiàn)所謂五子棋專用棋盤,為十五路(15×15)棋盤?,F(xiàn)在人們壓力日益增大,需要?jiǎng)谝萁Y(jié)合才能獲得更高的工作效率,工作之余的娛樂對(duì)于每一個(gè)人來說必不可少。五子棋這種娛樂方式容易上手,老少皆宜,而且趣味橫生,引人入勝;不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。

二、課程設(shè)計(jì)任務(wù)和要求

2.1 課程設(shè)計(jì)教學(xué)任務(wù)和要求

本次課程設(shè)計(jì)的主要任務(wù)是以Python為開發(fā)語言完成一個(gè)100~300行左右規(guī)模的程序項(xiàng)目開發(fā)。

課程設(shè)計(jì)的基本要求是:在課程設(shè)計(jì)的各個(gè)階段嚴(yán)格、規(guī)范地完成相關(guān)的文檔,例如在初期按時(shí)完成設(shè)計(jì)目的、設(shè)計(jì)要求、總體設(shè)計(jì),在后期完成詳細(xì)設(shè)計(jì)、調(diào)試與測(cè)試、設(shè)計(jì)總結(jié)等。要求能完成所選題目的主要功能,程序運(yùn)行健壯、正確,代碼要有詳細(xì)注釋,可讀性好;所寫文檔結(jié)構(gòu)合理、內(nèi)容完整、敘述清晰。更高要求是:有創(chuàng)意、系統(tǒng)界面美觀。


由于課程設(shè)計(jì)項(xiàng)目具有一定的綜合性,鼓勵(lì)具有不同特長和不同能力的學(xué)生互相組隊(duì)。項(xiàng)目小組自己推薦一名組長,實(shí)行“組長負(fù)責(zé)制”。組長組織組員進(jìn)行項(xiàng)目選題、任務(wù)分配、方案確定、方案設(shè)計(jì)、系統(tǒng)調(diào)試測(cè)試,組員分工協(xié)作。小組成員開展項(xiàng)目討論,互相支持,形成協(xié)作意識(shí)。

2.2 本課程設(shè)計(jì)具體任務(wù)和要求

有圖形界面,能夠用鼠標(biāo)進(jìn)行操作。

能夠進(jìn)行五子棋游戲的基本操作,即玩家輪流落子。

能夠?qū)τ螒蚪Y(jié)果進(jìn)行正確的判定。

能夠?qū)崿F(xiàn)悔棋及認(rèn)輸?shù)雀郊庸δ堋?/p>

各項(xiàng)功能的展示與應(yīng)用直觀明了。

輸出必要的提示信息讓玩家更好地進(jìn)行游戲。

三、總體設(shè)計(jì):

基于Python的標(biāo)準(zhǔn)GUI庫tkinter快速創(chuàng)建GUI應(yīng)用程序。

運(yùn)行程序提示可開始游戲。人人對(duì)戰(zhàn),二人輪流落子。界面顯示提示信息當(dāng)點(diǎn)輪到哪一方落子。先有五子“—”或“|”或“/”或“\”連成一線的玩家獲勝。若棋盤中棋子已滿,玩家均為完成五子相連則判定為平局。當(dāng)黑方獲勝或白方獲勝或平局時(shí)及時(shí)作出判定,并彈出提示框,告知玩家當(dāng)前對(duì)局結(jié)束。

3.1 小組成員及任務(wù)分配情況

組員:吳佳麗余葉鈺劉璐瑤

任務(wù)分配:

:負(fù)責(zé)玩家操作模塊設(shè)計(jì),包括落子、悔棋及認(rèn)輸。

:負(fù)責(zé)游戲的可視化設(shè)計(jì),包括游戲界面設(shè)計(jì)及棋盤設(shè)計(jì)。

棋盤設(shè)計(jì)部分包括運(yùn)行程序開始游戲及重新開局時(shí)初始化棋盤。

:負(fù)責(zé)判定游戲結(jié)果即玩家勝負(fù)或平局判定

3.2 程序功能圖

3.3 整體流程圖

四、設(shè)計(jì)實(shí)現(xiàn)

4.1 最終實(shí)驗(yàn)結(jié)果

游戲主界面

啟動(dòng)程序運(yùn)行游戲,彈出提示框,提示玩家游戲開始,黑方先進(jìn)行落子。玩家可點(diǎn)擊棋盤無棋子處進(jìn)行落子。或點(diǎn)擊“開局”、“悔棋”、“認(rèn)輸”按鈕可重新開局或悔棋或認(rèn)輸。當(dāng)點(diǎn)擊“開局/重新開局”按鈕時(shí),清空棋盤中的棋子,展示處與啟動(dòng)程序相同的游戲界面。界面中間“黑方”與“落子”二處文字為游戲進(jìn)行中的提示信息,表示當(dāng)前輪到黑方進(jìn)行棋子放置。輪到白方落子時(shí)會(huì)“黑方”將自動(dòng)更改為“白方”,“白方”二字以白色顯示。如圖4-1所示。

玩家獲勝后界面

如圖4-2所示,若有一方玩家存在“—”或“|”或“/”或“\”五子相連,該玩家取得該局游戲勝利。以圖中所示情況——黑方“/”五子相連為例,說明玩家取勝結(jié)果。通過黃色線條將黑方連成一線的五顆棋子相連接,此時(shí)界面中間提示信息改為“黑方獲勝”,“獲勝”二字以紅色顯示。并彈出消息提示框,提示玩家游戲結(jié)束黑方完成五子相連,取得勝利。若此時(shí)點(diǎn)擊悔棋按鈕,將提示玩家此時(shí)不能悔棋。如圖4-3所示;點(diǎn)擊認(rèn)輸按鈕,將提示玩家點(diǎn)擊開局開始游戲,如圖4-4所示。

平局情況

當(dāng)玩家雙方都沒有完成五子連線,且棋盤中所有棋格都有棋子放置即無處置放棋子時(shí),判定為平局。


為更方便展示,將棋盤改為5*5大小。如圖4-5所示,中間提示文字變更為綠色字樣“平局??!”,同時(shí)彈出消息提示框,提示玩家當(dāng)前對(duì)局結(jié)束,雙方達(dá)成平局。此時(shí)游戲結(jié)束,玩家不可再悔棋或認(rèn)輸,若玩家點(diǎn)擊悔棋或認(rèn)輸按鈕,效果與有一方玩家獲勝時(shí)相同。即游戲界面不做改變,彈出消息提示框,該消息提示框與圖4-3、圖4-4中消息提示框相同,不再重復(fù)展示。

玩家認(rèn)輸

在一局游戲過程中,若玩家首次點(diǎn)擊認(rèn)輸按鈕。棋盤不做改變,游戲界面中間文字“落子”變?yōu)椤罢J(rèn)輸”如圖4-6所示。此時(shí)游戲結(jié)束,玩家不可再悔棋或認(rèn)輸,若玩家點(diǎn)擊悔棋或認(rèn)輸按鈕,效果與有一方玩家獲勝時(shí)相同。即游戲界面不做改變,彈出消息提示框,該消息提示框與圖4-3、圖4-4中消息提示框相同,不再重復(fù)展示。


玩家悔棋

游戲過程中,若一個(gè)回合內(nèi)該玩家首次進(jìn)行悔棋,取回該玩家剛放置到棋盤上的棋子,并將中間的提示信息“某方落子”改回到該玩家。以黑方悔棋為例,悔棋前及悔棋后游戲部分界面分別如圖4-7、圖4-8所示。若該玩家在一個(gè)回合內(nèi)已經(jīng)進(jìn)行過悔棋操作,再次點(diǎn)擊悔棋按鈕,則不改變游戲界面及棋盤,但回彈出提示框此時(shí)不能悔棋,該消息提示框及提示信息與獲勝時(shí)點(diǎn)擊悔棋按鈕,即圖4-4中的提示框相同。

4.2 實(shí)驗(yàn)結(jié)果評(píng)價(jià)

窗體界面直觀明了,游戲過程中有適當(dāng)?shù)奶崾拘畔⒂兄谕婕腋玫倪M(jìn)行游戲。同時(shí)窗體的顏色搭配即窗體大小設(shè)置合適。玩家不會(huì)因游戲界面顏色沖擊或棋盤、文字信息等過大過小產(chǎn)生疲勞。程序能對(duì)游戲結(jié)果進(jìn)行正確的判定,悔棋及認(rèn)輸這兩個(gè)附加功能也能夠?qū)崿F(xiàn)。課程設(shè)計(jì)最初定下的功能和要求均能實(shí)現(xiàn)。在此基礎(chǔ)上,玩家完成五子相連時(shí)用黃色線條標(biāo)記,讓玩家能有更好的體驗(yàn)。還加上了一個(gè)回合內(nèi)只允許玩家各悔棋一次,增加挑戰(zhàn),讓游戲更加有趣。

小組超額完成了最初想要實(shí)現(xiàn)的功能和要求,所以我們給自己評(píng)價(jià)為優(yōu)秀!

當(dāng)然這個(gè)小程序也很多不足之處。例如沒有標(biāo)記出最后放置的棋子,玩家悔棋后也沒有標(biāo)記出悔棋前的棋子等等。我們往后也應(yīng)努力學(xué)習(xí),做的更好。

五、詳細(xì)設(shè)計(jì)

5.1 模塊設(shè)計(jì)

所負(fù)責(zé)部分大致可分為三大模塊。首先,判斷游戲勝負(fù)的四種情況,即橫、豎、斜方向五子一線;其次,判斷棋盤是否可以繼續(xù)下棋,即是否平局;最后,判斷玩家輸贏,并彈出提示框。

5.2 程序流程圖

5.3 具體算法分析

引用tkinter庫

Tkinter庫:

Tkinter是Python 的標(biāo)準(zhǔn) GUI 庫。Python 使用 Tkinter 可以快速的創(chuàng)建 GUI 應(yīng)用程序。由于 Tkinter 是內(nèi)置到 python 的安裝包中、只要安裝好 Python 之后就能 import Tkinter 庫、而且 IDLE 也是用 Tkinter 編寫而成、簡(jiǎn)單的圖形界面可以由Tkinter 庫完成。

Messagebox 函數(shù)分析:

函數(shù)定義:<整型> MessageBox(<字符串> Text, <字符串> Title, <整型> nType);

函數(shù)功能: 彈出一個(gè)消息框。

參數(shù):

返回值:<整型>,用戶在消息框上點(diǎn)擊關(guān)閉時(shí)的選擇的按鈕。

說明:

nType對(duì)應(yīng)的對(duì)話框如下表所示:

0: 確定

1: 確定,取消

2: 終止,重試,忽略

3: 是,否,取消

4: 是,否

5: 重試,取消

6: 取消,再試一次,繼續(xù)

返回值對(duì)應(yīng)的值如下:

1: 確定

2: 取消

3: 終止

4: 重試

5: 忽略

6: 是

7: 否

:再試一次

勝負(fù)情況判斷:

自定義panduan()函數(shù)并利用for語句循環(huán),判斷棋子是否為橫、豎、斜五子連線,列表QP[a][b]中必須滿足 0 <= a,b <= 17,i、j必須嚴(yán)格控制。若有五子連線情況發(fā)生,在棋子上增加一條黃色標(biāo)記線貫穿五子,更易看出。

代碼如下:

函數(shù)及語句分析:


for循環(huán):


作用:for循環(huán)語句是python中的一個(gè)循環(huán)控制語句,任何有序的序列對(duì)象內(nèi)的元素都可以遍歷,比如字符串、列表、元組等可迭代對(duì)像。


一般格式:第一行是要先定義一個(gè)賦值目標(biāo)(迭代變量),和要遍歷(迭代)的對(duì)像;首行后面是要執(zhí)行的語句塊。

for 目標(biāo) in 對(duì)像:

print賦值目標(biāo)


循環(huán)過程: i相當(dāng)于目標(biāo),range(num)是遍歷對(duì)像。當(dāng)運(yùn)行for循環(huán)語句時(shí),每一次迭代時(shí),i都會(huì)從遍歷對(duì)像range(num)中接收一個(gè)新值輸出。結(jié)束循環(huán)后,目標(biāo)i會(huì)保留最后一個(gè)值

Canvas組件:

Python Tkinter 畫布(Canvas)組件和 html5 中的畫布一樣,都是用來繪圖的??梢詫D形、文本、小部件或框架放置在畫布上。canvas.create_line()主要實(shí)現(xiàn)的是畫一條直線,后面()中給的參數(shù)就是線段兩點(diǎn)的坐標(biāo),兩點(diǎn)確定一條直線。

Canvas 組件支持以下標(biāo)準(zhǔn)選項(xiàng):

arc 創(chuàng)建一個(gè)扇形

判斷是否平局

分析:定義一個(gè)列表boring記錄每個(gè)棋格的狀態(tài),包括棋格是否有棋子,若有棋子是為黑棋還是白棋。For循環(huán)語句遍歷棋盤(列表QP[a][b]中必須滿足 0 <= a,b <= 17,i、j必須嚴(yán)格控制),當(dāng)棋盤中不存在無棋子的棋格且雙方均未完成五子連線,判定為平局并彈出提示框。


代碼如下:


基于Python實(shí)現(xiàn)的五子棋游戲設(shè)計(jì)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
大同市| 铜鼓县| 仁布县| 土默特左旗| 晋宁县| 信宜市| 云浮市| 平谷区| 绥阳县| 长白| 车致| 山阴县| 舒兰市| 邳州市| 万源市| 湖南省| 乐平市| 句容市| 南木林县| 望城县| 湘潭县| 徐州市| 三穗县| 绍兴县| 寻甸| 长岭县| 扬州市| 横山县| 彰武县| 讷河市| 耒阳市| 蓝田县| 班戈县| 宜兰县| 务川| 东乌珠穆沁旗| 土默特左旗| 防城港市| 友谊县| 漠河县| 太谷县|