《第15章 五子棋游戲 (2)》由會員分享,可在線閱讀,更多相關(guān)《第15章 五子棋游戲 (2)(6頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、,Click to edit Master title style,Click to edit Master text styles,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,*,第,15,章 五子棋游戲,五子棋是一類益智游戲,雙方輪流下子,若有一方在橫豎斜其中一個方向上有,5,個連續(xù)的棋子,則該方獲勝。常見的五子棋游戲主要為人機(jī)對弈和人人對弈,人機(jī)對弈需要人工智能方面的知識,人人對弈需要利用網(wǎng)絡(luò)傳遞信息,人工智能和網(wǎng)絡(luò)編程都較為復(fù)雜,需要專門系統(tǒng)的學(xué)習(xí),為減少開發(fā)難度,方便讀者了解基本原理,本實(shí)例采用單機(jī)版的人人對弈模式,實(shí)現(xiàn)一個簡單的五子棋
2、游戲,讀者可在該基礎(chǔ)上擴(kuò)展功能,實(shí)現(xiàn)人機(jī)對弈,或網(wǎng)絡(luò)版的人人對弈。,15.1,界面設(shè)計(jì),【,范例,15-1】,新建一個對話框工程名為,MyChess,,實(shí)現(xiàn)一個簡單的五子棋游戲。,15.2,算法設(shè)計(jì),本實(shí)例在對話框上繪制棋盤,分為,30,行,30,列,使用一個二維數(shù)組記錄各個位置的值,若尚未下子值為,0,,若,A,已下子值為,1,,若,B,已下子值為,2,。每下一個棋子后,應(yīng)判斷是否有一方已經(jīng)獲勝,若獲勝則彈出提示信息,并重開一局。,15.2,算法設(shè)計(jì),每種游戲都有其規(guī)則,五子棋的規(guī)則就是若有一方在橫向、豎向、,45,度傾斜方向有,5,個連續(xù)的棋子,則該方獲勝。獲取方是在下了最后一個棋子后勝出
3、的,因此,5,個連續(xù)的棋子中肯定有,1,個是最后一個棋子,只需判斷最后一個棋子的,8,個方向上是否有,5,個連續(xù)的棋子,若其中一個方向上有,則勝出,棋子要判斷的方向如圖所示。,15.2,算法設(shè)計(jì),最中心的棋子,A,為最后一個棋子,可能位于,5,個相連棋子的兩端,也可能位于中間,需要遍歷圖中標(biāo)記為,A,的所有棋子,如水平方向上的,5,個,A,,從最左邊的第一個,A,,到中間的第五個,A,,依次查看其右邊的,4,個棋子是否相同,若相同,則,A,獲勝,否則繼續(xù)查看左上方的,5,個,A,、垂直方向的,5,個,A,、右上方的,5,個,A,。,15.3,功能實(shí)現(xiàn),五子棋程序的流程如下所示:,調(diào)整窗口的邊界大小。,加載光標(biāo)資源,創(chuàng)建畫刷,初始化棋子數(shù)組。,在客戶區(qū)利用繪線函數(shù),繪制棋盤。,輸入對弈雙方的名稱。,鼠標(biāo)單擊棋盤,在指定位置放入棋子,并設(shè)置光標(biāo)樣式。,判斷當(dāng)前下棋者是否已獲勝,若獲勝彈出提示信息,并重開一局。,