我眼中的五子棋遊戲開發

weixin_34148340發表於2017-03-06

這是我在簡書的第一篇部落格,剛好最近用java開發了五子棋遊戲,現將開發過程以及感想總結記錄下來,如果真的有人看到了這篇文章,希望裡面的內容能夠幫到你。

首先是原型設計,先看圖看圖,見下圖

5076894-c67500a3e1bdde9d.png

設計圖如下

5076894-4d31aed46d54ee3b.jpg

解釋一下我眼中的五子棋遊戲。在開發之前,我一直再思考,現在傳統的五子棋遊戲還有沒有改進玩法的可能性,從而讓它變得更加有趣呢?我首先給了自己肯定的答案,然後每天開腦洞,終於想到了在本遊戲中的核心玩法--“讓子”。

所謂的“讓子”操作就是當前玩家回合中,該玩家選擇不下子而讓對方玩家下子,即打破黑白子的數量平衡,這是我眼中的五子棋的核心玩法。

原型有了,設計圖也ok了,接下來就是邏輯流程圖+技術實現了。

部分邏輯圖如下(流程太長,只擷取部分)

5076894-de1a1aec764fe2c5.png
5076894-408af474ce1ddadd.png

相關類、實體如下

5076894-3cc4f360407776f3.png
5076894-e9eb62898285a0cd.png

其中關鍵的棋盤資料採用二維陣列進行建模,所有的邏輯操作的實現均轉換成對二維陣列的處理。

下面是關鍵程式碼的張貼,判定輸贏的邏輯程式碼如下

/**

* 判斷遊戲是否結束

*/

public int isOver() {

int tmp = NONE;// 記錄棋子

for (int i = 0; i < this.size; i++) {

for (int j = 0; j < this.size; j++) {

tmp = gobang[i][j];

if (tmp != NONE) {

// 判斷斜上方

if (i >= 4 && j <= this.size - 5) {

for (int k = 1; k <= 4; k++) {

if (tmp != gobang[i - k][j + k]) {

break;

}

if (k == 4) {

// 判斷是哪一方贏了

if (tmp == BLACK)

return BLACK_WIN;

if (tmp == WHITE)

return WHITE_WIN;

}

}

}

// 判斷斜下方

if (i <= this.size - 5 && j <= this.size - 5) {

for (int k = 1; k <= 4; k++) {

if (tmp != gobang[i + k][j + k]) {

break;

}

if (k == 4) {

// 判斷是哪一方贏了

if (tmp == BLACK)

return BLACK_WIN;

if (tmp == WHITE)

return WHITE_WIN;

}

}

}

// 判斷橫向

if (j <= this.size - 5) {

for (int k = 1; k <= 4; k++) {

if (tmp != gobang[i][j + k]) {

break;

}

if (k == 4) {

// 判斷是哪一方贏了

if (tmp == BLACK)

return BLACK_WIN;

if (tmp == WHITE)

return WHITE_WIN;

}

}

}

// 判斷縱向

if (i <= this.size - 5) {

for (int k = 1; k <= 4; k++) {

if (tmp != gobang[i + k][j]) {

break;

}

if (k == 4) {

// 判斷是哪一方贏了

if (tmp == BLACK)

return BLACK_WIN;

if (tmp == WHITE)

return WHITE_WIN;

}

}

}

}

}

}

return NOT_OVER;

}

伺服器和客戶端的採用socket進行通訊,伺服器會和每個玩家建立專門的執行緒進行通訊,客戶端在正式進入遊戲之前需要使用者輸入使用者名稱進行登入,本程式中輸入任意使用者名稱即可(只要不與另外一個玩家重複),登入完成後等待另外一個玩家登入後即可進入遊戲。

整個開發完成之後的效果如下圖


5076894-1da1f0edd0e29944.png
5076894-aa4994002f123c7d.png
5076894-6017c96fe0a58295.png

原始碼點選下面的連結:

http://download.csdn.net/download/pulan_peng/9771289

PS:下載可能需要積分,我也實在不想搞需要積分下載這一套,但是CSDN不允許我編輯,所以將就一下。

相關文章