async void onButtonClick(object sender, EventArgs eventArgs) { var button = (Button)sender; //Toast.MakeText(this, "Clicked " + button.Id, ToastLength.Short).Show(); if (current == OX.O) { button.SetBackgroundResource(Resource.Drawable.circle); button.Text = "O"; current = OX.X; } else { button.SetBackgroundResource(Resource.Drawable.cross); button.Text = "X"; current = OX.O; } button.Clickable = false; clickedButtonsCounter++; checkIfWon(); }
/// <summary> /// Returns the result of the last move made, provided the cell of the last move. /// </summary> /// <param name="cell"></param> /// <returns></returns> private Result GetResult(TableLayoutPanelCellPosition cell, Player player) { int row = cell.Row; int col = cell.Column; // Check horizontal and vertical containing the cell. OX[] horizontal = new OX[3]; OX[] vertical = new OX[3]; for (int i = 0; i < 3; i++) { horizontal[i] = gameTable[row, i]; vertical[i] = gameTable[i, col]; } if (ThreeConsecutive(horizontal).Length != 0) { return(FinalResult(player)); } // Check if a diagonal is filled. if (DiagonalOver(row, col)) { return(FinalResult(player)); } ; // If not, check if board is full and return a tie game if it is. if (remainingCells.Count == 0) { return(FinalResult()); } // If game is not over, return Null Result. return(Result.Null); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.activity_main); var toolbar = FindViewById <Toolbar>(Resource.Id.toolbar); SetActionBar(toolbar); buttons = new Button[, ] { { FindViewById <Button>(Resource.Id.button00), FindViewById <Button>(Resource.Id.button01), FindViewById <Button>(Resource.Id.button02) }, { FindViewById <Button>(Resource.Id.button10), FindViewById <Button>(Resource.Id.button11), FindViewById <Button>(Resource.Id.button12) }, { FindViewById <Button>(Resource.Id.button20), FindViewById <Button>(Resource.Id.button21), FindViewById <Button>(Resource.Id.button22) } }; foreach (var button in buttons) { button.Click += onButtonClick; } current = OX.O; FindViewById <Button>(Resource.Id.restartButton).Click += onResetButtonClick; }
public GameWindow() { InitializeComponent(); Gameboard = new Button[3, 3] { { Button00, Button10, Button20 }, { Button01, Button11, Button12 }, { Button02, Button12, Button22 } }; RemainingCoordinates = new HashSet <int[]> { Coords(0, 0), Coords(1, 0), Coords(2, 0), Coords(0, 1), Coords(1, 1), Coords(1, 2), Coords(0, 2), Coords(1, 2), Coords(2, 2) }; PlayerOX = OX.O; CpuOX = OX.X; }
private OX OtherChoice(OX choice) { if (choice == OX.O) { return(OX.X); } return(OX.X); }
private string ToString(OX choice) { if (choice == OX.N) { return(" "); } if (choice == OX.O) { return("O"); } return("X"); }
/// <summary> /// Interprets an OX as a string. /// </summary> /// <param name="ox"></param> /// <returns></returns> private string ToString(OX ox) { if (ox == OX.O) { return("O"); } else if (ox == OX.X) { return("X"); } return(" "); }
private OX[] ThreeConsecutive(OX[] oX) { OX first = oX[0]; for (int i = 0; i < oX.Length; i++) { if (oX[i] != first) { return(new OX[] { }); } } return(oX); }
private void FillCell(TableLayoutPanelCellPosition cell, OX choice) { //// Store a button inside the cell. //cellTable[cell.Row, cell.Column].Gr Button button = (Button)GameTable.GetControlFromPosition(cell.Column, cell.Row); button.Text = ToString(choice); // Update the gameTable. gameTable[cell.Row, cell.Column] = choice; // Remove from remaining cells. remainingCells.Remove(new int[2] { cell.Row, cell.Column }); }
// Returns elements of forward diagonal if diagTest = true, // and reverse diagonal if diagTest = false. private OX[] Diagonal(bool diagTest) { OX[] diag = new OX[3]; if (diagTest) { for (int i = 0; i < 3; i++) { diag[i] = gameTable[i, i]; } return(diag); } for (int i = 0; i < 3; i++) { diag[i] = gameTable[i, 3 - i]; } return(diag); }
public void TestWinnerOutcome() { OX.StartingPosition1 = 0; OX.RacetrackLength1 = 50; int BettingAmount = 50; int OXNumber = 1; int expectedWin = 100; int expectedLose = 0; OXs[0] = new OX() { OXPictureBox = null }; OXs[1] = new OX() { OXPictureBox = null }; Amr = objFactory.getPunter("Amr", null, null); Amr.money = BettingAmount; Amr.PlaceBet((int)BettingAmount, OXNumber); bool nowin = true; int win = -1; while (nowin) { for (int i = 0; i < OXs.Length; i++) { if (OX.Run(OXs[i])) { win = i + 1; Amr.Collect(win); nowin = false; } } } if (Amr.gamble.OXNum == win) { Assert.AreEqual(expectedWin, Amr.money, "Account not credited correctly"); } if (Amr.gamble.OXNum != win) { Assert.AreEqual(expectedLose, Amr.money, "Account not debited correctly"); } }
private void MovePlayer(Player player, TableLayoutPanelCellPosition cell) { OX ox = Marker(player); // Fill the cell of the player/computer. if (player == Player.Main) { FillCell(cell, choice); } else { FillCell(cell, OtherChoice(choice)); } // Check if the game ends and update appropriately. var result = GetResult(cell, player); if (result != Result.Null) { // If player made last move, it's either a win or a tie. ResetGame(GetResult(cell, player)); } }