不是你想的那样:一个攻击网站的程序

这节课我们来试试开发一个简单的命令行小游戏,来完整的体验一次所谓的“开发过程”。

游戏设定是这样的:

这是一种棋盘类游戏,我们来猜测敌人战舰的位置,只要命中数发就可以击沉它们。

我们给这些战舰贴点标签……比如各种网站吧?所以,这就成了一个攻击网站的程序……捂脸。

游戏目标

我们要玩家以最少的次数攻击网站,把它击垮。然后我们根据玩家的猜测次数来进行评分。

大致设计

我们画一个7*7[……]

点击跳转以继续阅读

计算属性与封装

我们在上课之前,一起来回顾一下以前曾提过的“SoC”的概念,我们说这个叫做“Separation of Concerns”,我把它翻译为责任分离——即不同的部分专注于自己的那一部分。或者说一个对象完成一个目标。

这样做的目标既让代码更加模块化易于维护,也让系统运行效率更高。所以说,我们要让对象之间的通信变得更加规范才行。

数据隐藏

你去看看你在写代码时候用到的那些框架,哪个给你直接展示了[……]

点击跳转以继续阅读

储存器的值与引用

声明一个变量

我们使用 var 来声明一个变量,就好像从柜子里拿出了一个试管放在了实验台上;

我们给变量规定了一个类型,就好像在试管上贴上了标签;

那么放入的试剂就必须是标签上标记了的——否则可能导致中毒或者爆炸。

同样的,如果我们试图给一个储存器放入一个错误的数据类型,那么编译器就会报错——没错总有办法能够骗过编译器——反正我不会教你这个方法,那样就会导致程序崩溃啦。[……]

点击跳转以继续阅读

猜数字游戏:类的对象的区别

上一节课我们第一次领略了 OOP 的风采,于模棱两可的类和对象究竟是什么东西呢?这节课我们用一个简单的小栗子来向你介绍。

尝试解释

我们说类和对象的关系是设计图和产品的关系,就拿我们的房子来说,一栋楼肯定会有对应的设计图,但设计图绝不会只能对应一栋楼,至少一个小区肯定会用一套设计图不是吗?我们的“类”就是这个“设计图”。我们用这个设计图设计了对象的属性、功能等等的一系列内容,然后通过实例化来产[……]

点击跳转以继续阅读

我们的实验环境以及初见 OOP

考虑到有的同学没有 iPhone,但学习 Swift 语言大家至少都会有 OS X 操作系统,我们的代码演示都会在 OS X 下完成,使用 CLI 界面。这样虽然又显得古老了,但相信我去掉 GUI 会让你省心不少——因为那又是另一回事了。

那么现在,让我们来和 OOP 问个好

我们来看看,用 OOP 进行开发到底会是个什么样子?

考虑到我们现在并没有很高的开发水平,那么我们把所有的功能实[……]

点击跳转以继续阅读

如何在 Swift 2.0 中声明一个 抽象类 ?

我们都知道在 Java 中声明一个抽象的类或者方法要使用 abstract 关键字,可是很遗憾熟悉的东西总会逝去,在 Swift 中已经没有了这个标签。

那么,我们究竟要如何来声明一个抽象的类呢?

私有构造器(初始化器)法

这一点倒是让人很熟悉对吧?吧构造器私有了那这个类肯定就不能被初始化了,自然就不能创建对象实例……不过……哪有那么多但是,反正能用就行了!
[crayon-67b77[……]

点击跳转以继续阅读

编程方法学课程大纲

哈哈!又要和大家见面了,这次十奶给大家带来了全新的编程方法学课程

这是之前编程方法学的课程大纲,很庆幸当时做了这么个决定把大纲扔在了这里:)虽然课程结束了,但单独阅读这个大纲也是一个不错的选择,回头我会再此基础上更新它,以适应新的直播版编程方法学~

前言

这次的课程我们Karel 这个著名的小机器人为切入点,通过教 Karel 解决问题这个过程来熟悉编程开发中的思维方法,让你快速[……]

点击跳转以继续阅读

介绍一下 Karel 这个机器人

早在20世纪70年代,斯坦福大学毕业生 Rich Pattis 觉得如果能让编程初学者在一个相对复杂的编程语言来说,比较简单的环境下学习,将有助于编程语言的教学。这个简单的环境由各种编程语言的特征抽象化而来。所以他就设计了这么一个程序环境,让学生教一个机器人来解决简单的问题。这个机器人就是Karel,它是以一个捷克作家 Karel Capek 命名, 他在其1921年的科幻剧R.U.R.(Ross[……]

点击跳转以继续阅读

我自己用 Swift 2 写了个简陋的 Karel Robot

更新啦!

本次更新添加了一个分支,目的在于创建“下一步”功能,另外修复了block白边的难看界面!

目前更能没有任何修改,run.swift文件更加清爽,再也不用双线程啦!

用数组静态化储存Karel的状态,感谢香蕉君!

调节速度的伟大梦想指日可待!?

 

写这个软件总共花了我11个小时,中间坑住无数次。而且到现在我也不知道为什么这样实[……]

点击跳转以继续阅读