三子棋小游戏

写在开头:

本人初入iOS,想借此系列的文章记录自己的学习过程,同时也和大家分享一些学习心得,作为一个刚学编程的新人,想自己写一个小app或者小游戏可能是一件比较困难的事情,于是乎我就尝试用自己所学的有限的知识能不能做几个小应用,哪怕非常简单的也不要紧,整个尝试的过程非常有趣,如果你和我同为新人,那么一起来学习讨论吧!


文章底部有下载链接

先上游戏展示:

三子棋小游戏_第1张图片


所用知识:OC基础知识以及UI基础控件的使用,如UIButton UILabel 等等


各位观众老爷大家好,这是鄙人的第二篇文章,其实应该是一篇的,由于发第一篇文章的时候正写2048写的起劲,于是乎第一篇讨论其了如何做2048这个小游戏,但是毕竟我们的主题是萌新的成长史,不可能一个初学者一上来第一个程序就写2048,所以,今天我就和大家聊聊我本菜鸡的第一个iOS小程序,进入本期主题

三子棋


三子棋小游戏_第2张图片

话说我都不知道这个游戏究竟应该叫什么名字,规则就是三个棋子的五子棋,上一下游戏画面大家立马就懂了

请大家先无视我给起的如此邪恶的游戏名字。。。

游戏规则就是三个O或者三个X连成一条直线就可以获得游戏胜利,不管横着还是斜着,如果格子填满了还为分胜负则为平局

接下来说下游戏的开发思路



1. 用什么控件来表示图上能看的到的东西


本菜采用的是游戏的9个格子用9个按钮表示,因为玩的过程中要点击才有变化,所以我只想到了按钮,有人可能要问,这些边框和O X之类的图片怎么来的,呃。。都是本菜自己用画图工具画的,就画了三张好像。。

三子棋小游戏_第3张图片

就是如图的这么三个简单的小图片,我画的都是正方形的哦,为了不影响美观

RESTART当然是一个按钮,下面的游戏名字则是一个Label

胜利的提示信息大家先忽略吧,大家可以先用一些简单控件代替。



2. 点击按钮后的按钮背景图片变化


首先设置一个BOOL类型的属性,比如

@property (nonatomic, assign) BOOL isO;

每次点击的方法里先让 isO的属性取反

self.isO = ! self.isO;

这样确保每一次点击isO的值都不一样,然后就可以根据每次的值给按钮设置背景图了

别放了点击之后让按钮的enable属性成为NO。

因为xcode默认会设置按钮highlighted时的颜色,所以注意调整disable状态的背景图和原来一样,这样就不至于点完之后图片颜色发生变化了 



3. 如何判断胜平负


这里我深深的感觉到自己菜就写不出精简的代码的道理,这一块我自己看自己写的代码都觉得肯定可以得到优化,但谁让我现在菜呢,不知道更好的办法,不过没关系,等我学到的时候我也会会的,现在我就用最笨的方法完成游戏的功能。

刚开始学习的时候,老师告诉我每个控件都有自己的tag值,我就想我能不能通过tag值进行判断呢,于是乎我就让九个按钮的tag值依次等于1到9,但是我还是一直想不出简单的方法可以通过tag值判断胜利条件,直到我灵机一动。。。。


每当你点击了哪个按钮之后,如果它为O ,就让它的tag值加100,如果为X就加1000;

然后设置八个变量,分别等于每种胜利所需要的三个按钮的tag值的和,不知道这么说大家能听懂不

三子棋小游戏_第4张图片

这里我贴一些我写的代码吧。。如果某一个的和在300和1000之间,那么O胜利,如果超过了3000那么X胜利

数值当然不用一定设置成我这个样子,我当时就是随便一想,然后就随便一写,然后确实能成功。。。

这里要说下平局的情况的判断,我的方法是设置一个count = 0;

每一次点击让它加1,如果count = 9,而且又没有哪一方获胜的话,就提示为平局



4. 重新开始按钮


把按钮的属性设成初始的时候就可以了,别忘了把enable属性改成YES


好像已经说完了,虽然说我完成了最后的功能,但是不得不说看着自己写的一堆重复又蹩脚的代码真的很是蛋疼,所以说当一只菜鸟并非长久之计啊,得变得更强才行。

如果你和我一样,同为一个喜欢自己写东西的萌新,热烈欢迎过来留言讨论,大家一起交流进步。


附上游戏下载地址  点这里下载   密码 abcf

你可能感兴趣的:(三子棋小游戏)