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

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:

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:

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

4 Likes

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:

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

5 Likes

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

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

3 Likes

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

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:

3 Likes

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

Bạn ơi bạn làm được bài này chưa cho mình hỏi với

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