2016-07-24 80 views
-1

对于我的第一个应用程序,我正在制作一个游戏,玩家可以在其中改变难度。当他选择一个难度时,一些值必须改变。如何通过Swift中的字符串更改按钮名称?

其中一个值是“maxDynamites”,我使用了两个困难,简单和正常。在轻松,值是3和正常模式值为1

现在,我宣布它如下:

func setDifficulty() 
{ 
    if Difficulty == 0 
    { 
     maxDynamites = dif0MaxDynamites 
     else if Difficulty == 1 
     { 
      maxDynamites = dif1MaxDynamites 
     } 
    } 
} 

这将这样的伎俩,但我计划了很多更要使用的变量和更多的困难。有没有一种方法可以移除dif0MaxDynamites并将其更改为如果难度设置为正常会自动将“0”更改为“1”的东西?我不认为如果所有的时间都是正确的,并且以这种方式我必须复制粘贴我的代码以应付大量的困难......任何帮助都是值得欢迎的。

+1

顺便说一句,这个问题的标题与这个问题有什么关系? – Mattias

回答

0

将您的设置包含在struct中可能会有所帮助;

struct DifficultySettings { 
    static let easyModeSettings = DifficultySettings(maxDynamites: 3, maxHealth: 100, maxShields: 5) 
    static let normalModeSettings = DifficultySettings(maxDynamites: 1, maxHealth: 80, maxShields: 2) 
    static let hardModeSettings = DifficultySettings(maxDynamites: 1, maxHealth: 40, maxShields: 1) 

    let maxDynamites: Int 
    let maxHealth: Int 
    let maxShields: Int 
} 

static变量可以包含所有不同的参数。易于修改等

func setDifficulty(mode: DifficultySettings) { 
    // Setup the game based on settings 
    print("Max dynamites: \(mode.maxDynamites)") 
    print("Max health: \(mode.maxHealth)") 
    print("Max shields: \(mode.maxShields)") 
} 

您可将按钮挂钩喜欢的东西:

func setDifficultyToEasy() { 
    setDifficulty(.easyModeSettings) 
} 

func setDifficultyToNormal() { 
    setDifficulty(.normalModeSettings) 
} 

func setDifficultyToHard() { 
    setDifficulty(.hardModeSettings) 
} 

有了这样的解决方案,可以很容易地添加更多的都困难和游戏参数。

您可以将DifficultySetting传递给您的游戏逻辑,您的游戏逻辑可以使用其中包含的值。

+0

是的!我需要知道的一切:) – Nahaku