【发布时间】:2015-11-13 07:01:29
【问题描述】:
我很欣赏这不是 Swift 特有的,但我正在用 Swift 编写一个小游戏,因此我用相关的标签对其进行了标记。我是 Swift 语言的新手,但很快就学会了,虽然对一般编程并不陌生,但我经常质疑我的方法。
这是我的场景:
我正在编写一个带有玩家角色和各种障碍的小型 2D 平台游戏。玩家可以拥有不同的纹理,但通常具有相同的能力,例如跳跃和冲刺。同样,障碍物通常具有不同的纹理,但在其他方面具有相同的功能。
角色和障碍物也有共同的能力,但不是全部,例如障碍物不能跳跃。考虑到这一点,这就是我编写课程的方式...
class GameObject {
let node : SKSpriteNode!
}
Class GameObstacle: GameObject {
init() {
super.init()
}
func explode() {
// explode code
}
}
class GameCharacter: GameObject {
init() {
super.init()
}
func jump() {
// jump code
}
}
class GameCharacter_Sheep : GameCharacter {
init() {
super.init()
self.node = SKSpriteNode(namedFile: "sheep")
}
}
我的这种方法背后的逻辑是,所有常见的对象功能都包含在 GameObject 类中,所有常见的角色功能(例如跳跃)都包含在角色类和独特的东西中,在类级别.
我有一个问题,在我的 GameCharacter_Sheep 类中初始化我的节点(在我的 GameObject 类中定义)是否正确?我的理由是,因为纹理和物理体会因角色而异,所以这是执行实现的正确位置?
再次感谢这可能是基本的 OOP 而不是真正特定于 Swift 的,但我只是在寻找一些指导。
非常感谢, 乔恩
【问题讨论】: