乙個簡單的JAVA五子棋

2021-07-27 08:43:13 字數 2602 閱讀 9427

參照書本寫了乙個很簡單的五子棋程式

主要有如下功能:

1、初始化棋盤initboard()

2、下棋play()

未完成的功能:

1、沒有實現棋子ai

2、沒有實現連機

3、ui可以繼續優化

個人感覺五子棋只有在判斷輸贏的演算法上稍微需要思考一下,別的地方都可以參考書本或者網路自己完成。

具體如下:

1、首先定義一些常量和變數

// 定義乙個二維陣列來充當棋盤

private static string board;

//五個棋子即贏

private final int win_count = 5;

// 棋盤大小

public static final int board_size = 15;

//棋盤,黑棋,白棋和選擇框圖標

bufferedimage table;

bufferedimage black;

bufferedimage white;

bufferedimage selected;

//棋盤畫素

private final int table_width = 535;

private final int table_height = 536;

//棋盤座標的畫素值和棋盤陣列之間的比率

private final int rate = table_width / board_size;

//棋盤座標的畫素值和棋盤陣列之間的偏移距離

private final int x_offset = 5;

private final int y_offset = 6;

//遊戲視窗

jframe f = new jframe("五子棋");

//棋盤對應的canvas元件

chessboard chessboard = new chessboard();

//當前選中點座標

private int selectedx = -1;

private int selectedy = -1;

2、初始化棋盤

public void initboard() throws ioexception 

} chessboard.setpreferredsize(new dimension(table_width, table_height));

f.add(chessboard);

f.pack();

f.setvisible(true);

}

3、下棋

public void play() 

//電腦隨機生成座標,這裡可以優化演算法,做出ai,我自己寫的比較簡單,就用隨機函式 實現了下。

int computerposarr = computerplay();

board[computerposarr[0]][computerposarr[1]] = "○";

chessboard.repaint();

if (iswin(xpos, ypos, "●"))

if (iswin(xpos, ypos, "○"))

}@override

public void mouseexited(mouseevent e)

});chessboard.addmousemotionlistener(new mousemotionadapter()

});}

4、電腦的隨機下棋

public int computerplay() 

int result = ;

return result;

}

5、判斷輸贏

public boolean iswin(int posx, int posy, string ico)  else if (samecount != win_count - 1) 

} if (samecount == 0) else if (samecount != win_count - 1)

}} if (samecount == 0) else if (samecount != win_count - 1)

j++;}}

} if (samecount == 0) else if (samecount != win_count - 1)

j--;}}

} return samecount >= win_count - 1 ? true : false;

}

6、畫棋盤

public class chessboard extends jpanel 

if (board[i][j].equals("○")) }}

}} }

7、主函式main

public static void main(string args) throws ioexception

Java實現五子棋

一定義常量類 public class constant二定義我們的棋盤類 public class chess private void playchess 錯誤輸入 if str.length 2 正常輸入的情況 判斷是否越界 if isoverstep str else end if 判斷是否...

寫了個五子棋

還沒放假的時候想著寫乙個可以聯網對戰的五子棋,主要是剛剛學了些mfc,想動動手,結果一下子就把本地的給寫了出來,但是根本沒有考慮有關結構,還有哪些該做乙個類,類與類之間的繼承等關係,外加要考慮到多執行緒,以及不知道類裡面的postmessage怎麼寫 結果當輪到寫網路部分的時候就卡住了,客戶端這邊有...

下五子棋的bot 五子棋演算法

include include include include include include jsoncpp json.h c 編譯時預設包含此庫 define n 7 每個節點的分支數 以下為各棋型的識別碼 權重 define win 1 4000 define lose 2 4000 defi...