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...