iOS 学习笔记

iOS开发中失败的尝试

2016-01-22  本文已影响81人  黄穆斌

上次我把Quoridor开发出来,到现在是已经上架了。
这期间,我除了不断想各种点子改进Quoridor的Ai以外,也开始做另一个应用——2048。

好吧,这是很简单的App,但是从标题上就可以看出来了,我觉得这次开发是非常失败的。其实早在我学习iOS开发之前,我就已经用VBA了一个2048游戏了。所以在一开始,这个项目只是作为我在Quoridor这个牛角尖上转移注意力,放松自己的小间隙,而且,我所想的更多是如何让它变得更有趣了。

于是,怎么有趣呢?还是按数字的加减实在有点无聊了。所以,我想到了图形的加减。把2048的数字变成这样一个图案。

如果你有那么无聊的去数的话,你会发现这里已经到4096了。是的,我自豪的说,我经常玩到4096,偶尔上9192.

好了。然后,我就开始发现,配色是个大问题。甚至,我开始想,能不能做到这些图形颜色任意改变呢?这样一来,应用就有了更多的扩展性。所以,我下了一个决定,我要全代码绘制这些图形。其实这并不会很难,有PaintCode嘛。

到这里一切都还是好的。虽然这导致我后来连个按钮的图形我都代码绘制(为了,保持,一贯性?),真是自作孽到不行了。

麻烦就麻烦在,我把游戏构建好的时候。忽然在想,我能不能把我以前做的小游戏。比如贪吃蛇这些也塞进去?都用这个符文风格,然后做个菜单,退出来后可以换个符文就换个游戏。做个小游戏大全嘛。

于是,我把自己甩坑里去了。

首先是类命名的问题。

我在一开始开发的时候,这个应用只有一个单界面。所以直接以GameController这样不带有具体对象的名称命名,那么当游戏变成多个的时候,就得不断提醒自己,GameController就是最初的那个游戏啦。简直就好像程序里出现了let seven = 7这样的参数一样让自己恶心。

然后是初始化加载的问题。

假如我有多个游戏,那么在程序刚开始的时候,有没有必要把每个游戏的游戏模型加载下来呢?没有,肯定没有是吧。但是……什么样的加载时机是好的呢?如果把游戏模型的加载放到视图控制器中,那在主菜单我要用到游戏模型当中的进度数据怎么办?如果一开始就全加载了那浪费的内存怎么办?

还有颜色风格问题。

以往我都是把颜色作为全局变量来处理的,这样的好处是,我可以在任何地方设置一个按钮,点一下,就换了一个颜色主题了。
那么现在有多个游戏,都一个色调?其实一个色调也没什么啦。主要是……我那些颜色的命名……我要在一个叫SnakeController的类中用一个叫kMagicCircleColors的颜色么……

其他

问题肯定是不止那么点的啦。包括由于多出来的代码导致原本清晰的文件结构变得凌乱等等……

告诫

当然,最终,我是把这个应用做好了。没有开源主要是因为觉得程序结构和代码太丑,不好意思。

写这篇文,主要是想告诫自己。
1.命名的规范应该要更有指向性以及完整一点,哪怕这个文件被我直接插入另一个App也不会冲突。
2.不要随便给做一半的项目添加需求。尤其是当这个需求几乎与当前项目没有任何关系的时候。(作孽啊,自己给自己当了一回古怪用户。)
3.非必要,还是不要用代码绘制图形了。
4.把全局变量写成单例吧。
5.No zuo no die.

上一篇下一篇

猜你喜欢

热点阅读