Initial commit

This commit is contained in:
NightBits
2018-12-19 20:11:50 +01:00
parent 0a3c422be8
commit d6bcf95595
69 changed files with 4395 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
<Window x:Class="SudokuWeek4.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Sudoku="clr-namespace:SudokuWeek4"
Title="Week4 - Sudoku" PreviewKeyDown="mainGrid_PreviewKeyDown" PreviewMouseLeftButtonUp="Window_PreviewMouseLeftButtonUp">
<DockPanel>
<Menu DockPanel.Dock="Top" KeyboardNavigation.DirectionalNavigation="None">
<MenuItem Header="Game">
<MenuItem Header="Enable Sudoku DLL" Click="MenuItem_EnableDLL" />
<MenuItem Header="2x2" Tag="2" Click="MenuItem_ResetBoard" />
<MenuItem Header="3x3" Tag="3" Click="MenuItem_ResetBoard" />
<MenuItem Header="4x4" Tag="4" Click="MenuItem_ResetBoard" />
<MenuItem Header="Enable/Disable CheatMode" Click="MenuItem_CheatMode" />
<MenuItem Header="Save game" Click="MenuItem_Save" />
<MenuItem Header="Load game" Click="MenuItem_Load" />
<MenuItem Header="Quit game" Click="MenuItem_Quit" />
</MenuItem>
<Separator/>
<Separator/>
<MenuItem Header="Hint" Click="MenuItem_Hint" />
<Separator/>
<Separator/>
<MenuItem Header="Lazymode">
<MenuItem Header="Solve (Partially)" Click="MenuItem_SolvePartially" />
<MenuItem Header="Solve (Completely)" Click="MenuItem_Solve" />
</MenuItem>
</Menu>
<Border BorderBrush="Black" BorderThickness="3" Margin="5">
<UniformGrid Name="mainGrid" />
</Border>
</DockPanel>
</Window>

View File

@@ -0,0 +1,95 @@
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System;
using SudokuWeek4.ViewModels;
using System.Windows.Input;
namespace SudokuWeek4
{
public partial class MainWindow : Window
{
private int _boardSize = 3;
private Boolean _cheatMode = false;
private Boolean _sudokuDLL = true;
private MainViewModel _mainViewModel;
public MainWindow()
{
InitializeComponent();
_mainViewModel = new MainViewModel(mainGrid);
Reset(_boardSize);
}
// Reset the gameField
private void Reset(int boardSize) {
_mainViewModel.Reset(boardSize);
}
// Save the game
private void MenuItem_Save(object sender, RoutedEventArgs e)
{
_mainViewModel.Save();
}
// Load the game
private void MenuItem_Load(object sender, RoutedEventArgs e)
{
_mainViewModel.Load();
}
// Reset the gameField
private void MenuItem_ResetBoard(object sender, RoutedEventArgs e)
{
Reset(int.Parse(((MenuItem)sender).Tag.ToString()));
}
// Get a hint
private void MenuItem_Hint(object sender, RoutedEventArgs e)
{
_mainViewModel.ShowHint();
}
// Enable the sudoku DLL
private void MenuItem_EnableDLL(object sender, RoutedEventArgs e)
{
_mainViewModel.EnableDLL(_sudokuDLL =! _sudokuDLL);
}
// Solve the sudoku puzzle
private void MenuItem_Solve(object sender, RoutedEventArgs e)
{
_mainViewModel.SolvePuzzle();
}
// Solve the sudoku puzzle partially
private void MenuItem_SolvePartially(object sender, RoutedEventArgs e)
{
_mainViewModel.SolvePuzzle(2);
}
// Cheat
private void MenuItem_CheatMode(object sender, RoutedEventArgs e)
{
_mainViewModel.Cheat(_cheatMode =! _cheatMode);
}
// Exit the application
private void MenuItem_Quit(object sender, RoutedEventArgs e)
{
Application.Current.Shutdown(1);
}
// This method will check what to do if a key is pressed
private void mainGrid_PreviewKeyDown(object sender, KeyEventArgs key)
{
_mainViewModel.keyPressed(key);
}
private void Window_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs click)
{
_mainViewModel.mouseClicked(sender, click);
}
}
}