五子棋設計問

2022-10-18 05:33:07 字數 1731 閱讀 5987

目錄1. 五子棋設計需求分析 1

2. 五子棋框架設計 2

3. 五子棋詳細設計 4

4. 設計的缺陷 5

五子棋遊戲的需求暫時想到這些,可能還有有些比較重要也有趣的需求未知,日後想到再新增,其中網路對戰模式和人機對戰模式比較複雜,先完成其他基本功能在進行此項工作。但須充分考慮其介面,方便新增這兩項而不需要大改動。

五子棋單機遊戲主要有人機對戰模式和雙人對戰模式為主,但不管是人或者計算機,他們都是遊戲參與者,沒有區別,唯一的區別是他們在下一步棋時,計算機需要依據對方的棋勢使用不同的演算法,而人是有考慮的,自己思考然後指定位置出棋。

在本次設計中,將可選擇人機模式或者雙人模式,他們都是遊戲者模組類,還有乙個棋盤類。在遊戲者類中對棋盤進行操作,也就是出棋子。框架類圖如下圖 1:

圖 1 框架類圖

框架比較簡單,gamer類引用table類,gamer物件每操作一步,table物件將會改變狀態而重新顯示。那麼是不是要每個遊戲者都要建立乙個gamer物件呢,當然可以,但我沒有這樣做,在gamer中設定兩個遊戲者標誌,用以表示當前是誰在下棋,下一步又到哪位選手即可,還有判斷是否有某一方贏棋的介面。這兩個標誌分別是flaga和flagb。

分別用各自的介面對其進行設定和清楚。在類table中用乙個二維陣列表示棋盤,預設大小是20x20(可設定),預設初始化為個位置上用『.』表示空,建立棋盤是都為空。

當遊戲者下棋之後該位置變為有黑子或白子,之後重新整理棋盤。

框架流程圖如下圖 2:

圖 2 框架流程圖

由此流程圖可以很清楚的知道本設計的輪廓,以及程式是如何設計執行的。了解框架類圖及整個流程之後,下面進行詳細設計。

根據框架類圖進行實現各個介面,以及根據流程圖實現各需求功能。本設計打算先實現雙人遊戲模式和人機模式,這兩個模式基本是一致的,區別是人機模式中計算機一方出棋的實現。那麼這裡介紹雙人模式的詳細設計部分即可。

在進入雙人模式遊戲之後,首先,通常五子棋棋盤可以根據遊戲者能力進行設定,因為棋盤太小可能會導致太多和棋,進行設定就靈活了很多。確定棋盤之後進行選擇哪一方先出棋,以顯公平。迴圈交換下棋,直至一方勝出或者棋盤已滿。

程式設計流程圖如下圖 3:

圖 3 詳細設計流程圖

出棋者一方出棋之後,根據棋盤上資料進行正確性判斷,如出棋者所放棋子位置已有棋子存在則提示錯誤,有該選手繼續放棋,或者出棋者所指位置超出棋盤範圍同樣的處理。知道該位置可以放下棋子。出棋函式傳遞棋盤引用、以及行列坐在位置為引數,函式原型為:

void nextstep(table &t,int &hang, int &lie)

由上圖可知,在一方下棋之後判斷是否剛下棋的一方已經勝出,如已經勝出,則提示是否繼續遊戲,否則檢測是否棋盤已滿造成和棋,如未滿則繼續交換下棋。在判斷是否有一方贏出是須判斷橫、豎、斜是否有五顆棋子一樣即可。

若是人機遊戲模式,那麼就是人和計算機互相交換出棋,計算機出棋介面尚未實現。本設計實現簡單,留有人機遊戲模式中計算機下棋介面,將其介面實現即可進行該模式遊戲。

由於時間原因,本設計還有很多缺陷,首先部分功能沒有做到,例如認輸、求和、撤銷等,還有設計本身的也不太合理,我覺得每個遊戲參與者乙個物件更加方便一寫,改進後類圖應該如下圖 4:

圖 4 改進後框架類圖

gamebase是遊戲參與者基類,它的兩個子類分別是人是參與者以及計算機是參與者的類。他們通過基類介面操作棋盤,這樣不管是雙人對戰模式還是人機遊戲模式,都可以使用相同的介面。發現該設計更好時沒有時間進行修改了。

附錄:一下兩截屏是執行結果:

程式開始時

其中一方勝利以後

全校五子棋比賽策劃方案五子棋

全校五子棋比賽 閃耀青春,祝福濱海之第四屆五子棋 策劃 書社團名稱毅昕棋社 負責人柳志偉 2012年 10月25日 全校五子棋比賽策劃方案 活動名稱 閃耀青春,祝福濱海第四屆全校五子棋比賽 活動目的 1 為了迎接校園文化節和培養濱海學子的興趣愛好,豐富我們的校園文化生活,通過參加此次活動,從而延伸求...

五子棋技巧

五子棋是一種兩人對弈的純策略型棋類遊戲,是起源於中國古代的傳統黑白棋種之一。容易上手,老少皆宜,而且趣味橫生,引人入勝 不僅能增強思維能力,提高智力,而且富含哲理,有助於修身養性。安東是公認的世界上五子棋棋力最強的棋手,他有一套成熟的五子棋技巧理論,非常實用,本文就是這套五子棋技巧理論的 步驟 方法...

五子棋作文

最近,我一直都在學五子棋,終於,我覺得可以和外公下了!第一局 驕兵必敗 我勝券在握,搶先擺出了乙個三角形,心想 外公呀外公,這下您得跟著我團團轉了。一會兒,我的黑棋不斷下出 活三 拖四 我有些得意了,真是驕兵必敗呀!外公很快就擺出了 活三嵌四 啊!我當頭一棒。第二局 小心謹慎 我通過了剛才那局棋的教...