Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Thuật toán alpha beta trong AI game cờ tướng

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    11

    Mặc định Thuật toán alpha beta trong AI game cờ tướng

    Chào các bạn, mình đang làm đề tài game cờ tướng, có sử dụng trí tuệ nhân tạo để tạo nước đi cho quân cờ.
    Mình làm hàm lượng giá (evaluate) đơn giản bằng cách gán cho mỗi loại quân cờ một giá trị như sau
    Code:
    private int[] pieceValue = new int[7] {1000, 20, 20, 90, 45, 40, 10};
    tương ứng với tướng sỹ tượng xe pháp mã chốt.

    Hàm alpha beta của mình có prototype như sau (onTurn là lượt đi của phe nào - có 2 phe PLAYER1, PLAYER2):
    Code:
    private int Alpha_Beta(int alpha, int beta, int depth, PlayerType onTurn)
    Nội dung hàm:
    Code:
     if (depth == 0)
                    return evaluate();
    int best = -999999;
    Move alphabeta_bestMove = new Move();
    // Tạo tất cả các nước đi có thể
    // Nếu bị chiếu bí hoặc không đi được con nào hết (tức là nước tiếp theo bị chiếu bị) thì trừ điểm vô cực
    while (validMoves.Count > 0 && best < beta)
    {
     if (best > alpha)
                        alpha = best;
                    
    Move move = (Move)validMoves[0];
    // Thực hiện nước đi move
    PlayerType oppTurn = onTurn == PlayerType.PLAYER1 ? PlayerType.PLAYER2 : PlayerType.PLAYER1;
    int value = -Alpha_Beta(-beta, -alpha, depth-1,oppTurn);
    // Bỏ thực hiện nước đi move
     if (value > best)
                    {
                        best = value;
                        alphabeta_bestMove = move;
                    }
    
                    validMoves.RemoveAt(0);
                }
    
                //if (depth == this.maxDepth)
                    bestMove = alphabeta_bestMove;
    
                return best;
    }
    Mấy phần kia mình chú thích vì nó theo code của mình, sợ bị rối.

    Vấn đề mình bị là tất cả các nước đi đều trả về value = 0, nên nó cứ đi con xe lên xuống hoài T__T
    Mình debug thì thấy depth = 5 thì khoảng tới depth = 1 nó lại đi quân cờ về vị trí ban đầu :|

    Bạn nào có kinh nghiệm thì giúp mình với T_____T

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    11

    ai giúp mình với nào T___T

Các đề tài tương tự

  1. Mu-ManhLong Ra Mắt Cụm Máy Chủ Mới BachLong - Alpha Test 13h ngày 24/4/2013 - Open Beta 13h ngày 27/04/2013
    Gửi bởi acientsoul trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 26-04-2013, 08:17 AM
  2. sử dụng thật toán alpha beta để làm ứng dụng trong c#?????
    Gửi bởi vuonghnit90 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 30-04-2012, 08:58 PM
  3. Giải thuật cắt tỉa alpha-beta. sử dụng thế nào, giải quyết bài toán ra sao?
    Gửi bởi hocdot.com trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 23-04-2012, 12:39 PM
  4. Vấn đề về Minimax và cắt tỉa Alpha - Beta
    Gửi bởi IBU1603 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 15-11-2010, 09:08 PM
  5. Làm trò chơi Dodgem theo thuật toán cắt tỉa alpha-beta?
    Gửi bởi thanh_rio trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 26-10-2010, 11:16 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn