Загрузка данных


<Window x:Class="WpfApp1.MainWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        FontSize="20"
        FontWeight="Bold"
        Title="Кто хочет стать миллионером?" Height="600" Width="800">

    <Grid Background="#0D1B2A">
        <Grid.RowDefinitions>
            <RowDefinition Height="60"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="120"/>
            <RowDefinition Height="60"/>
        </Grid.RowDefinitions>

        <!-- Верхняя панель: номер вопроса и счёт -->
        <Grid Grid.Row="0" Margin="10,0">
            <TextBlock Name="QuestionNumber" 
                       Text="Вопрос № 1"
                       FontSize="22" FontWeight="Bold"
                       Foreground="#E0E1DD"
                       VerticalAlignment="Center" HorizontalAlignment="Left"/>
            <TextBlock Name="ScoreText" 
                       Text="Счёт: 0"
                       FontSize="22" FontWeight="Bold"
                       Foreground="#E0E1DD"
                       VerticalAlignment="Center" HorizontalAlignment="Right"/>
        </Grid>

        <!-- Текст вопроса -->
        <TextBlock Name="QuestionText"
                   Grid.Row="1"
                   FontSize="24" FontWeight="Bold"
                   Foreground="#E0E1DD"
                   TextWrapping="Wrap"
                   Margin="20,10"
                   HorizontalAlignment="Center" TextAlignment="Center"/>

        <!-- Картинка вопроса -->
        <Border Grid.Row="2" Margin="20,0,20,10" 
                BorderBrush="#415A77" BorderThickness="2" CornerRadius="10"
                Background="#1B263B">
            <Image x:Name="QuestionImage" Stretch="Uniform" Margin="10"/>
        </Border>

        <!-- Варианты ответов -->
        <Grid Grid.Row="3" Margin="20,0">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <RadioButton Name="Answer1"
                         Grid.Row="0" Grid.Column="0"
                         Margin="10"
                         FontSize="16"
                         Background="#1B263B"
                         Foreground="White"
                         BorderBrush="#415A77"
                         BorderThickness="2"
                         Padding="15"/>

            <RadioButton Name="Answer2"
                         Grid.Row="0" Grid.Column="1"
                         Margin="10"
                         FontSize="16"
                         Background="#1B263B"
                         Foreground="White"
                         BorderBrush="#415A77"
                         BorderThickness="2"
                         Padding="15"/>

            <RadioButton Name="Answer3"
                         Grid.Row="1" Grid.Column="0"
                         Margin="10"
                         FontSize="16"
                         Background="#1B263B"
                         Foreground="White"
                         BorderBrush="#415A77"
                         BorderThickness="2"
                         Padding="15"/>

            <RadioButton Name="Answer4"
                         Grid.Row="1" Grid.Column="1"
                         Margin="10"
                         FontSize="16"
                         Background="#1B263B"
                         Foreground="White"
                         BorderBrush="#415A77"
                         BorderThickness="2"
                         Padding="15"/>
        </Grid>

        <!-- Нижняя панель: кнопки подсказок и ответа -->
        <Grid Grid.Row="4" Margin="10,0">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                <Button Name="Hint50"
                        Content="50/50" Width="120" Height="40" Margin="5"
                        Background="Lime" FontWeight="Bold"
                        Click="Button_Click_50"/>
                <Button Name="HintFriend"
                        Content="Звонок другу" Width="120" Height="40" Margin="5"
                        Background="Lime" FontWeight="Bold"
                        Click="Button_Click_Friend"/>
                <Button Name="HintHall"
                        Content="Помощь зала" Width="120" Height="40" Margin="5"
                        Background="Lime" FontWeight="Bold"
                        Click="Button_Click_Hall"/>
            </StackPanel>

            <Button Content="ОТВЕТИТЬ"
                    Width="180" Height="50"
                    HorizontalAlignment="Right"
                    Background="#00B4D8" Foreground="White"
                    FontSize="20" FontWeight="Bold"
                    BorderBrush="#0077B6" BorderThickness="2"
                    Click="AnswerForQuestion">
                <Button.Resources>
                    <Style TargetType="Border">
                        <Setter Property="CornerRadius" Value="8"/>
                    </Style>
                </Button.Resources>
            </Button>
        </Grid>
    </Grid>
</Window>



using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1
public partial class GameWindow : Window
{
    int Numb = 1;
    int score = 0;

    bool hint50 = true;
    bool hintHall = true;
    bool hintFriend = true;

    List<AfQ> qwest = new List<AfQ>();
    Random rnd = new Random();

    public MainWindow()
    {
        InitializeComponent();
        qwest = AfQ.GetQuestions();
        UpdateQuestion();
    }

