Ý tưởng hay cho thuật toán cờ Caro dùng matrix 5 x 5

java
caro

(NG) #1

Mình đang có 1 project ở trường làm game cờ caro 20 x 20 ô người đánh với máy.
Yêu cầu: có 1 file lưu các thế cờ dạng ma trận 5 x 5 với các ký hiệu X->máy O->người T:trống D: ô cần đánh G:ô không cần quan tâm . Mỗi lần tìm kiếm nước sẽ dựa vào ma trận bàn cờ đang có và so với các thế cờ đã lưu trong file để tìm nước đi. Bài dùng java
Ai có ý tưởng nào hay để làm ko ạ? :smile: tks! :wink:


(Hồ Quỳnh) #2

cậu ơi cậu có ý tưởng gì về bài toán chưa, share cho mình với ,mình cũng đang dùng đề tài này :frowning:


(realphongle) #3

việc máy vừa đánh và vừa đọc lại file để dựa vào file để đánh bước tiếp theo sẽ tốn thời gian đọc file rất nhiều, thay vào đó tại mỗi nước cờ mình đánh, nó sẽ xét tại nước đánh hiện tại của mình xem thử có mối nguy nào hay không nếu không thì nó sẽ xét nước của nó tìm ra nước cờ ăn cao nhất và nó sẽ đánh, nếu sử dụng cách này bạn cần 1 cái ma trận với kích thước tương đương chạy ẩn để nó có thể quét mà đỡ tốn thời gian cứ chạy là ghi ra file và đọc file để tìm nước đánh


(Hồ Quỳnh) #4

Cao nhân c giảng kĩ hơn được không, có ví dụ về phần đấy thì tốt quá. T mới học nên lập trình còn yếu mà đã phải làm bài này r :frowning:


(Sherly1001) #5

Thuật toán của mình là “dạy” cho máy cách đánh, thuật toán như sau (burte-force ý mà :smile:):

  • Lập 2 mảng:
    • Một lưu trạng thái của bàn cơ (vị trí X-O).
    • Một lưu số điểm của từng ô.
  • Cách tính điểm cho một ô:
    • Mỗi lần tính điểm đưa điểm tất cả các ô về 0.
    • Nếu ô thuộc đường chéo (có 2 đường) điểm của các ô thuộc đường chéo cộng thêm 1.
    • Nếu trong cùng một hàng (cột, đường chéo) chỉ có X hoặc O điểm của tất cả ô trong hàng (cột, đường chéo) đó cộng thêm 1 (có thể cộng dồn).
    • Nếu trong cùng một hàng (cột, đường chéo) có cả X và O điểm của tất cả ô trong hàng (cột, đường chéo) đó về 0.
    • Nếu ô đó chứa X hoặc O thì điểm ô đó cũng bằng 0 (tránh chọn lại ô đã được chọn trước đó).
  • Rồi lấy ô có điểm cao nhất để máy đánh vào ô đó.

Thuật toán thì cũng tầm thường vậy, không thể xử lý hết trg hợp được :sweat_smile:
Hóng các cao nhân khác chỉ giáo thêm :joy: :joy:.
Còn đây là code C :point_right: https://ideone.com/5CLiIF


Sửa vài lỗi nhỏ, mọi người có thể xem qua ở :point_right: https://ideone.com/89u6A3


(Nguyen Dang Chien) #6

bạn làm dc chưa, cho mình tham khảo với


(Sherly1001) #7

:point_up_2: mình có để code trong link mà. :sweat_smile:.


(Nguyen Dang Chien) #8

có java ko bạn ơi. cho mk xin fb mk hỏi 1 số thứ với


(Sherly1001) #9

Mình chưa học Java nên chưa viết được, nhưng mà ý tưởng thì cứ theo như thuật toán ở trên mà làm. :smile:


(Nguyen Dang Chien) #10

cám ơn bạn nhé ^^^^^^^^^^^^^^


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?