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


using System.Collections.Generic;

namespace WpfApp1
{
    public class AfQ
    {
        public int Number { get; set; }
        public string Question { get; set; }
        public string ImagePath { get; set; }  // НОВОЕ: путь к картинке

        public string Answer1 { get; set; }
        public string Answer2 { get; set; }
        public string Answer3 { get; set; }
        public string Answer4 { get; set; }

        public string RightAnswer { get; set; }

        public string FiftyFiftyAnswer1 { get; set; }
        public string FiftyFiftyAnswer2 { get; set; }
        public int Price { get; set; }

        public static List<AfQ> GetQuestions()
        {
            return new List<AfQ>()
            {
                new AfQ { 
                    Number=1, 
                    Question="Кто этот персонаж?", 
                    ImagePath="Images/harry_potter.jpg",
                    Answer1="Гарри Поттер", 
                    Answer2="Фродо Бэггинс", 
                    Answer3="Люк Скайуокер", 
                    Answer4="Джон Сноу", 
                    RightAnswer="Гарри Поттер", 
                    FiftyFiftyAnswer1="Гарри Поттер", 
                    FiftyFiftyAnswer2="Фродо Бэггинс", 
                    Price=5000
                },
                new AfQ { 
                    Number=2, 
                    Question="Из какого фильма этот кадр?", 
                    ImagePath="Images/interstellar.jpg",
                    Answer1="Интерстеллар", 
                    Answer2="Гравитация", 
                    Answer3="Марсианин", 
                    Answer4="Прибытие", 
                    RightAnswer="Интерстеллар", 
                    FiftyFiftyAnswer1="Интерстеллар", 
                    FiftyFiftyAnswer2="Марсианин", 
                    Price=10000
                },
                new AfQ { 
                    Number=3, 
                    Question="Как зовут этого актёра?", 
                    ImagePath="Images/keanu_reeves.jpg",
                    Answer1="Брэд Питт", 
                    Answer2="Том Круз", 
                    Answer3="Киану Ривз", 
                    Answer4="Джонни Депп", 
                    RightAnswer="Киану Ривз", 
                    FiftyFiftyAnswer1="Киану Ривз", 
                    FiftyFiftyAnswer2="Том Круз", 
                    Price=15000
                },
                new AfQ { 
                    Number=4, 
                    Question="Из какого аниме этот персонаж?", 
                    ImagePath="Images/naruto.jpg",
                    Answer1="Наруто", 
                    Answer2="Ван Пис", 
                    Answer3="Блич", 
                    Answer4="Атака титанов", 
                    RightAnswer="Наруто", 
                    FiftyFiftyAnswer1="Наруто", 
                    FiftyFiftyAnswer2="Блич", 
                    Price=20000
                },
                new AfQ { 
                    Number=5, 
                    Question="Как называется этот сериал?", 
                    ImagePath="Images/stranger_things.jpg",
                    Answer1="Во все тяжкие", 
                    Answer2="Игра престолов", 
                    Answer3="Очень странные дела", 
                    Answer4="Шерлок", 
                    RightAnswer="Очень странные дела", 
                    FiftyFiftyAnswer1="Очень странные дела", 
                    FiftyFiftyAnswer2="Игра престолов", 
                    Price=25000
                }
            };
        }
    }
}

<Window x:Class="WpfApp1.GameWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="КИНО-ВИКТОРИНА - Игра" Height="700" Width="1000"
        WindowStartupLocation="CenterScreen"
        FontSize="18" FontWeight="SemiBold">
    <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.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;

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 GameWindow()
        {
            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;
        }
    }
}

<Window x:Class="WpfApp1.EndWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Игра окончена" Height="400" Width="600"
        WindowStartupLocation="CenterScreen">
    <Grid Background="#0D1B2A">
        <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
            <TextBlock Text="ИГРА ОКОНЧЕНА" FontSize="36" FontWeight="Bold" 
                       Foreground="#E0E1DD" Margin="0,0,0,20" TextAlignment="Center"/>
            <TextBlock Name="ResultText" FontSize="28" FontWeight="Bold" 
                       Foreground="#00B4D8" Margin="0,0,0,40" TextAlignment="Center"/>
            <Button Name="BackToMainButton" Content="ВЕРНУТЬСЯ НА ГЛАВНЫЙ ЭКРАН" 
                    Width="300" Height="60" FontSize="18" FontWeight="Bold"
                    Background="#1B263B" Foreground="White" BorderBrush="#415A77"
                    BorderThickness="2" Click="BackToMainButton_Click" Cursor="Hand">
                <Button.Resources>
                    <Style TargetType="Border">
                        <Setter Property="CornerRadius" Value="10"/>
                    </Style>
                </Button.Resources>
            </Button>
        </StackPanel>
    </Grid>
</Window>


using System.Windows;

namespace WpfApp1
{
    public partial class EndWindow : Window
    {
        public EndWindow(int score, int maxScore)
        {
            InitializeComponent();
            ResultText.Text = $"Ваш счёт: {score} из {maxScore}";
        }

        private void BackToMainButton_Click(object sender, RoutedEventArgs e)
        {
            MainWindow mainWindow = new MainWindow();
            mainWindow.Show();
            this.Close();
        }
    }
}