五子棋小遊戲的分析和設計

2021-09-11 05:40:36 字數 1733 閱讀 8265

1、系統分析

物件導向分析方法,站在使用者的角度回答兩個問題:

(1)系統中應該有什麼物件?

a.棋盤

b.棋局:多個棋子構成的某一時刻的狀態

c.遊戲:系統總控物件,接收使用者的操作指令,並按照使用者的操作指令控制棋盤和棋局。

(2)每個物件都應該有什麼屬性和方法?

棋盤屬性

rows

行數cols

列數size

每乙個格仔的尺寸

margin

棋盤離視窗的邊距

方法init

初始化convert

將物理座標(畫素)轉換為邏輯座標(行號,列號)

getwidth

獲取棋盤的寬度(這個暫時可能考慮不到,在後續過程中才會考慮到這一點,設計也不一定就是一步到位)

getheight

獲取棋盤的高度

棋局屬性

chesses

當前棋局狀態

方案1:描述每乙個棋子的狀態

棋子:,顏色用0、1表示

對應的棋局:[,,]

方案2:描述每乙個落點的狀態

落點:0-無子;1-有黑子;-1-有白子

對應的棋局:

[0,0,0,0,0,0]

[0,0,0,1,0,0]

[0,1,-1,0,0,0]

[0,0,0,0,0,0]

[0,0,0,0,0,0]

[0,0,0,0,0,0]

turn

當前輪到誰落子(1-黑方;-1-白方)

方法init

初始化exist

判斷某個位置是否有棋子

win判斷輸贏,即是否連成了五個及以上的同顏色棋子

add落子

遊戲屬性

board

棋盤chess

棋局方法

init

初始化drawboard

繪製棋盤

drawchess

繪製棋子

handle

接收並處理使用者的落子指令

2、系統設計

a. 棋盤(board)

考慮到棋盤的屬性在遊戲過程中是不變的,所以可以將其屬性和方法設計成靜態的,那麼初始化的方法就應該由靜態**塊來完成。

轉換:point convert(int x, int y)

增加乙個座標類point,描述行號和列號

b. 棋局(chess)

定義常量(0-無子,1-黑子,-1-白子)

初始化: void init(),也可以使用建構函式

判斷是否某個落點有棋子:boolean exist(point p)

判斷輸贏:int iswin(point p)

落子:void add(point p)

c. 遊戲

初始化  void init(),也可以使用建構函式

處理落子指令 void handle(int x, int y)

繪製棋盤void drawboard()

繪製棋子void drawchess(point p,int turn)

五子棋的小遊戲

感想 終於寫出人生中第乙個小遊戲來了 include include include include using namespace std const int x 21 棋盤行數 const int y 21 棋盤列數 char p x y 定義棋盤 int m 0 定義臨時點,儲存輸入座標 in...

python五子棋小遊戲

話不多說,直接上 全部工程檔案,在github 五子棋 效果預覽 判斷上下左右左上右上左下右下8個方向 i x 1 while i 0 if darray i y 1 num1 1 i 1 else break i x 1 while i 19 if darray i y 1 num1 1 i 1 ...

c 小遊戲 五子棋

include include includeusing namespace std const int x 21 棋盤行數 const int y 21 棋盤列數 char p x y 定義棋盤 int m 0 定義臨時點,儲存輸入座標 int n 0 void display 輸出棋盤 else...