Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 8 của 8

Chủ đề: Thuật giải minimax

  1. #1
    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 đang ngẫm về nó nhưng chưa hiểu lắm.
    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.

  2. #2
    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

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi CoViet-Plus005
    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
    Bác có thể giải thích rõ hơn được không? Em không hiểu ý bác lắm ạ.

  4. #4
    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

  5. #5
    Trích dẫn Gửi bởi CoViet-Plus005
    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
    cái này là caro 3 con mà bác @@

  6. #6
    Xin lỗi : mắt kém không nhận thấy số 3

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi CoViet-Plus005
    Xin lỗi : mắt kém không nhận thấy số 3
    Không sao nhưng bác có thể giải thích cho em về đoạn code trên được không ạ? Em mới tìm hiểu về minimax, cũng chưa thật sự hiểu lắm

  8. #8
    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

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •