Hướng dẫn viết game cờ caro bằng java năm 2024

Trò chơi TicTacToe là trò chơi quen thuộc tương tự trò chơi caro, tuy nhiên nó được giới hạn về kích thước của bàn cờ. Thông thường bàn cờ sẽ có kích thước 3x3.

Luật chơi: Hai người sẽ lần lượt đánh các chữ O hoặc X vào một ô vuông chưa được đánh, nếu người nào tạo được một hàng ngang, cột dọc, đường chéo gồm các ký tự của mình thì người đó sẽ thắng.

Thiết lập giao diện và dữ liệu cần thiết

1. Thiết lập giao diện

Phần giao diện chủ yếu là các Jbutton trong Java Swing, kế thừa từ class JFram

  public Container init[] {
    Container cn = this.getContentPane[];
    pn0 = new JPanel[];
    pn0.setLayout[new FlowLayout[]];
    luot = new JLabel["Lượt của X"];
    luot.setFont[new Font["UTM Micra", 1, 20]];
    pn0.add[luot];
    pn = new JPanel[];
    pn.setLayout[new GridLayout[3, 3]];
    for [int i = 0; i  0] {
      int h = [int] [[k - 1] * Math.random[] + 1];
      k = 0;
      k += [a[0] == 2] ? 1 : 0;
      if [k == h]
        return 0;
      k += [a[2] == 2] ? 1 : 0;
      if [k == h]
        return 2;
      k += [a[6] == 2] ? 1 : 0;
      if [k == h]
        return 6;
      k += [a[8] == 2] ? 1 : 0;
      if [k == h]
        return 8;
    }
    for [int i = 0; i < 9; i++]
      if [a[i] == 2]
        k++;
    int h = [int] [[k - 1] * Math.random[] + 1];
    k = 0;
    for [int i = 0; i < 9; i++]
      if [a[i] == 2] {
        k++;
        if [k == h]
          return i;
      }
    return 0;
  }

4. Chọn nước đi tối ưu

Bot sẽ ưu tiên đánh nước đánh mà nó có thể thắng trước, nếu không thể thắng, nó sẽ đánh vào ô nguy hiểm [ô mà nếu Bot không chặn thì Bot có thể thua], nếu không có ô nguy hiểm Bot mới đánh một ô ngẫu nhiên.

  public int autoPoint[] {
    int k = checkPoint1[];
    if [k != -1]
      return k;
    else {
      k = checkPoint2[];
      if [k != -1] 
        return k;
      else
        return creatPointRandom[];
    }
  }

Kết

Trên đây là cách tạo ra trò chơi TicTacToe bằng Java Swing, cũng như cách lập trình Bot để có thể đánh với mình. Mọi góp ý xin vui lòng để lại ở phần bình luận.

Chủ Đề