freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

五子棋游戲的設(shè)計與實現(xiàn)畢業(yè)論文(編輯修改稿)

2025-04-09 10:47 本頁面
 

【文章內(nèi)容簡介】 本模塊功能的實現(xiàn)依靠的是單點估值函數(shù)的思想,即每次落子之后,遍歷以該點為坐標(biāo)原點以5 為半徑的棋盤的 交點,分析原點的四個方向(橫向、豎向、兩條對角線),判斷是否有連五型棋型,若有則產(chǎn)生輸贏,若沒有則遍歷整個棋盤,查看是否棋盤已經(jīng)下滿,若已下滿則判定為和棋,否則繼續(xù)游戲。 本模塊是整個游戲系統(tǒng)的平臺性模塊,之后所有的功能都將依附該模塊來體現(xiàn),主要需實現(xiàn)棋盤的繪制與游戲說明。本游戲系統(tǒng)選擇的是 15*15 的棋盤,利用制表符字符串打印輸出棋盤,并且特別標(biāo)出天元位置,與四方星位。游戲的說明主要有棋局動態(tài)信息顯示,如何移動光標(biāo),如何實現(xiàn)落子,如何悔棋以及退出。 利用 switch()語 句,當(dāng)光標(biāo)坐標(biāo)( x, y)中 x=0, y=0則畫出棋盤的左上角“ ┏”, y=14則畫出棋盤的右上角 “ ┓”, 0y14時則出棋盤的上邊線“┯ ” ; x=3或 x=11時, y=0則畫出棋盤的左邊線 “ ┠”, y=3或 y=11則畫出棋盤上的四方星位 “ ╋ ” , y=14則畫出棋盤的右邊線 “ ┨”, 0y14時則出棋盤的交叉點 “ ┼”; x=7, y=7則畫出棋盤的天元 “ ╋”, 0y14時則出棋盤的交叉點 “ ┼”;x=14, y=0則畫出棋盤的左下角 “ ┗”, y=14則畫出棋盤的右下角 “ ┛”, 0y14時則出棋盤的下邊線 “ ┷”;當(dāng) x為 0到 14的其他的值時, y=0則畫出棋盤的左邊線 “ ┠”, y=14則畫出棋盤的右邊線 “ ┨”, y為 0到 14的其他的值時畫出棋盤的交叉點 “ ┼” [7]。 棋盤上的交點稱為位點(包括交叉點,天元,四方星位,邊界交點)。 具體實現(xiàn)如以下程序(僅部分主要代碼): void printnode(NODE chessboard[][15], int x, int y) // 打印棋盤上的一個點 { textcolor(CHESSBOARD)。 if(chessboard[x][y].step==0) { if (x== amp。amp。 y==) textcolor(CURSOR)。 // 如果光標(biāo)在這個點,改成光標(biāo)顏色 switch(x) { case 0: if(y==0) printf(┏ )。 // 左上角 else if(y==14) printf(┓ )。 // 右上角 else printf(┯ )。 // 上邊線 break。 case 3: if(y==0) printf(┠ )。 // 左邊線 else if(y==3 || y==11) printf(+ )。 // 星位 else if(y==14) printf(┨ )。 // 右邊線 else printf(┼ )。 // 交叉點 break。 case 7: if(y==0) printf(┠ )。 // 左邊線 else if(y==7) printf(+ )。 // 星位 else if(y==14) printf(┨ )。 // 右邊線 陜西理工學(xué)院畢業(yè)設(shè)計 第 7 頁 共 26 頁 else printf(┼ )。 // 交叉點 break。 case 11: if(y==0) printf(┠ )。 // 左邊線 else if(y==3 || y==11) printf(+ )。 // 星位 else if(y==14) printf(┨ )。 // 右邊線 else printf(┼ )。 // 交叉點 break。 case 14: if(y==0) printf(┗ )。 // 左下角 else if(y==14) printf(┛ )。 // 右下角 else printf(┷ )。 // 下邊線 break。 default: if(y==0) printf(┠ )。 // 左邊線 else if(y==14) printf(┨ )。 // 右邊線 else printf(┼ )。 // 交叉點 } } } void printchessboard(NODE chessboard[][15]) {// 輸出整個棋盤 int i,j。 char letter[]={ABCDEFGHIJKLMNO \n}。 for(i=0。i15。i++) { // 行 textcolor(TEXTS)。 // 改為文本顏色 printf(%2d,15i)。 // 打印行坐標(biāo) for(j=0。j15。j++) // 列 printnode(chessboard,i,j)。 // 打印棋盤的每一塊 textcolor(TEXTS)。 printf(\n)。 } textcolor(TEXTS)。 //改為文本顏色 printf( %s,letter)。 //打印列坐標(biāo) printf( 移動 :方向鍵 下棋 :ENTER\n 悔棋 :U 退出 :F12\n)。 } 陜西理工學(xué)院畢業(yè)設(shè)計 第 8 頁 共 26 頁 圖 人機(jī)對戰(zhàn)玩家先手初始界 面 圖 人機(jī)對戰(zhàn)電腦先手初始界面 雙人對戰(zhàn)模式游戲的初始界面與人機(jī)對戰(zhàn)電腦先手初始界面一樣。 本模塊是在畫出棋盤的基礎(chǔ)下實現(xiàn)的,要求依次輪流畫出黑白兩種顏色的棋子,且位置必須在棋盤的位點之上,并且要求必須先畫黑棋,位置為棋盤的天元位。 根據(jù)棋盤上光標(biāo)所在位置來下棋,如果當(dāng)前光標(biāo)所在位置上有棋子,則不能在此處落子,則需陜西理工學(xué)院畢業(yè)設(shè)計 第 9 頁 共 26 頁 按下鍵盤上的方向鍵來移動光標(biāo)到?jīng)]有棋子,且有利于局勢的位置按下 Enter(回車鍵)落子 [7]。 具體實現(xiàn)如以下程序(僅部分主要代碼): else if(chessboard[x][y].color==0) { // 如果是白棋 if (x== amp。amp。 y==) textcolor(SELECTEDWHITE)。 // 被選中的白棋 else textcolor(WHITECHESS)。 // 未被選中的黑棋 printf(● )。 } // 打印棋子 else { if (x== amp。amp。 y==) textcolor(SELECTEDBLACK)。 // 被選中的黑棋 else textcolor(BLACKCHESS)。 // 未被選中的黑棋 printf(● )。 } // 打印棋子 光標(biāo)的移動 (實現(xiàn)在棋盤上任意位置落子 ): bool getmove(NODE chessboard[][15]) {// 獲取光標(biāo)移動,并響應(yīng) // 當(dāng)按下悔棋、下子、退出熱鍵時,返回 true char c。 for(。) { c=getch()。 if(c==32) switch(getch()) { case 72: // 上 。 if(0) =0。 renew(chessboard,+1,)。 renew(chessboard,)。 break。 case 80: // 下 ++。 if(14) =14。 renew(chessboard,)。 renew(chessboard,)。 break。 case 75: // 左 。 if(0) =0。 renew(chessboard,+1)。 renew(chessboard,)。 break。 case 77: // 右 ++。 if(14) =14。 renew(chessboard,)。 renew(chessboard,)。 break。 case 134: // 退出 quit=true。 陜西理工學(xué)院畢業(yè)設(shè)計 第 10 頁 共 26 頁 return true。 } else if(c==13 amp。amp。 chessboard[][].step==0) return true。 // 下子 else if(c==39。U39。 || c==39。u39。) { // 悔棋 regret=true。 return true。 } } } 本模塊實現(xiàn)的是游戲的規(guī)則,包括落子規(guī)則,悔棋規(guī)則,輸贏規(guī)則。 落子 規(guī)則 本系統(tǒng)的實現(xiàn)整體上采用的是無禁手五子棋游戲規(guī)則。落子規(guī)則包括落子位置與落子順序。落子位置其實是對第一顆棋子的限定,即第一顆棋子必須落在棋盤的天元(也就是棋盤的最中間),而后只規(guī)定了必須落在棋盤的位點之上,不能落在空白處,而落子順序其實是從第一次下子開始的,且第一顆棋子必須是黑子,之后黑白棋就開始輪流落子,直到產(chǎn)生輸贏為止。 本系統(tǒng)中涉及到的五子棋的基本棋型有防御棋型和進(jìn)攻棋型兩類,具體有:連五型,活四型,沖四型,活三型,死三活二型五種,具體如下: 圖 連五型(黑棋) 圖 活四型(黑 棋) 陜西理工學(xué)院畢業(yè)設(shè)計 第 11 頁 共 26 頁 圖 沖四型(黑棋) 圖 活三型(黑棋) 圖 死三活二型(黑棋) 悔棋規(guī)則 悔棋規(guī)則應(yīng)用于游戲的整個過程,在游戲產(chǎn)生輸贏之前的任意時候,只要玩家按下悔棋熱鍵,就可進(jìn)行悔棋,且本系統(tǒng)中不限制悔棋步數(shù)。具體實現(xiàn)見 。 輸贏規(guī)則 本系統(tǒng)的輸贏規(guī)則是基于無禁手五子棋的輸贏規(guī)則,即對黑子沒有任何限制,只要形成連五型棋子就判定為勝利,當(dāng)棋盤上無法落子時仍然沒有產(chǎn)生輸贏,則判定為平局。具體實 現(xiàn)見 判斷輸贏。 陜西理工學(xué)院畢業(yè)設(shè)計 第 12 頁 共 26 頁 本模塊實現(xiàn)的是兩個人類玩家在一臺電腦上進(jìn)行游戲,本部分不涉及電腦的 AI,只需要電腦提供一個平臺(顯示器的功能),本部分的實現(xiàn)較為簡單,在以上兩個模塊即畫出棋盤模塊和畫出棋子模塊功能實現(xiàn)的基礎(chǔ)上,兩個玩家就可以自由的進(jìn)行游戲,雙方通過依次控制電腦鍵盤上的方向鍵移動光標(biāo)到自己認(rèn)為合理的地方落子。每當(dāng)棋盤上有棋子落下以后,電腦需立即判斷是否已經(jīng)產(chǎn)生輸贏,如果沒有產(chǎn)生輸贏則在棋盤動態(tài)信息顯示處顯示該黑(或白)方下子,如果已經(jīng)產(chǎn)生輸贏則在盤動態(tài)信息顯示處顯示白(或黑)方勝利! 此時按任意鍵即可重新開始游戲。 本模塊的創(chuàng)建是根據(jù)現(xiàn)實中玩五子棋游戲時的實際存在的情況而編寫的,當(dāng)玩家下棋后,發(fā)現(xiàn)不是最佳的位置,或者是棋子沒有落在自己想要落的位置,發(fā)生偏離,此時就需要用到本模塊的功能:悔棋功能。 本游戲系統(tǒng)中,悔棋的功能實現(xiàn)主要是通過數(shù)組 chessboard[][15]來完成的,當(dāng)系統(tǒng)接收到悔棋的消息時調(diào)用悔棋函數(shù) void beback(NODE chessboard[][15], int step) ,在雙人模式和人機(jī)模式中悔棋的方式是一樣的,當(dāng)棋盤上的棋子少于 3 個時, 按下悔棋鍵時,由于本系統(tǒng)的默認(rèn)設(shè)置(即第一顆棋子為黑棋,且位置必須在天元位置),所以系統(tǒng)判定此時想悔棋的是白棋,故而去掉一顆白棋,棋盤為開始游戲的初始界面,即棋盤上只有天元位置有一顆黑棋,此時光標(biāo)也回到剛剛白棋的位置。當(dāng)棋子多余 3 個時,按下悔棋鍵后,由于系統(tǒng)無法判定是白棋想悔棋,還是黑棋想悔棋,故而一次撤銷兩步,即當(dāng)該黑棋落子時,按下了悔棋鍵,會撤銷兩步,即撤銷了白棋剛剛走的一步和黑棋剛剛走的那一步,光標(biāo)也回到剛剛黑棋的位置。此時如果是黑棋想悔棋則黑棋重新落子在其他不同于剛剛撤銷的那個位置,白棋則見招拆招, 而如果是白棋想悔棋則黑棋把棋子下在原來的位置,此時白棋就可以重新落子在其他的位置,以此來實現(xiàn)悔棋 [8]。 本游戲系統(tǒng)中沒有限制悔棋的步數(shù),可以無限制悔棋,直到第一步。 具體實現(xiàn)程序如下(僅部分主要代碼): void beback(NODE chessboard[][15], int step) {//悔棋 int i,j,tempx,tempy。 if(step==1) retur
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1