コード例 #1
0
        //Funcion encargada de generar todos los loads del juego
        private void Loading()
        {
            //Instanciacion del ArkanoidControl
            ac = new ArkanoidControl
            {
                Dock   = DockStyle.Fill,
                Width  = Width,
                Height = Height
            };

            //Action GameEnded que vuelve al menu al terminar el juego
            ac.GameEnded = () =>
            {
                MessageBox.Show("PERDISTE");
                var menuForm = new Menu();
                menuForm.Show();
                Dispose();
            };

            //Action GameWon que vuelve al menu al ganar la partida y guarda los datos del ganador
            ac.GameWon = () =>
            {
                var id = DBConnetion.RealizarConsulta($"select id from users where name='{TxtName.Text}'").Rows[0][0].
                         ToString();
                var maximo = DBConnetion.RealizarConsulta($"select attempt from attempts" +
                                                          $" where id_user = '******' ORDER BY attempt DESC FETCH FIRST 1 ROWS ONLY");

                int val;

                if (maximo.Rows.Count == 0)
                {
                    val = 1;
                }
                else
                {
                    val = Convert.ToInt32(maximo.Rows[0][0].ToString()) + 1;
                }

                DBConnetion.RealizarAccion($"INSERT into ATTEMPTS(id_user,attempt,score) VALUES('{Convert.ToInt32(id)}', {val},{GameData.score})");
                MessageBox.Show("GANASTE LA PARTIDA");
                var menuForm = new Menu();
                menuForm.Show();
                Dispose();
            };
        }
コード例 #2
0
        //Evento el cual se encarga de cargar el ArkanoidControl y de cominar el nombre entre
        //este Form y el ArkanoidContro
        private void BtnPlay_Click(object sender, EventArgs e)
        {
            try
            {
                //se manda a llamar el InitializeGame para que se actualicen los datos al volver a jugar
                GameData.InitializeGame();
                //se cargan los Action y propiedades del ArkanoidControl
                Loading();
                //se invoca el delegate
                gn?.Invoke(TxtName.Text);

                string nombre = TxtName.Text;
                //variable tipo data table
                var consultar = DBConnetion.RealizarConsulta($"SELECT * FROM USERS " +
                                                             $"where name = '{nombre}'");

                string agregar = $"INSERT into USERS(name) VALUES('{nombre}')";

                //hacemos uso del delegate para comunicar el nombre entre este form y el arkanoud control
                gn = nick =>
                {
                    switch (TxtName.Text)
                    {
                    case string aux when aux.Length > 16:
                        throw new ExceededMaxCharactersException(
                                  "No se puede ingresar un alias de mas de 16 caracteres");

                    case string aux when aux.Trim().Length == 0:
                        throw new EmpyNicknameException("Debe ingresar un nombre de usuario");

                    default:    //en caso de que no se cumpla ningun caso de excepcion, se corre el juego
                        //verifiica si el usuario ya existe en la base de datos
                        if (consultar.Rows.Count == 1)
                        {
                            MessageBox.Show($"Bienvenido de nuevo {nick}", "Game");
                            tableLayoutPanel1.Hide();
                            Text = "Arkanoid";
                        }
                        //si no existe lo agrega
                        else
                        {
                            //Agregando User a DB
                            DBConnetion.RealizarAccion(agregar);
                            MessageBox.Show($"Gracias por registrarte {nick} \n Presiona OK para comenzar a jugar");
                            //Cambiando el control del tableLayout por ArkanoidControl
                            tableLayoutPanel1.Hide();
                            Text = "Arkanoid";
                        }
                        Controls.Add(ac);
                        break;
                    }
                };
            }
            catch (ExceededMaxCharactersException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (EmpyNicknameException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }