iOS Swift数据设计混乱



作为学习Swift/iOS的练习,我已经开始编写一个稍微复杂的冒险棋盘游戏的改编版本。在这个游戏中,玩家通常会得到代表物体的卡片。每一张这样的卡片都有一条与之相关的规则,通常相当简单。这里有100多张独特的卡片。

在制定我的编码设计时,我一直遇到同样的问题,大致如下:

Class ItemCard {
var name: String = “motorcycle”
var cardImage = << filename information for where the card image is >>
<< rule: maxSpeed += 3 >>
}

现在,如果我一张卡一张地做这件事,这很容易,但这也是一个疯狂的代码量,做得非常非常少。绝对暴力的方法。在基地,这并没有好到哪里去:

switch cardName {
case “Motorcycle”:
<< call the motorcycle function >>
case “Boat”:
<< etc. etc. etc. >>
}

显然,我可以抽象一些:所有调整某些类型统计数据的卡都会调用函数adjustStat(nameOfStatAdjusted,byHowMuch)。但在某些地方,我仍然需要有一个扩展的定义,它说作为.mobile实例的对象使用这个函数,这让我回到了带有长代码流的每个项目的暴力列表。

在我看来,必须有一种干净的方法:

  1. 将相关数据放入某种列表文件中,当玩家抽到一张给定的牌时,可以从中专门提取数据,然后当该牌因某种原因退出游戏时取消启动;以及
  2. 为不同种类的卡片、不同类别的物品等提供适当的基类

。。。所有这些都不需要为每一张卡单独使用10+行代码。

我对iOS中的数据结构有什么误解?这是我应该用CoreData或Realm做的事情吗?

为每个单独的卡使用10多行代码

你夸大了。类型的卡可能有用于多条信息(名称、图像、规则等)的插槽,但每个将被一行代码初始化一次。所以,100张卡片意味着100行代码。你只需要输入一次这些行。所以我看不出有什么问题。

你这样看。假设我们的程序需要使用美国50个州的名称,并将其存储为字符串数组。它不会通过魔法知道这些名字。不知何故,我们需要在某个地方构建并提供这些名字的列表。您可以将其编码为构建数组的50行代码,也可以编写一个50行文本文件,让程序读取并循环使用它来构建数组。但无论哪种方式,数据都必须以某种方式进入程序,因此某处有50行。

(当然,如果卡片的特征可以通过某种数学规则生成,那么可以通过循环来减少行数。例如,一副52张的扑克牌包括从1到13的算术序列。)。然而,听起来你的甲板并不容易受到这种影响;它更像是一堆单独定义的牌,比如聚会魔术或塔罗牌。因此,必须在程序的某个位置列出所有详细信息。)

相关内容

  • 没有找到相关文章

最新更新