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

正文內(nèi)容

五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(參考版)

2025-03-08 10:47本頁面
  

【正文】 //調(diào)用悔棋函數(shù) 。 // 更新棋盤 } } if(quit) return。,color)。 // 記錄光標(biāo)位置 AI(chessboard,amp。 // 該人走棋 else{ // 該電腦走棋 lastx=。 regret=false。 if(color==1) printf(黑棋下 )。 // 系統(tǒng)光標(biāo)移到屏幕左上角 textcolor(TEXTS)。i=225。 //空出一行來顯示棋盤動(dòng)態(tài)信息 printchessboard(chessboard)。 // 清空退出標(biāo)志 system(cls)。 陜西理工學(xué)院畢業(yè)設(shè)計(jì) 第 23 頁 共 26 頁 =7。j++) chessboard[i][j].step=0。i++) // 清空棋盤 for(j=0。 // 返回上級(jí)菜單 } } for(i=0。 // 電腦后手則優(yōu)先防御 break。 attacktrend=1。 // 電腦先手則優(yōu)先進(jìn)攻 break。 attacktrend=1。 // 棋盤 if(!human) { // 對(duì)手是電腦 showsubmenu()。 // 光標(biāo)的上一個(gè)位置 int puter。設(shè)置窗體大小 int color=1。 //對(duì)手是否是人 void Vs(bool human) {//對(duì)局主要函數(shù) int i,j。 //退出游戲 return。 break。 break。) { showmenu()。//設(shè)置標(biāo)題 srand((unsigned)time(NULL))。文獻(xiàn) []可知。 結(jié)果如圖 。 } gotoxy(0,0)。 getch()。 //光標(biāo)回顯 if(color==1) MessageBox(GetHWnd(), 白棋贏! , 注意! , MB_OK)。 //光標(biāo)回顯 printf( )。 !regret) {// 產(chǎn)生輸贏 textcolor(TEXTS)。 具體實(shí)現(xiàn)程序如下(僅部分主要代碼): if(win(chessboard,(color+1) % 2) amp。結(jié)果如圖 圖 。 color=(color+1) % 2。 if(i2) i=2。 具體實(shí)現(xiàn)程序如下(僅部分主要代碼): if(quit) return。 *y=maxj。 maxj=j。 // 選擇后面的點(diǎn),則幾率權(quán)值回復(fù) max=value[i][j]。} else if(max= =value[i][j]){ // 如果出現(xiàn)相同價(jià)值的最大點(diǎn) if(rand()%(probability+1)probability) // 隨機(jī)決定選取哪一個(gè) probability++。 maxj=j。/*棋盤上某一點(diǎn)的最終價(jià)值為棋盤上該點(diǎn)的防守總價(jià)值乘以防守指數(shù)加上該點(diǎn)的的進(jìn)攻總價(jià)值乘以進(jìn)攻指數(shù) */ if(maxvalue[i][j]) { max=value[i][j]。j15。i15。 defenttrend=2。 defenttrend=1。 if(maxjvaluedefent[i][j]) maxj=valuedefent[i][j]。k8。j++) { if(chessboard[i][j].step0) continue。i++) // 計(jì)算棋盤上各點(diǎn)的進(jìn)攻價(jià)值 陜西理工學(xué)院畢業(yè)設(shè)計(jì) 第 20 頁 共 26 頁 for(j=0。 // 記錄防守價(jià)值的最大值 } for(i=0。k++) valuedefent[i][j]+=value_qx1(chessboard,i,j,k,color)。 for(k=0。j15。i15。 // 棋盤上各點(diǎn)的進(jìn)攻價(jià)值 int valuedefent[15][15]={{0}}。 // 幾率參數(shù) int value[15][15]={0}。 // 價(jià)值最大值所對(duì)應(yīng)的坐標(biāo) int i,j,k。 } void AI(NODE chessboard[][15], int *x, int *y, int color) { // AI的主要函數(shù), 將思考后的結(jié)果返回給 *x和 *y int max=0。i++) if(macth2(chessboard,x,y,dirt,i,color)) return qx2[i].value。 for(i=0。 } return true。) continue。 qx2[kind].qx[k]==39。 amp。 if(c==39。 else c=39。 else if(chessboard[x][y].step0) c=39。 chessboard[x][y].color==color) c=39。 if(chessboard[x][y].step0 amp。 y+=direction[dirt][1]。(unsigned)kstrlen(qx2[kind].qx)。 y=direction[dirt][1]。k=pqx2[kind].qx。)。 p=strchr(qx2[kind].qx,39。 char c。 return 0。iqx1_num。 } int value_qx1(NODE chessboard[][15], int x, int y, int dirt, int color) { // 計(jì)算顏色為 color的點(diǎn) 8個(gè)方向上的防守權(quán)值之和 int i。 if(c!=qx1[kind].qx[k]) return(false)。x39。amp。039。039。139。239。amp。 if(!inside(x,y)) return(false)。k++) { x+=direction[dirt][0]。 } for(k=0。k++) { x=direction[dirt][0]。 for(k=0。x39。 char *p。 // 攻擊防御平衡權(quán)值 bool macth1(NODE chessboard[][15], int x, int y, int dirt, int kind, int color) {/* 匹配在顏色為 color的點(diǎn) (x,y),在 dirt方向上的第 kind種防守棋形,成功返回 true,否則返回 false */ int k。 本模塊采用的是評(píng)估權(quán)值的方法,當(dāng)電腦落子時(shí),首先調(diào)用防守棋型函數(shù),通過函數(shù)來計(jì)算棋盤上的所有位置的防守權(quán)值的大小,若防守值的最大值比較大時(shí),就在權(quán)值最大的位置落子,然后玩家落子,如此循環(huán),實(shí)現(xiàn)棋局的進(jìn)行,若是防守值的最大值比較小時(shí),就調(diào)用進(jìn)攻棋型函數(shù),然后,然后比較最大進(jìn)攻值與最大防守值的大小,在 值比較大的位置落子,即為最優(yōu)落子位置,若是進(jìn)攻值與防守值大小相等,則優(yōu)先防守,即在防守值最大的位置落子 [8]。 本模塊采用的是評(píng)估權(quán)值的方法,當(dāng)電腦落子時(shí),首先調(diào)用進(jìn)攻棋型函數(shù),通過函數(shù)來計(jì)算當(dāng)黑子(電腦落子)落下后,該子所在位置的八個(gè)方向的權(quán)值大大小,若進(jìn)攻值的最大值比較大時(shí),就在權(quán)值最大的位置落子,然后玩家落子,如此循環(huán),實(shí)現(xiàn)棋局的進(jìn)行,若是進(jìn)攻值的最大值比較小時(shí),就調(diào)用防守棋型函數(shù),然后計(jì)算棋盤上的所有位置的防守權(quán)值的大小,然后比較最大進(jìn)攻值與最大防守值得大小,在值比較大的位置落子,即為最優(yōu)落子位置,若是進(jìn)攻值與防守值大小相等,則優(yōu)先進(jìn)攻,即在進(jìn)攻值最大的位置落子。 textcolor(TEXTS)。 printf( \n)。 printf(\n\n \n\n)。//設(shè)置窗口大小 system(color 2b)。 // 選擇誰是先手 void showsubmenu() {//打印子菜單 system(cls)。本游戲系統(tǒng)中此模塊主要分為了以下幾個(gè)功能模塊: 1. 設(shè)置先手功能 2. 電腦智能落子功能 3. 可以悔棋、退出 4. 顯示輸贏 先手設(shè)置界面 在打開本游戲系統(tǒng)之后,選擇人機(jī)對(duì)戰(zhàn)之后利用 system(mode con cols=64 lines=24)窗體函數(shù)設(shè)置窗口大小,然后用 system(color 2b)函數(shù)設(shè)置窗體背景顏色為綠色,然后在窗體中打印出窗口內(nèi)容,即設(shè)置先手, , ,當(dāng)從鍵盤上輸入 1,即本局游戲選擇玩家先手,開始游戲電腦優(yōu)先防御;當(dāng)從鍵盤上輸入 2,即本局游戲選擇電腦先手,開始游戲電腦優(yōu)先進(jìn)攻;當(dāng)從鍵盤上輸入 3,即返回 上一層目錄菜單,不進(jìn)行游戲 [9]。 // 如果按了退出熱鍵則返回 該模塊功能的實(shí)現(xiàn)是在實(shí)現(xiàn)畫出棋盤模塊、畫出棋子模塊、設(shè)置棋局規(guī)則模塊、悔棋功能模塊、判斷輸贏模塊而的基礎(chǔ)之上而實(shí)現(xiàn)的。 圖 判斷輸贏白棋贏 陜西理工學(xué)院畢業(yè)設(shè)計(jì) 第 16 頁 共 26 頁 圖 判斷輸贏黑棋贏 該模塊的 功能為,在游戲進(jìn)行的任意時(shí)候,只要按下退出熱鍵( F12),就可以退出游戲,直接退到游戲的初始界面,但是當(dāng)游戲退出后,再次開始游戲時(shí),為新的一局游戲,不能接著上次的繼續(xù)玩,即沒有設(shè)置保存功能 [8]。 gotoxy(0,0)。 } 產(chǎn)生平局時(shí): gotoxy(0,0)。 if(line(chessboard,6,x,y,color)+line(chessboard,7,x,y,color)3) return true。 if(line(chessboard,2,x,y,color)+line(chessboard,3,x,y,color)3) return true。 } return i。 y=y+direction[dirt][1]。 chessboard[x+direction[dirt][0]][y+direction[dirt][1]].color==color。chessboard[x+direction[dirt][0]][y+direction[dirt][1]].step0 amp。 } int line(NODE chessboard[][15], int dirt, int x, int y, int color) {// 判斷顏色為 color的點(diǎn) (x,y),在 dirt方向上有多少相連的同色棋子 int i。 具體實(shí)現(xiàn)程序如下(僅部分主要代碼): bool inside(int x, int y) {// 如果不在棋盤內(nèi)返回 false,否則返回 true if(x0 || x14 || y0 || y14) return false。 // 重繪光標(biāo) 原本所在處 } } 圖 悔棋 A 陜西理工學(xué)院畢業(yè)設(shè)計(jì) 第 14 頁 共 26 頁 圖 悔棋 B 本模塊的功能是每當(dāng)棋子落下后判斷是否已經(jīng)產(chǎn)生輸贏,若已產(chǎn)生則重新開始游戲,若沒有產(chǎn)生則判斷是否已經(jīng)落子 225步,如果已經(jīng) 225 步,則判定為雙方平局,并重新開始游戲,如果沒有達(dá)到 225步,則繼續(xù)游戲。 // 將光標(biāo)移回棋盤中央 renew(chessboard,i,j)。 =7。} // 重繪棋盤 tempx=。j++) if(chessboard[i][j].step==step1) { // 找到上一步 chessboard[i][j].step=0。i++) //搜索上一步所下的位置 for(j=0。 // 重繪光標(biāo)原本所在處 } } } else if(step==2) { //如果下了一步 for(i=0。 renew(chessboard,i,j)。 =i。 // 清空棋子標(biāo)志 tempx=。 // 清空棋子標(biāo)志 renew
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1