//方法
enum 怪物经验对应表: Int {
case 鸡 = 20,鹿 = 40,钉耙猫 =50,半兽人 = 80,森林雪人 = 135,骷髅 = 250,骷髅精灵 = 800,白野猪 = 2500,沃玛教主 = 4000,赤月恶魔 = 5000
}
struct 服务器经验倍数 {
var 开启 = false
var 倍数 = 0
}
//方法
class 人民币玩家 {
var 经验值 = 0
var 服倍数 = 服务器经验倍数()
func 挂机经验() {
经验值 += 200
}
func 打怪经验(#怪物经验值: Int,经验倍数: Int) {
经验值 += (怪物经验值 * 经验倍数)
if 服倍数.开启 && 服倍数.倍数 > 1 {
经验值 *= self.服倍数.倍数
}
}
}
var 法神 = 人民币玩家()
法神.挂机经验()
法神.服倍数.开启 = true
法神.服倍数.倍数 = 2
法神.打怪经验(怪物经验值: 怪物经验对应表.沃玛教主.toRaw(),经验倍数: 3)
类中的方法可以更改属性的值
结构体中的方法不能更改属性
struct 坐标 {
var x = 0,y = 0
mutating func 安全区坐标(横坐标: Int,纵坐标: Int) { //加上mutating,说明这是一个突变的方法,此时可以更改属性。如果不加mutating则会报错。
self.x = 横坐标
self.y = 纵坐标
}
func 安全区坐标(横坐标: Int,纵坐标: Int) {
self = 坐标(x: 横坐标,y: 纵坐标)
}
}
var 某坐标 = 坐标(x: 0,y: 0)
某坐标.安全区坐标(500,纵坐标: 500) //swift中把函数或结构体方法的第一个参数默认不设为外部参数,第一个参数后面的参数都默认以外部参数写出来。
//类方法,结构体方法 struct 复活 { static var hp = 0 static func 复活点(#死亡省: String) -> String { return 死亡省 + “安全区” } } class 玩家 { var 姓名 = “” var HP = 0 var 当前所在省 = “” init (姓名: String,HP: Int,当前所在省: String) { self.姓名 = 姓名 self.HP = HP self.当前所在省 = 当前所在省 } func 复活回安全区() { if HP == 0 { println(“您在(复活.复活点(死亡省: 当前所在省))复活!”) } } } var 菜鸟 = 玩家(姓名: “菜鸟2015”,HP: 200,当前所在省: “比奇省”) 菜鸟.当前所在省 = “盟重省” 菜鸟.HP = 0 菜鸟.复活回安全区()