Я поднял этот вопрос в одном из моих других вопросов, но я работаю над текстовой приключенческой игрой, разработанной для IOS.
Одна из вещей, над которыми я работаю, - это дать кнопке несколько различных функций в определенных обстоятельствах. Я прочитал в нескольких других сообщениях, что я могу достичь этого, используя быстрые заявления, и я несколько преуспел в изменении действия, однако это не правильное действие.
Как показано ниже, большая часть моей истории и то, какие опции игроку предоставлены, хранятся в структуре и могут переключаться с помощью метода PickStory.
func mainStory()
{
Storys =
[Story(Story: "You are walking along a dirt path and come to a cross roads. You see a small shack just off the trail. What do you want to do?", Action: "Heal", North: true, South: true, East: false, West: false, storyProg: true, resultN: "You walk north and see a gate in the distance.", resultS: "Their is nothing to turn back for.", resultE: "", resultW: ""),
Story(Story: "You see a small gate at the end of the dirt path, and their is a gaurd standing infront of the gate.", Action: "Approach", North: true, South: true, East: true, West: true, storyProg: false, resultN: "", resultS: "", resultE: "", resultW: ""),
Story(Story: "You see a small well in the middle of town.", Action: "Attack", North: true, South: true, East: true, West: true, storyProg: false, resultN: "", resultS: "", resultE: "", resultW: "")]
PickStory()
}
func PickStory()
{
if Storys.count > 0
{
storyNum = 0
storyLabel.text = Storys[storyNum].Story
actionButton.setTitle(Storys[storyNum].Action, for: UIControl.State.normal)
adjustButtons(North: Storys[storyNum].North,
South: Storys[storyNum].South,
East: Storys[storyNum].East,
West: Storys[storyNum].West)
Storys.remove(at: storyNum)
}
else
{
NSLog("Done!")
}
}
Теперь, когда текст кнопки «Действие» установлен в методе PickStory, фактические действия изменяются в методе фактической кнопки, который следует после нескольких строк (обратите внимание, что операторы print являются только временными заполнителями для методов, которые будет размещен позже).
@IBAction func actionButton(_ sender: Any)
{
switch Storys[storyNum].Action
{
case "Attack":
print("Attacking")
break
case "Heal":
print("Healing")
break
case "Approach":
print("Approaching")
break
default:
break
}
}
Чтобы подвести итог проблемы, текст изменится на правильное действие, но фактическое действие не изменится.
Мое первоначальное предположение заключалось в том, что поскольку actionButton появляется спустя некоторое время, после метода PickStory, он будет читать следующую статью после удаления индекса. Тем не менее, я не могу добиться прогресса в истории без удаления индексов.