一、前言
我姥姥是一名退休數學老師,一直很喜歡玩數獨游戲。我以前答應過她要給她寫一個數獨游戲。本來計划是寫一個Android應用的,但恰好我學了好長時間iOS開發一直沒做什么“大項目”練手,並且小姨給姥姥買了一個iPad玩。於是計划利用寒假過年的前五天,給姥姥用Swift寫一個iPad上的數獨游戲。現在(2月24日)游戲已經基本完成,於是記錄下編寫的思路、設計過程以及遇到的問題等。
二、需求分析
我的初步想法是做一個SingleView的應用足矣,但后來仔細分析加上我姥姥的要求,才發現沒有那么簡單。分類總結用到的知識點如下:
1、第一個界面是選關的界面
1)需要UITableView以及相應數據代理、協議的實現
2)讀取plist文件並轉化成模型
3)在單元格點擊后進入數獨游戲,涉及到把數據經segue在UIViewController間傳遞
4)記錄某一關卡是否通過需要用到NSUserDefaults的存檔記錄功能
2、其次是游戲的界面
包括9*9的數獨格子還有填數的按鈕,以及填標記(就是說我這個地方不確定填哪個數,我都先標記上供參考)按鈕
標記功能效果如圖所示
1)數獨格子的建模
(1)繪制數獨格子要考慮到標記功能
所以要在每個格子內預先塞入9個標記數字,僅數獨格子算下來就有9*9*9=729個格子且存在大量嵌套(這導致我在操作Storyboard時每一個修改都要等待至少20s)
(2)數獨格子內部的Tag標記
為了方便編程時獲取相應格子的View,需要把每個格子打上Tag
(3)數獨格子的初始化
模型初始化包括背景色、填數操作 和 邊框粗細的調整
2)“選數視圖”與“選標記視圖”以及“其他按鈕”的建模
3)填數的游戲游戲規則的實現
(1)判斷一個格子能填什么數
(2)判斷游戲是否成功結束
3、看答案界面
1)接收上個界面傳來的答案
2)顯示答案
4、其他
1)生成數獨關卡
(1)生成有解的數獨,如果有多解至多顯示兩個解就好(挖空數從挖40個空開始,最后挖到了60多個空)
(2)輸出成符合規范的plist文件
2)界面的美化
3)有待補充……