SWIFT erste Schritte - schnell

ich habe ein klasse Master was einen Spieler in meinem Spiel darstellt.

Ich muss meinem Rechner eine berechnete Eigenschaft isAlive hinzufügen Master Objekt basierend auf den Lebenspunkten des Spielers, wodurch ich feststellen kann, ob der Spieler tot oder lebendig ist.

Ich brauche auch ein Array mit 10 Spielern mit unterschiedlichen HP-Punkten.

Als Nächstes muss das Array nur nach noch lebenden Spielern gefiltert werden. Der letzte Schritt besteht darin, das resultierende Array zuzuordnen und diese Tabelle als Liste anzuzeigen.

Import Foundation


class Master {
let playerName : String = ""
let hp : Int = 0
var isAlive : Bool {
get{ return hp >0
}
}
let avatar : String? = nil
init (playerName: String, hp: Int, isAlive: Bool, avatar: String? = nil ) {
self.playerName = playerName
self.hp = hp
self.isAlive = isAlive
self.avatar = avatar
}
extension Master: CustomStringConvertible {
var description: String() {
if(avatar.isEmpty){
return name + " - (" + isAlive + " / " + hp + ") - Nie posada
awatara"
}else{
return name + " - (" + isAlive + " / " + hp + ") - Posiada awatar"
}
}

}

}
class MasterViewController: UIViewController {

var masters = [Master]()

override func viewDidLoad() {
super.viewDidLoad()


(0..<10).forEach { masters.append(Master(playerName: "q"+$0, hp: 12 +
$0,
avatar: nil)
(playerName: "w"+$1, hp: 12 +
$1,
avatar: nil)
(playerName: "e"+$2, hp: 12 +
$2,
avatar: nil)
(playerName: "qw"+$3, hp: 12 +
$3,
avatar: nil)
(playerName: "we"+$4, hp: 12 +
$4,
avatar: nil)
(playerName: "2"+$5, hp: 12 +
$5,
avatar: nil))}


let aliveMasters = masters.filter { $0.isAlive }


let mappedMasters: [String] = masters.map { $0.playerName }
print("Alive Masters are : (mappedMasters)")

}

}

Antworten:

1 für die Antwort № 1

Die berechnete Eigenschaft ist einfach eine Möglichkeit, den Zugriff auf eine Eigenschaft zu steuern. Sie können Folgendes ändern:

let isAlive : Bool

zu:

var isAlive: Bool {
get {
return hp > 0
}
}

Entfernen Sie auch alle isAlive-Schritte von init (_ :). Behalten Sie die berechnete Eigenschaft bei.

Dann von einem anderen Ansichtscontroller aus, der Ihr Modell verwendet:

class MasterViewController: UIViewController {

var masters = [Master]()

override func viewDidLoad() {
super.viewDidLoad()

// add array with 10 players with hp points
masters.append(Master(playerName: "John Doe", hp: 100, avatar: nil))
masters.append(Master(playerName: "Jack Jones", hp: 50, avatar: nil))
masters.append(Master(playerName: "Susan Scott", hp: 150, avatar: nil))
// Add any masters here ...
// Another way of doing it : (0..<10).forEach { masters.append(Master(playerName: ""+$0, hp: 12 + $0, avatar: nil)) }

// filter array to return alive players
let aliveMasters = masters.filter { $0.isAlive }

// map the resulenter code hereting array and display this table as a list.
// Here aliveMasters is already an array of Masters, map is used to "transform" data
let mappedMasters: [String] = masters.map { $0.playerName }
print("Alive Masters are : (mappedMasters)")

}

}