一、前言

我姥姥是一名退休数学老师,一直很喜欢玩数独游戏。我以前答应过她要给她写一个数独游戏。本来计划是写一个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)有待补充……

 

接下来的文章我会按照顺序逐步总结具体的开发过程与经验

iOS开发 Swift开发数独游戏(一)的更多相关文章

  1. iOS开发 Swift开发数独游戏(四) 游戏界面的界面与逻辑

    一.游戏界面涉及到的功能点 1)数独格子的建模 (1)绘制数独格子要考虑到标记功能 所以要在每个格子内预先塞入9个标记数字,仅数独格子算下来就有9*9*9=729个格子且存在大量嵌套(这导致我在操作S ...

  2. iOS开发 Swift开发数独游戏(三) 选关界面

    一.选关界面涉及到的功能点 1)需要UITableView以及相应数据代理.协议的实现 2)读取plist文件并转化成模型 3)在单元格点击后进入数独游戏,涉及到把数据经segue在UIViewCon ...

  3. iOS开发 Swift开发数独游戏(五)显示游戏答案

          要点是设置好Tag就好,通过代码找到并初始化即可. 1: // 2: // ShowAnswerController.swift 3: // sudoku-v02 4: // 5: // ...

  4. iOS开发 Swift开发数独游戏(二)数独题目的生成

    一.Plist文件结构设计 由于要预先生成数独题目的文件,我自然而然想到用plist存取. 我用Xcode建了几个plist文件来熟悉这种文件使用的结构后设计了如下结构: 为区分难度(后来了解到挖空数 ...

  5. iOS、swift、React Native学习常用的社区、论坛

    <!----iOS> <!----Swift>*IOS开发常用社区:http://code4app.com/ *IOS开发常用社区:http://www.cocoachina. ...

  6. iOS开发Swift篇—(一)简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  7. iOS开发Swift篇—简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  8. iOS开发——swift精讲&MVC应用实战

    MVC应用实战 iOS开发中设计模式是很重要的,其中,使用最多的就是MVC模式,今天就简单介绍一下在Swift中这么使用MVC模式来实现我们想要的功能: 模型-视图-控制器(Model-View-Co ...

  9. 李洪强iOS开发Swift篇—01_简单介绍

    李洪强iOS开发Swift篇—01_简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objec ...

随机推荐

  1. solr集群搭建(复制)

    Solr集群的搭建以及使用(内涵zookeeper集群的搭建指南) 1   什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引 ...

  2. URAL 1934 spfa算法

    D - Black Spot Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Subm ...

  3. canvas 基础

    1.<canvas>元素 <canvas id="tutorial" width="150" height="150"&g ...

  4. BZOJ 1483:[HNOI2009]梦幻布丁(链表+启发式合并)

    [HNOI2009]梦幻布丁 Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一 ...

  5. 【bzoj4870】[Shoi2017]组合数问题 dp+快速幂/矩阵乘法

    题目描述 输入 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 输出 一行一个整数 ...

  6. hihoCoder 1403 后缀数组一·重复旋律(后缀数组+单调队列)

    #1403 : 后缀数组一·重复旋律 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成 ...

  7. [Codeforces Round #516 (Div. 2, by Moscow Team Olympiad) ](A~E)

    A: 题目大意:给你$a,b,c$三条边,可以给任意的边加任意的长度,求最少共加多少长度使得可以构成三角形 题解:排个序,若可以组成,输出$0$,否则输出$c-a-b+1(设a\leqslant b\ ...

  8. [AT2698] Don't Be a Subsequence

    题目大意:给定一个字符串,求一个最短的串要求没有在该字符串的子串中出现过,如果有多个,输出字典序最小的那一个. 题解:倒着跑一遍原字符串(以下编号为$1\sim n$),按出现了所有$26$个字母来分 ...

  9. linux进程——后台运行的方法

    linux进程后台运行的几种方法: 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败. 如何让命 ...

  10. 【BZOJ 4057 Kingdoms】

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 450  Solved: 187[Submit][Status][Discuss] Descriptio ...