private void btnFinalizarTurno_Click(object sender, EventArgs e) { int nextPlayer = jugadorLocal.getID() + 1; if (jugadorLocal.getID() == board.getPlayers().Length - 1) { nextPlayer = 0; } byte nextJugadorLocalId = Convert.ToByte(nextPlayer); string nextJugadorLocalIdStrByte = Instruccion.ByteToString(nextJugadorLocalId); string nextJugadorLocalIdStr = nextJugadorLocalIdStrByte.Substring(6, 2); Trace.WriteLine("Siguiente jugador: " + nextJugadorLocalIdStr); this.btnRollDices.Enabled = false; this.btnFinalizarTurno.Enabled = false; lbxHistoria.Items.Add("Siguiente jugador: " + nextJugadorLocalIdStr); lbxHistoria.Items.Add(" Trama: " + Instruccion.ByteToString(Instruccion.FormarPrimerByte(jugadorLocal.GetIdAsString(), nextJugadorLocalIdStr, Instruccion.PrimerByte.TIRAR_DADOS))); // Mandamos 01 y 01 en los dados pero realmente este valor no afecta, solo importa que sea != 0 this.comPort.Write(Instruccion.FormarTrama( Instruccion.FormarPrimerByte(jugadorLocal.GetIdAsString(), nextJugadorLocalIdStr, Instruccion.PrimerByte.TIRAR_DADOS), Instruccion.FormarSegundoByteDados("01", "01") ), 0, 4); }
private void btnRollDices_Click(object sender, EventArgs e) { this.btnRollDices.Enabled = false; Random randDado = new Random(); numeroDado1 = randDado.Next(1, 7); numeroDado2 = randDado.Next(1, 7); dice1.Image = (Image)Properties.Resources.ResourceManager.GetObject("dado" + numeroDado1); dice2.Image = (Image)Properties.Resources.ResourceManager.GetObject("dado" + numeroDado2); string numeroDado1Byte = Instruccion.ByteToString(Convert.ToByte(numeroDado1)); string numeroDado1Str = numeroDado1Byte.Substring(5); string numeroDado2Byte = Instruccion.ByteToString(Convert.ToByte(numeroDado2)); string numeroDado2Str = numeroDado2Byte.Substring(5); this.btnFinalizarTurno.Enabled = true; lbxHistoria.Items.Add("Lanzar dados: " + Instruccion.ByteToString(Instruccion.FormarPrimerByte(jugadorLocal.GetIdAsString(), jugadorLocal.GetIdAsString(), Instruccion.PrimerByte.TIRAR_DADOS))); this.comPort.Write(Instruccion.FormarTrama( Instruccion.FormarPrimerByte(jugadorLocal.GetIdAsString(), jugadorLocal.GetIdAsString(), Instruccion.PrimerByte.TIRAR_DADOS), Instruccion.FormarSegundoByteDados(numeroDado1Str, numeroDado2Str) ), 0, 4); Square currentSquare = board.movePlayer(jugadorLocal, numeroDado1, numeroDado2); Trace.WriteLine("Current Position: " + jugadorLocal.getCurrentPosition()); jugadorLocal.SetPoisitionX(currentSquare.GetPositionX()); jugadorLocal.SetPoisitionY(currentSquare.GetPositionY()); tablero.Invalidate(); int resultado = currentSquare.doAction(jugadorLocal, board); Trace.WriteLine("New player money: " + jugadorLocal.getMoney().getMoney()); // Esto estaba así en el board, no se si haga falta porque tal vez podamos validarlo dentro del doAction if (jugadorLocal.getMoney().isBrokeOut()) { Trace.WriteLine(jugadorLocal, jugadorLocal.getName() + " has been broke out!"); jugadorLocal.setBrokeOut(true); } actualizarDatosJugadorLocal(); // Aquí empieza lo bueno if (resultado == 1) { Trace.WriteLine("Debería enviar el mensaje"); this.comPort.Write(Instruccion.FormarTrama( Instruccion.FormarPrimerByte(jugadorLocal.GetIdAsString(), jugadorLocal.GetIdAsString(), Instruccion.PrimerByte.PROPIEDADES), Convert.ToByte("000" + board.GetHouseBits(jugadorLocal.getCurrentPosition()), 2) ), 0, 4); } }
private void leerTramaTirarDados(String origen, String destino, String segundoByte) { string dado1Str = segundoByte.Substring(2, 3); string dado2Str = segundoByte.Substring(5, 3); int dado1 = Convert.ToInt32(dado1Str, 2); Trace.WriteLine("Dado 1: " + dado1); int dado2 = Convert.ToInt32(dado2Str, 2); Trace.WriteLine("Dado 2: " + dado2); if (jugadorLocal.GetIdAsString() != destino) { this.BeginInvoke((MethodInvoker) delegate() { this.btnRollDices.Enabled = false; this.btnFinalizarTurno.Enabled = false; lbxHistoria.Items.Add("Jugador que le toca: " + origen); }); dice1.Image = (Image)Properties.Resources.ResourceManager.GetObject("dado" + dado1); dice2.Image = (Image)Properties.Resources.ResourceManager.GetObject("dado" + dado2); // Actualizamos la posicion del jugador que se esta moviendo var jugadorMoviendose = board.getPlayer(Convert.ToInt32(origen, 2)); Trace.WriteLine("Actualizando posicion del jugador que se movio. Id: " + jugadorMoviendose.getID()); if ((ultimoOrigen == origen) && (dado1 == dado2)) { dobles++; if (dobles == 3) { dobles = 0; jugadorMoviendose.SetPoisitionX(9); jugadorMoviendose.SetPoisitionY(360); jugadorMoviendose.setIsInJail(true); } } else { dobles = 0; int newPosition = Board.normalizePosition(jugadorMoviendose.getCurrentPosition() + dado1 + dado2); if (jugadorMoviendose.getCurrentPosition() > newPosition) { jugadorMoviendose.getMoney().addMoney(200); } jugadorMoviendose.setPosition(newPosition); Square pos = board.GetSquares()[newPosition]; jugadorMoviendose.SetPoisitionX(pos.GetPositionX()); jugadorMoviendose.SetPoisitionY(pos.GetPositionY()); if (pos.GetType() == typeof(HouseSquare)) { HouseSquare posHouse = (HouseSquare)pos; pos = (HouseSquare)pos; if ((posHouse.getOwner() != jugadorMoviendose.getID()) && (posHouse.getOwner() >= 0)) { Trace.WriteLine(jugadorMoviendose, jugadorMoviendose.getName() + " lost " + posHouse.getRent() + " money to " + board.getPlayer(posHouse.getOwner()).getName()); jugadorMoviendose.getMoney().substractMoney(posHouse.getRent()); board.getPlayer(posHouse.getOwner()).getMoney().addMoney(posHouse.getRent()); Trace.WriteLine("Owner money: " + board.getPlayer(posHouse.getOwner()).getMoney().getMoney()); actualizarDatosJugadorLocal(); } } Trace.WriteLine(String.Format("Posicion del jugador {0}: {1}, {2} (Casilla: {3})", jugadorMoviendose.getID(), jugadorMoviendose.GetPositionX(), jugadorMoviendose.GetPositionY(), newPosition)); } tablero.Invalidate(); this.comPort.Write(Instruccion.FormarTrama( Instruccion.FormarPrimerByte(origen, destino, Instruccion.PrimerByte.TIRAR_DADOS), Instruccion.FormarSegundoByteDados(dado1Str, dado2Str) ), 0, 4); } else if (jugadorLocal.GetIdAsString() == origen) { if (jugadorLocal.getIsInJail()) { this.BeginInvoke((MethodInvoker) delegate() { this.btnRollDices.Enabled = false; this.btnFinalizarTurno.Enabled = true; lbxHistoria.Items.Add("Carcel"); }); } else { if (dado1 != dado2) { // Aqui deberiamos hacer las acciones que si de comprar, etc this.BeginInvoke((MethodInvoker) delegate() { this.btnFinalizarTurno.Enabled = true; }); } else if (dado1 == dado2) { this.BeginInvoke((MethodInvoker) delegate() { this.btnRollDices.Enabled = true; this.btnFinalizarTurno.Enabled = false; lbxHistoria.Items.Add("Dobles"); }); } } } else if (jugadorLocal.GetIdAsString() == destino) { Trace.WriteLine(String.Format("Jugador local: {0} Destino: {1}", jugadorLocal.GetIdAsString(), destino)); this.BeginInvoke((MethodInvoker) delegate() { this.btnRollDices.Enabled = true; lbxHistoria.Items.Add("SOY YO: " + jugadorLocal.GetIdAsString()); }); } else // Creo que nunca llegara hasta aqui { Trace.WriteLine("No creo que pase"); } }