    private void AnswerForQuestion(object sender, RoutedEventArgs e)
    {
        var q = qwest.Where(m => m.Number == Numb).FirstOrDefault();

        string selected = "";

        if (Answer1.IsChecked == true) selected = Answer1.Content.ToString();
        if (Answer2.IsChecked == true) selected = Answer2.Content.ToString();
        if (Answer3.IsChecked == true) selected = Answer3.Content.ToString();
        if (Answer4.IsChecked == true) selected = Answer4.Content.ToString();

        if (selected == "")
        {
            MessageBox.Show("Выберите ответ!");
            return;
        }

        if (selected == q.RightAnswer)
        {
            score += q.Price;
            MessageBox.Show($"Правильно! +{q.Price} очков");

            Numb++;

            if (Numb > qwest.Count)
            {
                EndWindow endWindow = new EndWindow(score, qwest.Sum(x => x.Price));
                endWindow.Show();
                this.Close();
            }
            else
            {
                UpdateQuestion();
            }
        }
        else
        {
            MessageBox.Show($"Неправильно! Правильный ответ: {q.RightAnswer}\nИтоговый счёт: {score}");
            EndWindow endWindow = new EndWindow(score, qwest.Sum(x => x.Price));
            endWindow.Show();
            this.Close();
        }
    }

    private void Button_Click_50(object sender, RoutedEventArgs e)
    {
        if (hint50)
        {
            var q = qwest.Where(m => m.Number == Numb).FirstOrDefault();

            if (Answer1.Content.ToString() != q.FiftyFiftyAnswer1 && Answer1.Content.ToString() != q.FiftyFiftyAnswer2)
                Answer1.Visibility = Visibility.Hidden;
            if (Answer2.Content.ToString() != q.FiftyFiftyAnswer1 && Answer2.Content.ToString() != q.FiftyFiftyAnswer2)
                Answer2.Visibility = Visibility.Hidden;
            if (Answer3.Content.ToString() != q.FiftyFiftyAnswer1 && Answer3.Content.ToString() != q.FiftyFiftyAnswer2)
                Answer3.Visibility = Visibility.Hidden;
            if (Answer4.Content.ToString() != q.FiftyFiftyAnswer1 && Answer4.Content.ToString() != q.FiftyFiftyAnswer2)
                Answer4.Visibility = Visibility.Hidden;

            hint50 = false;
            Hint50.Background = new SolidColorBrush(Colors.Red);
        }
        else
        {
            MessageBox.Show("Подсказка уже использована!");
        }
    }

    private void Button_Click_Friend(object sender, RoutedEventArgs e)
    {
        if (hintFriend)
        {
            hintFriend = false;
            HintFriend.Background = new SolidColorBrush(Colors.Red);

            var q = qwest.Where(m => m.Number == Numb).FirstOrDefault();
            MessageBox.Show($"Друг думает, что правильный ответ: {q.RightAnswer}");
        }
        else
        {
            MessageBox.Show("Подсказка уже использована!");
        }
    }

    private void Button_Click_Hall(object sender, RoutedEventArgs e)
    {
        if (hintHall)
        {
            hintHall = false;
            HintHall.Background = new SolidColorBrush(Colors.Red);

            var q = qwest.Where(m => m.Number == Numb).FirstOrDefault();

            int correct = rnd.Next(60, 80);
            int w1 = rnd.Next(0, 100 - correct);
            int w2 = rnd.Next(0, 100 - correct - w1);
            int w3 = 100 - correct - w1 - w2;

            string msg =
                $"{q.Answer1} — {(q.Answer1 == q.RightAnswer ? correct : w1)}%\n" +
                $"{q.Answer2} — {(q.Answer2 == q.RightAnswer ? correct : w2)}%\n" +
                $"{q.Answer3} — {(q.Answer3 == q.RightAnswer ? correct : w3)}%\n" +
                $"{q.Answer4} — {(q.Answer4 == q.RightAnswer ? correct : rnd.Next(0, 20))}%";

            MessageBox.Show(msg, "Мнение зала:");
        }
        else
        {
            MessageBox.Show("Подсказка уже использована!");
        }
    }

    private void UpdateQuestion()
    {
        QuestionNumber.Text = $"Вопрос № {Numb}";
        ScoreText.Text = $"Счёт: {score}";

        var q = qwest.Where(m => m.Number == Numb).FirstOrDefault();

        QuestionText.Text = q.Question;

        // Загрузка картинки
        try
        {
            string imagePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, q.ImagePath);
            QuestionImage.Source = new BitmapImage(new Uri(imagePath));
        }
        catch
        {
            QuestionImage.Source = null;
        }

        Answer1.Content = q.Answer1;
        Answer2.Content = q.Answer2;
        Answer3.Content = q.Answer3;
        Answer4.Content = q.Answer4;

        Answer1.IsChecked = false;
        Answer2.IsChecked = false;
        Answer3.IsChecked = false;
        Answer4.IsChecked = false;

        Answer1.Visibility = Visibility.Visible;
        Answer2.Visibility = Visibility.Visible;
        Answer3.Visibility = Visibility.Visible;
        Answer4.Visibility = Visibility.Visible;
    }
}
}