public Board() { this.cells = new Tablesquare[dimensXxY, dimensXxY]; this.boardPanel = new Panel(); this.boardPanel.SetBounds(100, 25, 480, 480); this.boardPanel.Visible = true; this.boardPanel.BackgroundImage = Properties.Resources.draughtsBoard; int top = 0, left = 0; for (int i = 0; i < 8; i++) { left = 0; for (int j = 0; j < 8; j++) { cells[i, j] = new Tablesquare(); cells[i, j].Image = null; cells[i, j].BackColor = Color.Transparent; cells[i, j].SizeMode = PictureBoxSizeMode.CenterImage; cells[i, j].Location = new Point(left, top); cells[i, j].Size = new Size(60, 60); cells[i, j].Visible = true; if (boardInitialPiecesPositions[i, j] == 1 && i < 4) { cells[i, j].piece = new Piece(); cells[i, j].piece.color = PieceColor.redPiece; cells[i, j].piece.lineposition = top / 60; cells[i, j].piece.columnposition = left / 60; cells[i, j].piece.type = PieceType.normalPiece; cells[i, j].Image = Properties.Resources.redTransparent; left += 60; } else if (boardInitialPiecesPositions[i, j] == 1 && i > 4) { cells[i, j].piece = new Piece(); cells[i, j].piece.color = PieceColor.bluePiece; cells[i, j].piece.lineposition = top / 60; cells[i, j].piece.columnposition = left / 60; cells[i, j].piece.type = PieceType.normalPiece; cells[i, j].Image = Properties.Resources.blueTransparent; left += 60; } else { left += 60; } boardPanel.Controls.Add(cells[i, j]); } top += 60; } }
private void onTableClick(object sender, EventArgs e) { Tablesquare t = sender as Tablesquare; draughtsGame.getAvailableMovesNormalPieces(); draughtsGame.getAvailableMovesKingPieces(); if (draughtsGame.turn == PieceColor.bluePiece) { if (!click) { if (t.piece != null) { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (Game.gameboard.cells[i, j].Equals(sender)) { oldr = i; oldc = j; } } } /////modificari pe aici if (t.piece.type == PieceType.normalPiece) { t.piece.possiblePieceMoves = draughtsGame.movesForNormalPiece(t.piece.lineposition, t.piece.columnposition, draughtsGame.turn); t.piece.takeMoves = draughtsGame.takeMovesForCurrentPiece(t.piece.lineposition, t.piece.columnposition, draughtsGame.turn); } else if (t.piece.type == PieceType.kingPiece && t.piece.color == draughtsGame.turn) { t.piece.possiblePieceMoves = draughtsGame.movesForKing(t.piece.lineposition, t.piece.columnposition, draughtsGame.turn); t.piece.takeMoves = draughtsGame.takeMovesForKing(t.piece.lineposition, t.piece.columnposition, draughtsGame.turn); } ////////////////////////////////////// if (t.piece.takeMoves.Count() != 0) { flag = true; currentPossibleMoves = t.piece.takeMoves; draughtsGame.showAvailableMovesToUser(t.piece.takeMoves, draughtsGame.turn, Game.gameboard); } else { flag = false; currentPossibleMoves = t.piece.possiblePieceMoves; draughtsGame.showAvailableMovesToUser(t.piece.possiblePieceMoves, draughtsGame.turn, Game.gameboard); } if (currentPossibleMoves.Count() != 0) { click = true; } } else { click = false; } } else { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (Game.gameboard.cells[i, j].Equals(sender)) { newr = i; newc = j; } } } if (Game.gameboard.cells[newr, newc].piece != null) { click = false; draughtsGame.clearAvailableMovesAfterClick(currentPossibleMoves, Game.gameboard); } else { Tuple <int, int> destination = new Tuple <int, int>(newr, newc); if (Game.gameboard.cells[newr, newc].piece == null) { if (currentPossibleMoves.Contains(destination)) { if (flag == true) { draughtsGame.takePiece(oldr, oldc, newr, newc, Game.gameboard); if (draughtsGame.turn == PieceColor.redPiece) { redCaptured.Text = (Int16.Parse(redCaptured.Text) + 1).ToString(); } else { blueCaptured.Text = (Int16.Parse(blueCaptured.Text) + 1).ToString(); } draughtsGame.clearAvailableMovesAfterClick(currentPossibleMoves, Game.gameboard); click = false; draughtsGame.turn = draughtsGame.turn == PieceColor.bluePiece ? PieceColor.redPiece : PieceColor.bluePiece; flag = false; } else { draughtsGame.movePiece(oldr, oldc, newr, newc, Game.gameboard); draughtsGame.clearAvailableMovesAfterClick(currentPossibleMoves, Game.gameboard); click = false; draughtsGame.turn = draughtsGame.turn == PieceColor.bluePiece ? PieceColor.redPiece : PieceColor.bluePiece; } if (draughtsGame.turn == PieceColor.redPiece) { lTurn.Text = "Red"; } else { lTurn.Text = "Blue"; } } } } } } if (draughtsGame.turn == PieceColor.redPiece) { draughtsGame.getAvailableMovesNormalPieces(); draughtsGame.getAvailableMovesKingPieces(); List <int> aMove = new List <int>(); List <int> aTakeMove = new List <int>(); aMove = draughtsGame.randomNormalMoveAI(Game.gameboard); aTakeMove = draughtsGame.randomTakeMoveAI(Game.gameboard); if (aTakeMove.Count() != 0) { draughtsGame.takePiece(aTakeMove[0], aTakeMove[1], aTakeMove[2], aTakeMove[3], Game.gameboard); draughtsGame.turn = PieceColor.bluePiece; } else { draughtsGame.movePiece(aMove[0], aMove[1], aMove[2], aMove[3], Game.gameboard); draughtsGame.turn = PieceColor.bluePiece; } } draughtsGame.promotePiece(Game.gameboard); gameEnded(); }