public void setMineFields(PartidaForm form, bool opponentBoard) { mineFields = new MineField[rows, columns]; int startVerticalPosition = startPositionY; int startHorizontalPosition = startPositionX; int number = 1; string boardBtn = "board2_"; if (opponentBoard) { boardBtn = "board1_"; } for (int y = 0; y < rows; y++) { for (int x = 0; x < columns; x++) { mineFields[y, x] = new MineField(); mineFields[y, x].createButton(boardBtn, number, form, opponentBoard, startVerticalPosition, startHorizontalPosition); startHorizontalPosition += addWidth; number++; } startHorizontalPosition = startPositionX; startVerticalPosition += addHeight; } }
public void dragOverMineField(object sender, DragEventArgs e) { string data = e.Data.GetData(DataFormats.Text).ToString(); string[] values = data.Split(';'); int[] dragPositions = { int.Parse(values[1]), int.Parse(values[2]) }; Button btn = (Button)sender; int number = int.Parse(btn.Name.Substring(btn.Name.IndexOf("_") + 1)); int[] dropPositions = tabuleiro.getMineFieldPosition(number); dropPositions = getStartShipPositions(dragPositions, dropPositions); int[,] positions = getShipFields(int.Parse(values[0]), ref dropPositions[0], ref dropPositions[1]); for (int cont = 0; cont < positions.GetLength(0); cont++) { MineField mine = tabuleiro.getMineFields()[positions[cont, 0], positions[cont, 1]]; Button dropBtn = mine.btn; dropBtn.FlatAppearance.BorderSize = 3; if (allowDrop) { //mine.btn.AllowDrop = true; dropBtn.FlatAppearance.BorderColor = Color.Blue; } else { //mine.btn.AllowDrop = false; dropBtn.FlatAppearance.BorderColor = Color.Red; } } }
public void btn_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { if (vertical) { vertical = false; } else { vertical = true; } } Button btn = (Button)sender; int number = int.Parse(btn.Name.Substring(btn.Name.IndexOf("_") + 1)); int[] Positions = tabuleiro.getMineFieldPosition(number); MineField mine = tabuleiro.getMineFields()[Positions[0], Positions[1]]; if (mine.isShip()) { string data = mine.getShipName().ToString() + ";"; data += Positions[0].ToString() + ";" + Positions[1].ToString(); this.DoDragDrop(data, DragDropEffects.Copy); } }
public void btn_Mina_Click(object sender, EventArgs e) { if (yourTurn) { Button btn = (Button)sender; int Position = int.Parse(btn.Name.Substring(btn.Name.IndexOf("n") + 1)); int[] cordenates = opponentBoard.getMineFieldPosition(Position); MineField mine = opponentBoard.getMineFields()[cordenates[0], cordenates[1]]; if (!mine.getJogada()) { mine.setJogada(opponentBoard); if (opponentBoard.getQtdAcertos() == qtdAcertos) { youWin(); } string message = cordenates[0].ToString() + ";" + cordenates[1].ToString() + ";"; protocol.sendMessage(clientIP, message); // Se o tiro acertou a água, passa a vez para o adversário if (!mine.isShip()) { yourTurn = false; lbl_Turn.Text = "Espere a jogada do jogador adversário..."; } } } }
private void setShips(int ship, int Y, int X) { int[,] positions = getShipFields(ship, ref Y, ref X); for (int cont = 0; cont < positions.GetLength(0); cont++) { string shipName = ship.ToString() + "_" + (cont + 1).ToString(); int y = positions[cont, 0]; int x = positions[cont, 1]; MineField mine = tabuleiro.getMineFields()[y, x]; mine.setShip(true, shipName, vertical); mine.btn.FlatAppearance.BorderSize = 1; mine.btn.FlatAppearance.BorderColor = Color.Black; } }
public void setMineFields(Insert_Ships form) { mineFields = new MineField[rows, columns]; int startVerticalPosition = startPositionY; int startHorizontalPosition = startPositionX; int number = 1; for (int y = 0; y < rows; y++) { for (int x = 0; x < columns; x++) { mineFields[y, x] = new MineField(); mineFields[y, x].setPlayerField(form, number, startVerticalPosition, startHorizontalPosition); startHorizontalPosition += addWidth; number++; } startHorizontalPosition = startPositionX; startVerticalPosition += addHeight; } }
private int[] getStartShipPositions(int[] dragPositions, int[] dropPositions) { MineField dragMine = tabuleiro.getMineFields()[dragPositions[0], dragPositions[1]]; for (int x = dragMine.getShipPart(); x > 1; x--) { if (vertical) { if (dropPositions[0] > 0) { dropPositions[0] -= 1; } } else { if (dropPositions[1] > 0) { dropPositions[1] -= 1; } } } return(dropPositions); }
public PartidaForm(TCPIP protocol, string ClientIP, Tabuleiro myBoard) { InitializeComponent(); clientIP = ClientIP; this.protocol = protocol; this.myBoard = new Tabuleiro(10, 10); if (clientIP != null) // first player is server side { yourTurn = true; lbl_Turn.Text = "Sua vez"; } try { protocol.setEventsForm2(this); this.myBoard.setMineFields(this, false); opponentBoard = new Tabuleiro(10, 10); opponentBoard.setMineFields(this, true); string message = ""; // loop para envio dos navios escolhidos for (int y = 0; y < myBoard.getNumberRows(); y++) { for (int x = 0; x < myBoard.getNumberColumns(); x++) { MineField mine = myBoard.getMineFields()[y, x]; if (mine.isShip()) { message += mine.getShipName().ToString(); this.myBoard.getMineFields()[y, x].setShip(true, mine.getShip(), mine.isVertical()); qtdAcertos++; } else { message += "0"; } } } protocol.sendMessage(clientIP, message); if (clientIP == null) { MessageBox.Show("Conexão feita com o host.", "Conexão", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Conexão feita com sucesso. Você é o host", "Conexão", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show(ex.Message, ex.GetType().Name, MessageBoxButtons.OK, MessageBoxIcon.Error); } }