コード例 #1
0
 //  重新开始
 private void Restart_Click(object sender, RoutedEventArgs e)
 {
     gameStart = false;
     resetChess();
     HintImformation.Text = "";
     winner = DatabaseManager.identity.none;
 }
コード例 #2
0
 public BlankPage1()
 {
     this.InitializeComponent();
     InstallChessboard(); // 绘制棋盘
     loadInfo();          // 载入对战信息
     // 初始化数据: 若从之前挂起的应用程序加载状态,gameStart在OnLaunched中复原,否则gameStart为false
     if (gameStart)       // 若上次游戏未结束,则恢复游戏数据
     {
         matrix = App.db.getData();
         drawChess();    // 渲染棋子
         if (isAIOrNot)  // 如果是人机模式,则轮到人落子
         {
             chessState = state.black;
         }
         else            // 如果是人人模式,则需要判断轮到哪一方落子
         {
             int numOfWhite = 0, numOfBlack = 0;
             for (int i = 0; i < matrixWidth; i++)
             {
                 for (int j = 0; j < matrixWidth; j++)
                 {
                     if (matrix[i, j] == 1)
                     {
                         numOfWhite++;
                     }
                     else if (matrix[i, j] == 2)
                     {
                         numOfBlack++;
                     }
                 }
             }
             // 由于黑方先落子,所以黑子不少于白子,且若黑子多于白子,则轮到白方落子;若黑子等于白子,则轮到黑方落子
             chessState = numOfBlack > numOfWhite ? state.white : state.black;
         }
     }
     else
     {
         matrix = new int[matrixWidth, matrixWidth];
         for (int i = 0; i < matrixWidth; i++)
         {
             for (int j = 0; j < matrixWidth; j++)
             {
                 matrix[i, j] = 0;
             }
         }
         // 默认黑方先攻
         chessState = state.black;
         winner     = DatabaseManager.identity.none;
     }
     gridWidth = (chessBoard.Width - 30) / 14;
 }
コード例 #3
0
 public void PTM_Clicked(object sender, RoutedEventArgs e)
 {
     if (gameStart && (isAIOrNot == false))
     {
         var i = new MessageDialog("正在人人游戏中").ShowAsync();
         return;
     }
     if (!gameStart)
     {
         resetChess();             // 如果现在没有开始已经有人胜利了就初始化棋盘
     }
     else
     {
         var i = new MessageDialog("正在人机游戏中,如果需要重新开始请点击重新开始按钮").ShowAsync();
     }
     chessState           = state.black;
     gameStart            = true;
     isAIOrNot            = true;
     HintImformation.Text = "";
     winner = DatabaseManager.identity.none;
 }
コード例 #4
0
        //棋盘点击事件
        public void boardClicked(object sender, PointerRoutedEventArgs e)
        {
            if (!gameStart)
            {
                var k = new MessageDialog("请选择模式").ShowAsync();
                return;
            }

            //获取点击位置
            Point chessPosition = e.GetCurrentPoint(chessBoard).Position;
            //新建棋子--绘制椭圆
            Ellipse newChess = new Ellipse();

            newChess.Width  = 26;
            newChess.Height = 26;
            getChessRowAndCol(chessPosition);
            if (!setNewChess(newChess))
            {
                //如果下棋失败了,结束整个函数
                return;
            }

            //人人模式
            if (!isAIOrNot)
            {
                state judgeState = judge();
                if (judgeState == state.black)
                {
                    gameStart = false;
                    App.db.addWinNum(DatabaseManager.identity.black);
                    winNumOfBlack.Text = (int.Parse(winNumOfBlack.Text) + 1).ToString();
                    var i = new MessageDialog("黑棋胜利了,恭喜恭喜!").ShowAsync();
                    showWinRate();
                    HintImformation.Text = "黑棋胜利了,恭喜恭喜!";
                    winner = DatabaseManager.identity.black;
                }
                else if (judgeState == state.white)
                {
                    gameStart = false;
                    App.db.addWinNum(DatabaseManager.identity.white);
                    winNumOfWhite.Text = (int.Parse(winNumOfWhite.Text) + 1).ToString();
                    var i = new MessageDialog("白棋胜利了,恭喜恭喜!").ShowAsync();
                    showWinRate();
                    HintImformation.Text = "白棋胜利了,恭喜恭喜!";
                    winner = DatabaseManager.identity.white;
                }
            }
            //人机模式
            else
            {
                state judgeState = judge();
                if (judgeState != state.none)
                {
                    gameStart = false;
                    App.db.addWinNum(DatabaseManager.identity.man);
                    winNumOfMan.Text = (int.Parse(winNumOfMan.Text) + 1).ToString();
                    var i = new MessageDialog("你胜过了计算机,恭喜恭喜!").ShowAsync();
                    showWinRate();
                    HintImformation.Text = "你胜过了计算机,恭喜恭喜!";
                    winner = DatabaseManager.identity.man;
                }
                else
                {
                    point AIChessPosition = point.getNextPointByAI(matrix);
                    //新建棋子--绘制椭圆
                    Ellipse newAIChess = new Ellipse();
                    newAIChess.Width  = 26;
                    newAIChess.Height = 26;
                    newChess_row      = AIChessPosition.x;
                    newChess_col      = AIChessPosition.y;
                    setNewChess(newAIChess);
                    judgeState = judge();
                    if (judgeState != state.none)
                    {
                        gameStart = false;
                        App.db.addWinNum(DatabaseManager.identity.computer);
                        winNumOfComputer.Text = (int.Parse(winNumOfComputer.Text) + 1).ToString();
                        var i = new MessageDialog("计算机赢啦,继续加油!").ShowAsync();
                        showWinRate();
                        HintImformation.Text = "计算机赢啦,继续加油!";
                        winner = DatabaseManager.identity.computer;
                    }
                }
            }
        }