參照書本寫了乙個很簡單的五子棋程式
主要有如下功能:
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...