浅显易懂的小实例
- 题目
德玛西亚盖伦在召唤师之峡谷追杀蛮王,如果蛮王开大或者闪现逃跑则不追杀,否则继续追杀
分析:
盖伦类:
特征: 性别(char)、攻击力(int)、血量(int)、护甲(double)
行为: 追杀 --->形参:蛮王类类型 ,返回值类型:String
蛮王类:
特征: 性别(char)、攻击力(int)、血量(int)、护甲(double)
行为: 开大 --->形参:空,返回值类型:boolean
闪现 --->形参:空,返回值类型:boolean
可以简单的用Swift(3.0)实现以上这道题:
-
首先创建一个工程, 除了主类外创建盖伦, 蛮子类
Paste_Image.png
-
在蛮子类中定义如下属性和方法
// 蛮子
import Foundation
class manZi: AnyObject {
// 攻击力 血量 护甲满槽均为100, 性别为字符串形式
var gender : CChar = 98 // 性别: ASCII编码中 97 == a 98 == b 这里b 代表男
var atk : Int = 99 // 攻击力
var blood : Int = 80 // 血量
var armor : Double = 50 // 护甲
func openTrick() -> Bool { // 形参在小括号中为空, 返回值为boolean类型
// print("蛮王开大, 五秒真男人")
return true // true 蛮子开大
}
func flashOut() -> Bool {
// print("蛮王闪现, 五分钟后又是一条好汉") // 假设大招五分钟CD
return true // true 开闪现
}
}
- 在德玛西亚盖伦中定义如下(看好咯! 核心代码):
import Foundation
// 这是盖伦
class gaiLun : AnyObject {
// 攻击力 血量 护甲满槽均为100
var dGender : CChar = 98 // 性别: ASCII编码中 97 == a, 98 == b 这里b=>代表男
var dAtk : Int = 100 // 攻击力
var dBlood : Int = 100 // 血量
var dArmor : Double = 100 // 护甲
func dChase(_ manziFuncName:()->Bool) -> String { // 当函数作为形参(参数)==>函数式编程, 返回值为String类型
return "蛮子\(manziFuncName() ? "开大了":"闪现了"), 盖伦\(manziFuncName() ? "停止追杀":"继续追杀")" // 这里盖伦追不追杀蛮子取决于蛮子执行方法没(manziFuncName)
}
}
- 在玩家类(主类)中实现它们俩:
// 玩家类
import Foundation
// 函数式编程
let gailun = gaiLun() // 盖伦
let manzi = manZi() // 蛮子
let result = gailun.dChase(manzi.openTrick) // 函数作为形参, 这里会自动做类型推导, dChase方法返回的是String类型, 所以 result 是 String 类型
print("结果 == \(result)")
print("蛮子属性:性别=\(String.init(format: "%c", manzi.gender)), 血量=\(manzi.blood), 攻击力=\(manzi.atk), 护甲=\(manzi.armor)")
-
最后, 看结果吧, 重在理解
网友评论