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:
- Không thể truyền tham số kiểu static?
- Cách truyền dữ liệu giữa hai luồng trong C#?
- tự định nghĩa event cho một usercontrol
- Lưu file video vào file xml như thế nào?
- WPF hỏi mấy bác về "Handwriting recognization"
- Chọn vị trí hiển thị ảnh trong ListView như thế nào ?
- Lưu ảnh vào SQL Server bằng C#
- Không bắt được sự kiện cuộn chuột (MouseWheel) của PictureBox C#?
- Cho em hỏi cách binding dataGridView sang dataTable khi có data Source là 1 List với!!
- Lỗi Cannot implicitly convert type 'double' to 'float' ở hàm tính giá trị đơn thức?
-
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
Tuy nhiên, việc thi công và bảo dưỡng đường bê tông nhựa đòi hỏi sự chuyên nghiệp và kỹ thuật cao từ các nhà thầu và kỹ sư. Sự linh hoạt và độ bền cao của đường bê tông nhựa cũng giúp giảm thiểu chi...
Xây Dựng Đẳng Cấp: Cùng Đại Thanh,...