using Memory.Data; using Memory.Logic; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace Memory.Gui { public partial class MainWindow : Window { private Game? game; public MainWindow() { InitializeComponent(); CreateGrid(); } private void StartGame(object sender, RoutedEventArgs args) { game = new(new ScoreHandler()); StartScreen.Visibility = Visibility.Hidden; FinishScreen.Visibility = Visibility.Hidden; GameScreen.Visibility = Visibility.Visible; Redraw(); } private void FinishGame() { GameScreen.Visibility = Visibility.Hidden; FinishScreen.Visibility = Visibility.Visible; } private void CreateGrid() { int columns = Game.GRIDSIZE; int rows = Game.DECKSIZE * 2 / Game.GRIDSIZE; for (int i = 0; i < columns; i++) { ColumnDefinition colDef = new() { Width = new(1, GridUnitType.Star) }; GameScreen.ColumnDefinitions.Add(colDef); } for (int i = 0; i < rows; i++) { RowDefinition rowDef = new() { Height = new(1, GridUnitType.Star) }; GameScreen.RowDefinitions.Add(rowDef); } } private void Redraw() { GameScreen.Children.Clear(); for (int i = 0; i < game.Cards.Count; i++) { Card card = game.Cards[i]; if (!card.Completed) { Button button = new() { Content = card.Selected() ? card.ID : null, FontSize = 30, Background = new SolidColorBrush(card.Selected() ? Color.FromRgb(0, 255, 0) : Color.FromRgb(255, 0, 0)) }; Grid.SetColumn(button, i % Game.GRIDSIZE); Grid.SetRow(button, i / Game.GRIDSIZE); button.Click += (object sender, RoutedEventArgs args) => { game.ClickCard(card); if (!game.IsFinished()) { Redraw(); } else { FinishGame(); } }; GameScreen.Children.Add(button); } } } } }