Chủ đề: Thuật giải minimax
-
05-07-2016, 11:40 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thuật giải minimax
Em đang mày mò về thuật giải minimax để làm game tic tac toe (caro 3 con)
Em tìm trên mạng thì thấy đoạn code này:
Mã:namespace TicTacToeGame { class AIPlay { public static Space BestMove(GameBoard gb, player p) { Space? bestSpace = null; List<Space> openSpaces = gb.openSquares; GameBoard newBoard; for (int i = 0; i < openSpaces.Count; i++) { newBoard = gb.Clone(); Space newSpace = openSpaces[i]; newBoard[newSpace.x, newSpace.y] = p; if (newBoard.Winner == player.Open && newBoard.openSquares.Count > 0) { Space tmpMove = BestMove(newBoard, ((player)(-(int)p))); newSpace.rank = tmpMove.rank; } else { if (newBoard.Winner == player.Open) newSpace.rank = 0; else if (newBoard.Winner == player.X) newSpace.rank = -1; else if (newBoard.Winner == player.O) newSpace.rank = 1; } if (bestSpace == null || p == player.X && newSpace.rank < ((Space)bestSpace).rank || p == player.O && newSpace.rank > ((Space)bestSpace).rank) { bestSpace = newSpace; } } return (Space)bestSpace; }
Em xin hỏi các bác:
1. Vì sao phải dùng (-int).
2. Cây trò chơi được khởi tạo như thế nào?
3. Vì sao máy tính luôn chọn được nước đi ngay tức khắc? (Ví dụ: Lúc bắt đầu trò chơi, em đi O ở ô [1,1] thì máy sẽ đi ngay ô [0,0]. Còn nếu em đi ô [2,1] máy sẽ đi ngay ô [0,1]. [x,y] ở đây là tọa độ ô, x ngang y dọc).
Lý thuyết về minimax thì em có đọc và cũng hiểu. Làm phiền các bác giảng giải giúp em về đoạn code trên ạ.
Em cảm ơn các bác.View more random threads:
- Cập nhật dữ liệu từ thread lỗi: Exception has been thrown by the target of an invocation?
- làm sao để khắc phục lỗi dataGridView Default Error Dialog
- Sử dụng combobox để liệt kê danh sách từ database?
- Cách giữ điều kiện so sánh với thời gian thực khi thay đổi thời gian trên máy
- Cách duyệt qua các Control trong form C#?
- đếm kí tự a trong dãy
- Quản lý user sử dụng phần mềm thông qua server
- Lập trình đồ họa OpenGL | Cách hoạt động của OpenGL trong lập trình C#
- Chuyển chuỗi thành chữ trong lập trình C#
- Xử lý BBCode trong Richtext Edit?
-
05-07-2016, 11:50 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Khi chơi caro, người chơi chọn phương án sao có được 2 hàng 3, hai hàng 3-4 để quyết thắng
-
05-07-2016, 12:12 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi CoViet-Plus005
-
05-07-2016, 12:44 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn chơi caro rồi chứ, nếu bạn có phương án khác không ?
Trên là tìm giao lộ để có 2 hàng 3, 2 hàng 3-4
-
05-07-2016, 12:48 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi CoViet-Plus005
-
05-07-2016, 12:55 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Xin lỗi : mắt kém không nhận thấy số 3
-
05-07-2016, 01:06 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi CoViet-Plus005
-
05-07-2016, 01:13 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Lúc khác, mới quê độ sao tỉnh táo được !
Giải thích, cần có thêm, cả project chẳng hạn
Nhớ trong Java có code demo caro 3 (TicTacToe) đó. Máy PC đang dùng lại không cài Java / JDK
Thanh lý pallet nhựa cũ Đaklak Trải dài trên vùng đất Daklak, những chiếc pallet nhựa cũ Đaklak nằm rải rác như những bức tranh tĩnh lặng, kể lể về những chặng đường mà chúng đã đi qua. Những đường...
Thanh lý pallet nhựa cũ Đaklak