最近更新时间2018.12.29
写在前面
github链接见上一篇文章。感觉自己的性能可能拼不过各位大佬,所以花了一下午时间赶出来了一个UI界面(大佬们也做了UI界面我就没辙了),目前只完成了开始游戏/重开游戏/判断是否胜利的简易功能。
参考资料
实现过程
首先在VS中建立了一个WPF工程,因为之前写了一个Sudoku类,所以可以直接拿过来用,然后再把之前工程文件Program.cs中的随机函数复制粘贴到了这个工程文件的Program.cs中。
先搭了一个丑丑的界面:
点击开始游戏就可以生成谜题,点击重新来过就重开程序(是的,重开程序)
private void Btn_Start_Click(object sender, EventArgs e)
{
GeneratePuzzles();
GenerateAllButtons();
btn_Start.Enabled = false;
btn_Reset.Enabled = true;
}
private void Btn_Reset_Click(object sender, EventArgs e)
{
Application.Restart();
}
然后,我们先处理数独,我们在加载窗体的时候就可以直接生成一个数独终局:
Sudoku sudoku = new Sudoku();
private void Form1_Load(object sender, EventArgs e)
{
sudoku.GenerateSudokuEnding();
}
然后是挖空,根据要求,每个数独3×3格子中至少要挖掉两个,并且总共会生成[30,60]个空,所以我们要先随机出一个总空白数,然后先让每个3×3小矩阵中挖掉两个空(置0),然后再在整个数独矩阵上随机挖空。