老师分配的项目需要编软件,刚好最近一直在玩手机上的数独,所以就想用空余时间写一个PC上的单机版的数独小游戏,练练自己的编程能力。不能保证每天都有时间花在这个小程序上面,不过会尽量坚持下去,每完成一点东西,都会把核心代码和查到的相关资料发一下,目前还处在语法都没学完的阶段,想借这个机会记录一下自己的成长~
一、UI 设计
1. 用 ComboBox 控件来选择游戏难度;
2. 用 Label 控件显示本局游戏累计用时;
3. 九宫格大背景是一个设置了背景色的 Label 控件;
4. 每个格子都是 Textbox 控件,将其 “Multiline” 属性设置为 “True”,这样就可以调整其高度了(参考链接);开始/暂停/继续/结束游戏时,九宫格 UI 的对应变化如下:
4.1 开始游戏:九宫格显示题目;
4.2 暂停游戏:用一个单独绘制的 Label 盖住题目(hideLabel.Visible = true;);
4.3 继续游戏:隐藏用来覆盖题目的 Label;
4.4 结束游戏:九宫格所有 Textbox 清空。
5. 点击“开始游戏”按钮之后,按钮文字变为“暂停游戏”,之后每次点击此按钮,文字会轮流显示为“继续游戏”和“暂停游戏”,另外还有“停止游戏”按钮。
此处需要根据按钮文字的不同在 button_Click() 事件中调用对应的代码,Resharper 提示将 If…Else If…Else 语句替换为 Switch 语句,突然想到了两种语句哪一个高效的问题,于是在 StackOverflow 上搜到了这么一个讨论帖,根据讨论的内容看,对于判断条件只有三种不同值的情况,不管是用 If 语句还是 Switch 语句都是完全没问题的啦,哈哈。
参考链接:What is quicker, switch on string or elseif on type? (讨论内容非常精彩)
目前的游戏界面: