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(); }
/// <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; }
/// <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; }
public void SetAIType(int type) { reversiAI = ReversiAIType.GetAI(type) ?? ReversiAIType.GetAI(1); reversiAI.AIInitialize(myPieceColor); }