Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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");
            }
        }