public override void Initialize()
        {
            currentMouseState    = Mouse.GetState();
            lastMouseState       = Mouse.GetState();
            currentKeyboardState = Keyboard.GetState(Keys.Escape);
            lastKeyboardState    = Keyboard.GetState(Keys.Escape);

            reversiGame    = ReversiGame.CurrentGame;
            boardRectangle = boardRect;

            aiTypePieces = new Piece[2, AIMaxCount];
            AICount      = ReversiAIType.GetAINames().Length;
            AIIndex[0]   = GameSettings.DefaultAIIndex;
            AIIndex[1]   = GameSettings.DefaultAIIndex;
            board        = curGame.LoadContent <Texture2D>(@"Images\Board");
            settingBoard = curGame.LoadContent <Texture2D>(@"Images\SettingBoard");
            int pieceSize = boardRect.Width / ReversiGame.BoardSize;

            startButton = CreateChild <StartButton, Rectangle>(new Rectangle(boardRect.X + pieceSize * 3, boardRect.Y + pieceSize * 6, pieceSize * 2, pieceSize));
            startButton.Initialize(settingType);
            showPieces[0]                      = CreateChild <Piece, Rectangle>(new Rectangle(boardRect.X + pieceSize * 3, boardRect.Y + pieceSize * 2, pieceSize, pieceSize));
            showPieces[0].PieceState           = PieceState.Black;
            showPieces[1]                      = CreateChild <Piece, Rectangle>(new Rectangle(boardRect.X + pieceSize * 4, boardRect.Y + pieceSize * 2, pieceSize, pieceSize));
            showPieces[1].PieceState           = PieceState.White;
            playerTypePieces[0]                = CreateChild <Piece, Rectangle>(new Rectangle(boardRect.X + pieceSize * 1, boardRect.Y + pieceSize * 3, pieceSize, pieceSize));
            playerTypePieces[0].CurrentDisplay = DisplayState.CanMove;
            chooseIndex[0]                     = 0;
            PlayerType[0]                      = PlayerTypes.Human;
            playerTypePieces[1]                = CreateChild <Piece, Rectangle>(new Rectangle(boardRect.X + pieceSize * 2, boardRect.Y + pieceSize * 3, pieceSize, pieceSize));
            playerTypePieces[1].CurrentDisplay = DisplayState.Normal;
            playerTypePieces[2]                = CreateChild <Piece, Rectangle>(new Rectangle(boardRect.X + pieceSize * 5, boardRect.Y + pieceSize * 3, pieceSize, pieceSize));
            playerTypePieces[2].CurrentDisplay = DisplayState.CanMove;
            chooseIndex[1]                     = 2;
            PlayerType[1]                      = PlayerTypes.AI;
            playerTypePieces[3]                = CreateChild <Piece, Rectangle>(new Rectangle(boardRect.X + pieceSize * 6, boardRect.Y + pieceSize * 3, pieceSize, pieceSize));
            playerTypePieces[3].CurrentDisplay = DisplayState.Normal;
            for (int i = 0; i < AIMaxCount; i++)
            {
                aiTypePieces[0, i] = CreateChild <Piece, Rectangle>(new Rectangle(boardRect.X, boardRect.Y + pieceSize * (i + 3), pieceSize, pieceSize));
            }
            for (int i = 0; i < AIMaxCount; i++)
            {
                aiTypePieces[1, i] = CreateChild <Piece, Rectangle>(new Rectangle(boardRect.X + pieceSize * 7, boardRect.Y + pieceSize * (i + 3), pieceSize, pieceSize));
            }
            foreach (Piece piece in showPieces)
            {
                piece.ForceShow = true;
            }
            foreach (Piece piece in playerTypePieces)
            {
                piece.ForceShow = true;
            }
            foreach (Piece piece in aiTypePieces)
            {
                piece.ForceShow = true;
            }

            base.Initialize();
        }
示例#2
0
 /// <summary>
 /// 初始化用户界面
 /// </summary>
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     ShowStartPageStory = (Storyboard)FindResource("ShowStartPage");
     HideStartPageStory = (Storyboard)FindResource("HideStartPage");
     foreach (string aiName in ReversiAIType.GetAINames())
     {
         AIType.Items.Add(aiName);
     }
     // TODO 修改此处值可以修改默认使用的 AI
     AIType.SelectedIndex = 1;
 }
示例#3
0
 /// <summary>
 /// 执行棋局初始化操作 (包括新建棋局实例, 新建人工智能实例. 必要时执行自动下棋操作.)
 /// </summary>
 public void InitializeGame(ReversiPiece userPiece, int AIIndex, WhenGameOver gameOver)
 {
     InitialControls();
     whenGameOver   = gameOver;
     reversiGame    = ReversiGame.CreateANewGame();
     HumanPieceType = userPiece;
     UpdateWindow();
     reversiAI = ReversiAIType.GetAI(AIIndex);
     changeWaitingState(WaitingState.NotWaiting);
     if (HumanPieceType == ReversiPiece.White)
     {
         reversiAI.AIInitialize(ReversiPiece.Black);
         MovePiece();
         DoEvents();
     }
     else
     {
         reversiAI.AIInitialize(ReversiPiece.White);
     }
     ShowNextEnabledPieces();
     isInitialized = true;
     IsUserTurn    = true;
 }
示例#4
0
 public void SetAIType(int type)
 {
     reversiAI = ReversiAIType.GetAI(type) ?? ReversiAIType.GetAI(1);
     reversiAI.AIInitialize(myPieceColor);
 }