一、前言

我姥姥是一名退休数学老师,一直很喜欢玩数独游戏。我以前答应过她要给她写一个数独游戏。本来计划是写一个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. 大图轮播js

    <!DOCTYPE html><html> <head>        <meta charset="UTF-8">         ...

  2. 团队项目-第八次scrum 会议

    时间:11.4 时长:30分钟 地点:F楼2层沙发休息处 工作情况 团队成员 已完成任务 待完成任务 解小锐 修复员工招聘时bug 完成员工commit函数的数值函数编写 陈鑫 实现雇佣与解雇功能的界 ...

  3. android ViewGroup getChildDrawingOrder与 isChildrenDrawingOrderEnabled()

    getChildDrawingOrder与 isChildrenDrawingOrderEnabled()是属于ViewGroup的方法.   getChildDrawingOrder 用于 返回当前 ...

  4. zkCli.sh客户端其他命令简介

    quit 退出 connect host:port 连接到其他ZooKeeper服务器 close 关闭连接 history 操作指令历史 redo 重复执行某个指令, 使用格式为 redo  id, ...

  5. Hacking Tools

    Hacking Tools 种各样的黑客工具浩如天上繁星,这也让许多刚刚入门安全技术圈的童鞋感到眼花缭乱,本文整理了常用的安全技术工具,希望能够给你带来帮助.以下大部分工具可以在 GitHub 或 S ...

  6. 【BZOJ1179】[Apio2009]Atm (tarjan+SPFA)

    显而易见的tarjan+spfa...不解释了 ; type edgetype=record toward,next:longint; end; var edge1,edge2:..maxn] of ...

  7. "贪心"的考试

    先来落实比较简单的T3,T4 T3  团结的队伍 team 题目描述 众所周知,长郡信息组是一个团结友爱的优秀团队.为了弘扬团队精神,践行社会主义核心价值观,秉承朴实沉毅的校训,信息组决定外出游玩(. ...

  8. NOIP2012提高组

    D1T1.Vigenère密码 模拟 #include<iostream> #include<cstdio> using namespace std; int main() { ...

  9. Yii操作数据库的3种方法

    一.执行原生太SQL的PDO方式. 复制代码代码如下: $sql = "";//原生态sql语句 xx::model()->dbConnection->createCo ...

  10. 判断dataset是否被修改—DataSet.HasChanges 方法

    DataSet.HasChanges 方法 获取一个值,该值指示 DataSet 是否有更改,包括新增行.已删除的行或已修改的行. 命名空间:   System.Data程序集:  System.Da ...