Types Swift:枚举依赖于另一个枚举
我正在制作一个简单的游戏来更好地了解新语言,我制作了描述游戏级别的枚举。我想做另一个枚举,描述每个级别上的敌人。(级别有不同的敌人)。所以,我想归档如下内容:Types Swift:枚举依赖于另一个枚举,types,enums,swift,Types,Enums,Swift,我正在制作一个简单的游戏来更好地了解新语言,我制作了描述游戏级别的枚举。我想做另一个枚举,描述每个级别上的敌人。(级别有不同的敌人)。所以,我想归档如下内容: enum GameLevel : Int { case Forest = 0, Swamp, Castle ... } enum Enemies : Int { // if .Forest than case Stump = 0, Frog // Forest Enemies //esle if
enum GameLevel : Int {
case Forest = 0, Swamp, Castle
...
}
enum Enemies : Int {
// if .Forest than
case Stump = 0, Frog // Forest Enemies
//esle if ...
case Zombie = 0, Witch // Swamp Enemies
case Knight = 0, Archer // Castle Enemies
//var ... some predefined properties that all enemies have but each enemy have it's own values
}
enum GameLevel : Int {
case Forest, Swamp, Castle
}
enum Enemies : Int {
case Stump
case Frog
case Zombie
case Witch
case Knight
case Archer
static func enemiesInLevel(level: GameLevel) -> [Enemies] {
switch level {
case .Forest:
return [Stump, Frog]
case .Castle:
return [Knight, Archer]
default:
return []
}
}
}
// this is how you can call it
let forestEnemies = Enemies.enemiesInLevel(.Forest)
let castleEnemies = Enemies.enemiesInLevel(.Castle)
enum有错误的语法,但我正在寻找一种方法来制作类似的东西。归档此文件的最佳解决方案是什么 您可以编写一个函数,返回给定级别中的所有敌人,如下所示:
enum GameLevel : Int {
case Forest = 0, Swamp, Castle
...
}
enum Enemies : Int {
// if .Forest than
case Stump = 0, Frog // Forest Enemies
//esle if ...
case Zombie = 0, Witch // Swamp Enemies
case Knight = 0, Archer // Castle Enemies
//var ... some predefined properties that all enemies have but each enemy have it's own values
}
enum GameLevel : Int {
case Forest, Swamp, Castle
}
enum Enemies : Int {
case Stump
case Frog
case Zombie
case Witch
case Knight
case Archer
static func enemiesInLevel(level: GameLevel) -> [Enemies] {
switch level {
case .Forest:
return [Stump, Frog]
case .Castle:
return [Knight, Archer]
default:
return []
}
}
}
// this is how you can call it
let forestEnemies = Enemies.enemiesInLevel(.Forest)
let castleEnemies = Enemies.enemiesInLevel(.Castle)
您可以向GameLevel添加实例方法,以列出与GameLevel特定元素相关的所有敌人
enum GameLevel : Int {
case Forest = 0, Swamp, Castle
func enemies() -> Array<Enemy> {
switch self {
case .Forest: return [.Stump, .Frog]
case .Swamp: return [.Zombie, .Witch]
case .Castle: return [.Knight, .Archer]
}
}
enum Enemy : Int {
case Stump = 0, Frog, Zombie, Witch, Knight, Archer
}
let forestLevel = GameLevel.Forest
forestLevel.enemies()
摘自:苹果公司《Swift编程语言》。iBooks
提示:您可以在
enum
@pNre中定义函数,我知道,但我不明白这对我有什么帮助。