//マスのボタンを押したときの処理 private void buttonSquare_Click(object sender, RoutedEventArgs e) { Button srcButton = (Button)e.Source; Image square = (Image)srcButton.Content; string btnName = srcButton.Name; int boardCoordinates = int.Parse(btnName.Replace("button", "")); int y = (boardCoordinates / 10) % 10; //boardCoordinatesの10の位の数 = 縦のマス数 int x = boardCoordinates % 10; //boardCoordinatesの1の位の数 = 横のマス数 bool right = false; bool left = false; bool up = false; bool down = false; bool rightUp = false; bool leftUp = false; bool rightDown = false; bool leftDown = false; //自分の石を置けるかどうかのチェック if (ReverseCheck.CheckTurnUpsideDown(y, x, boadList, ref right, ref left, ref up, ref down, ref rightUp, ref leftUp, ref rightDown, ref leftDown)) { //盤の情報を変更する Reverse.ReverseStorns(y, x, boadList, right, left, up, down, rightUp, leftUp, rightDown, leftDown); //盤面を画面に反映する ReflectOnBoard(); //相手の色がないとき、ゲーム終了処理を行う CheckOpponentColorExist(); //緑のマスがないとき、ゲーム終了処理を行う CheckNoneColorExist(); //ターンプレイヤーを交代する(相手のターンになる) ChangeTarn(); //相手が置ける場所がないとき、パスする(次を自分のターンにする) if (!CheckCanPutStones()) { MessageBox.Show("置ける場所がありません。パスします。"); ChangeTarn(); //自分も置ける場所がないとき、ゲームを終了する if (!CheckCanPutStones()) { MessageBox.Show("両者置ける場所がありません。ゲーム終了です。"); GameEnd(); } } } }
//自分が置ける場所がないかどうかを確認する private bool CheckCanPutStones() { for (int y = 1; y <= 8; y++) { for (int x = 1; x <= 8; x++) { if (boadList[y][x] == 1)//TODO: 統合 { if (ReverseCheck.CheckTurnUpsideDown(y, x, boadList)) { return(true); } } } } return(false); }