Swift中基于文本的游戏

时间:2016-05-19 14:01:15

标签: ios swift text-based

我对编程非常陌生,而且我正在尝试学习Swift的基础知识。

我为iOS编写了一个非常简单的测验游戏,其中应用程序按顺序移动问题。我想要进入一个简单的文字冒险游戏。首先,我将测验问题更改为您可以完成的方案。但是,我现在想要点击显示的两个按钮中的任何一个,一个按钮会将您移动到一个场景,另一个按钮会转到另一个场景。

下面是我到目前为止的代码,它遵循呈现给用户的场景的简单顺序,其中一个答案允许您继续前进,而一个答案不是。实现所有场景和答案的结构的最佳方式是什么,用户可以通过选择不同场景的不同答案来浏览故事。

import UIKit

struct Scenario {
    var Scenario : String!
    var Answers : [String]!
    var Answer : Int!
}

class ViewController: UIViewController {
    @IBOutlet var actionButton: [UIButton]!
    @IBOutlet var scenarioLabel: UILabel!

    var Scenarios = [Scenario]()
    var sNumber = Int()
    var answerNumber = Int()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        listScenarios()
        pickScenario()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func listScenarios() {

        Scenarios = [Scenario(Scenario: "HELLO? Someone please answer me, I NEED HELP!", Answers: ["Who are you? I can help you.","*** Ignore ***"], Answer: 0),
                     Scenario(Scenario: "That is something I cannot share with you", Answers: ["Why?","I am unwilling to help if you don't share this with me."], Answer: 1),
                     Scenario(Scenario: "I... I... I just can't. You have to understand", Answers: ["Okay, I'll help.","What has happened to you?"], Answer: 0),]

    }

    func pickScenario() {
        if Scenarios.count > 0 {
            sNumber = 0
            scenarioLabel.text = Scenarios[sNumber].Scenario

            answerNumber = Scenarios[sNumber].Answer

            for  i in 0..<actionButton.count {

                actionButton[i].setTitle(Scenarios[sNumber].Answers[i], forState: UIControlState.Normal)

            }

            Scenarios.removeAtIndex(sNumber)
        }
        else {
            NSLog("Done!")
        }
    }

    @IBAction func button1(sender: AnyObject) {
        if answerNumber == 0 {
            pickScenario()
        }
        else{
            NSLog("Wrong!")
        }
    }

    @IBAction func button2(sender: AnyObject) {
        if answerNumber == 1 {
            pickScenario()
        }
        else{
            NSLog("Wrong!")
        }
    }
}

1 个答案:

答案 0 :(得分:0)

由于您希望持久存储对象,因此实际上有很多选项。我在下面列出了一些热门选择供您查看并自行形成意见。请注意,虽然我列出的选项绝不是完整的或者必然是最佳选择,但是我在过去的应用程序中成功使用的选项。

  • Core Data - Apple的原生模型管理框架

  • FMDatabase - 第三方SQLite包装器

  • Realm - SQLite&amp;的第三方替代品核心数据(我个人最喜欢的)

管理和保存对象的方式完全取决于您,并且应该基于您的应用程序的需求和您所熟悉的内容。

您选择显示此数据的UI可以是一系列tableViews,一个图形树层次结构,或者其他一些东西。您可以通过多种方式显示此数据,但这最终是您的决定。