Загрузка данных
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();
}
}
}