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

正文內(nèi)容

基于c的五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)_畢業(yè)設(shè)計(jì)論文(已修改)

2025-07-22 08:32 本頁(yè)面
 

【正文】 鄭 州 科 技 學(xué) 院 課 程 設(shè) 計(jì) 論 文 基于 C的五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn) 1 引言 ................................................................................................. 1 五子棋介紹 ................................................................................... 1 2 軟件架構(gòu) .......................................................................................... 1 3 五子棋設(shè)計(jì)說(shuō)明 ................................................................................ 2 主要成員變量說(shuō)明 ......................................................................... 2 回溯棧元素類 —— StackElement ..................................................... 3 棋子點(diǎn)屬性類 —— qzdianshuxing .................................................... 3 主要成員函數(shù)說(shuō)明 ......................................................................... 3 實(shí)現(xiàn)人機(jī)對(duì)弈的主要函數(shù) .............................................................. 7 實(shí)現(xiàn)菜單功能的函數(shù) ................................................................... 26 程序運(yùn)行界面 .............................................................................. 30 4 心得體會(huì) ...................................................................................... 311 1 1 引言 五子棋介紹 五子棋是起源于中國(guó)古代的傳統(tǒng)黑白棋種之一。現(xiàn)代五子棋日文稱之為“連珠”,英譯為“ Renju”,英文稱之為“ Gobang”或“ FIR”( Five in a Row 的縮寫(xiě)),亦有“連五子”、“五子連”、“串珠”、“五目”、“五目碰”、“五格”等多種稱謂。 五子棋不僅能增強(qiáng)思維能力, 提高智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征“短、平、快”,又有古典哲學(xué)的高深學(xué)問(wèn)“陰陽(yáng)易理”;它既有簡(jiǎn)單易學(xué)的特性,為人民群眾所喜聞樂(lè)見(jiàn),又有深?yuàn)W的技巧和高水平的國(guó)際性比賽;它的棋文化源淵流長(zhǎng),具有東方的神秘和西方的直觀;既有“場(chǎng)”的概念,亦有“點(diǎn)”的連接。它是中西文化的交流點(diǎn),是古今哲理的結(jié)晶。 2 軟件架構(gòu) 軟件的總體架構(gòu)如圖 : 人機(jī)對(duì)戰(zhàn) 人人對(duì)戰(zhàn) 主界面 游戲控制 游戲模式 重新開(kāi)始 退出 聲音控制 悔棋 開(kāi)始 2 圖 軟件架構(gòu) 3 五子棋設(shè)計(jì)說(shuō)明 主要成員變量說(shuō)明 1) 選擇游戲模式標(biāo)志 —— m_renren 用來(lái)表示當(dāng) 前玩家選擇游戲的情況,當(dāng) m_renren 為 false 時(shí),表示人機(jī)對(duì)戰(zhàn);為 true 時(shí),表示人人對(duì)弈。 2) 游戲開(kāi)始標(biāo)志 —— begin 用來(lái)判斷當(dāng)前游戲是否開(kāi)始 3) 音效標(biāo)志 —— sound 在下棋過(guò)程中,判斷是否需要聲音,當(dāng) sound 為 true 時(shí),表示玩家需要聲音,否則的話,玩家不需要聲音。 4) 誰(shuí)先下的標(biāo)志 —— first 這個(gè)標(biāo)志只對(duì)人機(jī)對(duì)弈時(shí)有效。當(dāng) first 為 true 時(shí),表示人先下,否則,電腦先下。 5) 棋盤(pán)數(shù)據(jù) —— points points 為棋盤(pán)情況數(shù)組,是用一個(gè) 15*15 的二維數(shù)組來(lái)表示的。 points[i,j]=2 表示此處無(wú)子, points[i,j]=1 表示此處為黑子 points[i,j]=0 表示此處為白子。 6) 棋子顏色標(biāo)志 —— qzcolor 用來(lái)表示當(dāng)前棋子的顏色, qzcolor=1 時(shí)表示黑棋, qzcolor=0時(shí)表示百棋。 7) 棋子數(shù)據(jù) —— qz 表示棋子所放的位子,是用一個(gè) 15*15 的 PictureBox 類型的二維數(shù)組來(lái)表示。它還可以用來(lái)顯示當(dāng)前棋子的圖片。 8) oldMovePoint 用來(lái)記錄鼠標(biāo)經(jīng)過(guò)后點(diǎn)的位置。 9) backStack 用于悔棋的棧。 10) backTrackStack 3 用于回溯的棧 11) 結(jié)局 —— result 用枚舉類型來(lái)表示結(jié)局。如: public enum result : int//結(jié)局 { lose = 1, equal, win } 回溯棧元素類 —— StackElement 成員變量: 1) qzColor 棋子的顏色 2) bestFivePoints 最好點(diǎn)的位置 3) pointsCount 計(jì)算最好點(diǎn)的數(shù)目 4) pointNumber 點(diǎn)的數(shù)目 5) Theresult 結(jié)局 6) stepNumber 預(yù)測(cè)的步數(shù) 棋子點(diǎn)屬性類 —— qzdianshuxing 成員變量: 1) blackConnect 黑棋子 i個(gè)(包括活棋)的連接條數(shù) 2) blackActive 黑活棋 i 個(gè)的連接條數(shù) 3) whiteConnect 白棋子 i個(gè)(包括活棋)的連接條數(shù) 4) whiteActive 白活棋 i 個(gè)的連接條數(shù) 5) tempActive3 活棋數(shù)為 3的連接條數(shù) 主要成員函數(shù)說(shuō)明 1) 初始化棋盤(pán) —— Initializeqp 初始化操作包括以下幾個(gè)步驟: ? 設(shè)置棋子所在的位置 ? 設(shè)置棋子的大小 ? 初始化棋子的背景顏色 ? 將棋子的 sizemode 設(shè)置為 CenterImage ? 將棋子的可見(jiàn)性設(shè)置為 false ? 將棋子添加到 form 上。 2) 繪制棋盤(pán) —— Form1_Paint 4 其主要是畫(huà)出以 40*40 的大小為每一小格,代碼如下: for (i = 0。 i 15。 i++) { (myPen, 30 + i * 40, 50, 30 + i * 40, 610)。 (myPen, 30, 50 + i * 40, 590, 50 + i * 40)。 } 3) 繪制光標(biāo) —— Form1_MouseMove 當(dāng)鼠標(biāo)在棋盤(pán)上移動(dòng)時(shí),當(dāng)前的顯示畫(huà)紅方框,過(guò)去的顯示和背景一樣顏色的方框。 當(dāng)前的紅方框代碼如下: if (10 amp。amp。 10 amp。amp。 amp。amp。 ) { x = (( 10) / 40) * 40 + 30。 y = (( 10) / 40) * 40 + 50。 (newpen, x 15, y 15, x 15, y 5)。 (newpen, x 15, y 15, x 5, y 15)。 (newpen, x + 15, y 15, x + 5, y 15)。 (newpen, x + 15, y 15, x + 15, y 5)。 (newpen, x 15, y + 15, x 15, y + 5)。 (newpen, x 15, y + 15, x 5, y + 15)。 (newpen, x + 15, y + 15, x + 15, y + 5)。 (newpen, x + 15, y + 15, x + 5, y + 15)。 = x。 = y。 } 過(guò)去的方框代碼如下: 5 if ( != 1) { (oldpen, 15, 15, 15, 5)。 (oldpen, 15, 15, 5, 15)。 (oldpen, + 15, 15, + 5, 15)。 (oldpen, + 15, 15, + 15, 5)。 (oldpen, 15, + 15, 15, + 5)。 (oldpen, 15, + 15, 5, + 15)。 (oldpen, + 15, + 15, + 15, + 5)。 (oldpen, + 15, + 15, + 5, + 15)。 } 4) 下棋子 —— putqz 下棋子有兩種可能性,一 是知道一個(gè)點(diǎn)的橫縱坐標(biāo);二 是知道一個(gè)點(diǎn)。 下面我就說(shuō)一說(shuō)知道 x, y坐標(biāo)的情況,第二種情況只要調(diào)用第一種情況就行了。 假如下的是一個(gè)黑棋子,將 qz的背景圖設(shè)置為 blackstone,并將此處標(biāo)記為已下黑棋,并將此棋子標(biāo)記為最后落子指示。如果悔棋的棧不為空,將其彈出棧,并將 qz的圖像設(shè)置為什么都沒(méi)有,再將其壓入棧。同理,白旗也跟這一樣做。代碼 6 如下: if (qzcolor==1) { qz[x, y].BackgroundImage = global::五子棋 .。 points[x, y] = 1。 qz[x, y].Image = global::五子棋 .。 if ( 0) { temp = (Point)()。 qz[, ].Image = global::五子棋 .。 (temp)。 } } else { qz[x, y].BackgroundImage = global::五子棋 .。 points[x, y] = 0。 qz[x, y].Image = global::五子棋 .。 if ( 0) { temp = (Point)()。 qz[, ].Image = global::五子棋 .。 (temp)。 } } 最后將其可見(jiàn)性設(shè)置為 true。 5) 開(kāi)始函數(shù) —— start 當(dāng)棋局開(kāi)始時(shí),就應(yīng)將棋盤(pán)初始化,使棋盤(pán)上沒(méi)有棋子。如果有悔棋,就要將悔棋棧 清空。代碼如下 : if (!begin) { 7 begin = true。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1