// 重新开始 private void Restart_Click(object sender, RoutedEventArgs e) { gameStart = false; resetChess(); HintImformation.Text = ""; winner = DatabaseManager.identity.none; }
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; }
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; }
//棋盘点击事件 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; } } } }