admin 管理员组

文章数量: 887021

【复盘】

引言:纸牌匹配小游戏是斯坦佛IOS公开课中第一个项目。白胡子老头用这个例子给孩纸们讲解了OC基础MVC设计模式Xcode基础UI控件基础等综合性很强的内容,也用这个例子刷新了好多童鞋对软件开发课程的认知。

希望通过本篇文章,对整个项目进行复盘,以期获得最大的实战收获。


目录

  • 目录
  • 项目内容
    • 项目目的
    • 项目描述
  • 项目分析
    • MVC模式
      • 说明
      • 设计顺序
    • model设计思路
      • 一设计抽象类
      • 二设计具体类
      • 三设计流程控制类
    • view和control设计思路
  • 瞎扯淡


项目内容

项目目的

制作一个运行在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类:一副去掉大小王的牌的牌堆

三、设计流程控制类

按照游戏来想,人需要干什么?缺什么就在这个类里补什么。
  1. 从一副牌里抽12张牌(需要一个可变数组来装这12张牌)
  2. 通过牌的匹配来算分(需要一个计分器)
  3. 不断翻牌(需要程序自动判断翻开牌和其他牌的关系,并进行相应操作(打分、正反面等))

view和control设计思路

  • view就是4*3的button矩阵,外加一个label用来显示分数
  • control的设计方法:想要操纵谁(UI),就要俘获谁(让他成为自己的property);想要响应哪个UI的交互,就要给这个UI做好对应的方法(方法的实现往往丢给model去做,然后更新UI(需要在control中写一个更新UI的方法))

瞎扯淡

嗯嗯、奏是这个样子~
第一次看这视频的时候,OC还没入门,第一节课就被老头儿讲的MVC模式吓坏了= = 再加上我的渣英语,既要对付语言,又要学OC,还要看控件,还要克服沮丧气馁的小心情… …敌人太强大,果断放弃了。
后来OC算是入门了,发现白胡子老头讲的真棒~一点一点把18集公开课吃掉,好想快快做出来自己的APP哈哈~

修身、齐家、治国、平天下,老祖宗们说的真好。晚安~^_^~

本文标签: 复盘