Обработчик событий C #

Я пытаюсь получить кнопку воспроизведения снова в приложении WPF для сброса моей игры. Я не могу понять этого хоть убей. Мой профессор сказал создать новый обработчик событий, но я до сих пор не понимаю, что делаю. Мой код ниже, любая помощь будет оценена по достоинству! Спасибо!

public partial class MainWindow : Window
{
    //declare and initialize variables
    private int lives = 10; //used to give lives for the game
    private int random = 0; //used to assign a random number

    public MainWindow()
    {
        InitializeComponent();
        Random r = new Random();
        //sets the range for the random number
        random = r.Next(0, 100);


        //play the game
        playGame();

    } //end MainWindow Constructor

    private void btnPlayAgain_Click(object sender, RoutedEventArgs e)
    {

        //call playGame to setup a new game
        playGame();

    }

    private void playGame()
    {
        //hide play again
        btnPlayAgain.Visibility = Visibility.Hidden;

    }

    private void txtInupt_KeyDown(object sender, KeyEventArgs e)
    {
        //when you run out of lives message pops up
        if (lives == 0)
        {
            lblFrom.Content = "You";
            lblTo.Content = "lost";
            return;
        }

        //when you guess the rigiht number message pops up
        if (e.Key == Key.Enter)
        {
            lives--;
            int userGuessed = Int32.Parse(txtInupt.Text);
            if (userGuessed == random)
            {
                lblFrom.Content = "You";
                lblTo.Content = "win!!";
                btnPlayAgain.Visibility = Visibility.Visible;
                txtInupt.Visibility = Visibility.Hidden;
                return;
            }
            if (userGuessed < random)
            {
                lblFrom.Content = userGuessed;
            }
            else
            {
                lblTo.Content = userGuessed;
            }

            //this is the countdown of how many lives you have
            lblStatus.Content = "Remaining Lives: " + lives;
            //changes the color toi rend when you have 3 or less lives
            if (this.lives <= 3)
            {
                this.lblStatus.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
            }
            else
            {
                this.lblStatus.Foreground = new SolidColorBrush(Color.FromRgb(255, 255, 0));
            }
        }
    } //End txtInput_KeyDown
}//End Main Window

person Paige    schedule 17.04.2020    source источник
comment
Если опубликованный вами код указывает на то, чему вас учит ваш профессор, они оказывают вам медвежью услугу. В коде программной части окна или другого элемента представления для программы WPF должно быть очень мало кода. Основная часть логики вашей программы принадлежит модели представления, включая команды для выполнения пользователем и свойства, представляющие значения для отображения. Разметка привязки данных в XAML используется для установления соединений между представлением (XAML) и моделью представления (C #). См. Отмеченный дубликат, чтобы узнать, как привязка команды к кнопке будет работать в вашем сценарии.   -  person Peter Duniho    schedule 18.04.2020
comment
Не беспокойтесь о непонимании, в какой-то момент мы все были новичками и понятия не имели, что делаем. Когда btnPlayAgain становится видимым и вы щелкаете по нему, вызывается метод btnPlayAgain_Click. Этот метод вызывает метод playGame(), чтобы сделать btnPlayAgain невидимым. Ничего не произойдет, пока вы не наберете что-нибудь в txtInupt. Когда вы начинаете вводить это, вызывается метод txtInupt_KeyDown. Когда вы вводите этот метод, у вас не остается lives, поэтому ничего не происходит. Вы должны сбросить lives при нажатии btnPlayAgain.   -  person Brett Wertz    schedule 18.04.2020