admin 管理员组文章数量: 887021
【复盘】
引言:纸牌匹配小游戏是斯坦佛IOS公开课中第一个项目。白胡子老头用这个例子给孩纸们讲解了OC基础、MVC设计模式、Xcode基础、UI控件基础等综合性很强的内容,也用这个例子刷新了好多童鞋对软件开发课程的认知。
希望通过本篇文章,对整个项目进行复盘,以期获得最大的实战收获。
目录
- 目录
- 项目内容
- 项目目的
- 项目描述
- 项目分析
- MVC模式
- 说明
- 设计顺序
- model设计思路
- 一设计抽象类
- 二设计具体类
- 三设计流程控制类
- view和control设计思路
- MVC模式
- 瞎扯淡
项目内容
项目目的
制作一个运行在iphone上的纸牌配对小游戏
项目描述
从一副去掉王的扑克中,随机抽取12张,组成一个4*3的纸牌矩阵,所有纸牌背面朝上
依次翻开任意两张纸牌:
- 每翻一次牌,扣1分
- 两张牌花色数值均不相同,则先翻开的扣下,并减1分
- 两张纸牌数值相同,两张牌均锁定,加4分
- 两张牌花色相同,两张牌均锁定,加2分
- 已翻开且未锁定的牌,可以扣下,该操作不扣分
项目分析
MVC模式
说明
xcode生成的项目模板均默认采用MVC设计模式,即,分别对model、view、control三部分进行程序设计。
- model中写明程序是什么,即写明程序的逻辑(项目描述中的规则就是在model中实现的)通常会新建一个名叫model的group文件夹,并将为实现逻辑而设计的类归入该文件夹中。
- view中放置UI控件
- control用来控制UI、沟通model,让UI按照model的变化而变化,让用户的点击、滑动等操作事件反馈给model
设计顺序
通常情况下,先写model。即使脱离view,model往往也应该是可以独立存在的。
view和control一起写,嗯嗯。
model设计思路
先抽象再具体
一、设计抽象类
- card类:有内容、正反面、是否配对成功(这个属性放在这里个人不太认可)三个属性;有能和其他card比较内容,判断是否相同的方法(API的设计思路,即设计在@interface中)
- deck类:有牌张数的属性,有向牌堆中添加牌、取牌的方法(API)同时,内部还应该有一个可变数组实例变量,可以装下所有的牌
设计类的时候,思考这个类是什么(有什么)、用来干什么,这样就很容易设计好一个类了。如牌:是一种有内容、有正反面的东西,用来和别的牌比较一不一样的。再如牌堆,是用来堆放牌的东西,能堆牌和抽牌
二、设计具体类
- PlayingCard类:(或者可以具体说Puker类)内容具体成了花色、数值
- PlayingCardDeck类:一副去掉大小王的牌的牌堆
三、设计流程控制类
按照游戏来想,人需要干什么?缺什么就在这个类里补什么。
- 从一副牌里抽12张牌(需要一个可变数组来装这12张牌)
- 通过牌的匹配来算分(需要一个计分器)
- 不断翻牌(需要程序自动判断翻开牌和其他牌的关系,并进行相应操作(打分、正反面等))
view和control设计思路
- view就是4*3的button矩阵,外加一个label用来显示分数
- control的设计方法:想要操纵谁(UI),就要俘获谁(让他成为自己的property);想要响应哪个UI的交互,就要给这个UI做好对应的方法(方法的实现往往丢给model去做,然后更新UI(需要在control中写一个更新UI的方法))
瞎扯淡
嗯嗯、奏是这个样子~
第一次看这视频的时候,OC还没入门,第一节课就被老头儿讲的MVC模式吓坏了= = 再加上我的渣英语,既要对付语言,又要学OC,还要看控件,还要克服沮丧气馁的小心情… …敌人太强大,果断放弃了。
后来OC算是入门了,发现白胡子老头讲的真棒~一点一点把18集公开课吃掉,好想快快做出来自己的APP哈哈~
修身、齐家、治国、平天下,老祖宗们说的真好。晚安~^_^~
本文标签: 复盘
版权声明:本文标题:【复盘】 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1730973740h1417026.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论