In meinem Projekt versuche ich im Grunde, ein zufällig generiertes Labyrinth mit zufälligen Ein- und Ausgängen zu erstellen. Ich habe drei Klassen (eine Maze-Klasse, eine GameScene-Klasse und eine Grid-Klasse). Bislang konnte ich erfolgreich ein zufällig generiertes Labyrinth codieren.Wie man ein Farbsprite zu einer bestimmten Position ruft (Swift 3)
Mein Problem ist jedoch, dass die Maze-Klasse (wo der zufällige Generierungscode stattfindet) rein die Daten für das Labyrinth enthält, aber keine aktuelle Verbindung zu den Grafiken. Wenn ich meine App starte, erscheint ein leerer Bildschirm.
Was ich versuche (aber bin mir nicht sicher, wie) zu tun ist im Grunde eine Linie (aka eine schwarze Farbe Sprite in einer Linie geformt) an der Stelle, wo die Labyrinthwand ist.
So funktioniert mein Labyrinth, dass es ein Gitter (Array) ist, in dem die "Wände" jeder Zelle (oben, unten, links oder rechts) als wahr oder falsch definiert sind. Wenn die Zellwand falsch ist, dann gibt es dort keine Labyrinthwand; aber wenn es wahr ist, dann gibt es dort eine Labyrinthwand. Der Zustand jeder Wand, die zufällig erzeugt wird, erzeugt das Labyrinth.
Ich war in der Lage, den Code zu dem Farb Sprite namens "mazeWall" innerhalb der GameScene Klasse (mit diesem Code :)
var mazeWall: SKNode!
[...]
mazeWall = self.childNode(withName: "mazeWall")
Auch zu verbinden, Ich konnte mit diesem Code auf die Daten der Maze-Klasse innerhalb der GameScene-Klasse zugreifen, um ein Objekt der Maze-Klasse zu erstellen:
Ich bin mir jedoch nicht sicher, wie ich das Farbsprite an die Position der wahren Wände auf dem Gitter rufe.
Dies ist der Code, den ich in der GameScene Klasse zu haben versucht, auf Daten zuzugreifen Maze-Klasse und eine Schleife durch die Zellen des Labyrinths und überprüfen, welche Wände erfüllt sind:
class GameScene: SKScene {
var mazeWall: SKNode!
var maze = Maze()
var backgroundColorCustom = UIColor(red: 255, green: 244, blue: 231,
alpha: 4.0)
override func didMove(to view: SKView) {
/* Set reference to obstacle layer node */
mazeWall = self.childNode(withName: "mazeWall")
//going through each cell and checking if it is true in order to place a wall
for x in 0..<self.maze.gridSize{
for y in 0..<self.maze.gridSize{
if (self.maze.down[x,y]) == true {
//code
}
if (self.maze.up[x,y]) == true {
//code
}
if (self.maze.left[x,y]) == true{
//code
}
if (self.maze.right[x,y]) == true {
//code
}
}//end of y forloop
}//end of x for loop
}//end of func didMove
}//end of GameScene class
Bitte lassen Sie mich wissen, wie kann ich rufe das Labyrinth-Sprite an die Position der "wahren" Labyrinthwände innerhalb des Labyrinths. Auch lassen Sie mich wissen, wenn Sie mich brauchen, um mehr meines Codes (meine Labyrinthklasse, die Gitterklasse, Labyrinthgeneration, usw.) zu enthalten ...
Vielen Dank im Voraus!
Wenn Sie einen Link zu einem Github oder Dropbox Ihres Beispielprojekts einfügen könnten, wäre das hilfreich! – Fluidity
Ich würde mit Ihrem Spielmodus Scenesize auf .aspectFit eingestellt werden. und legen Sie die Szenengröße in Ihrer SKS-Datei auf die Größe Ihrer Karte fest. Auf diese Weise 1 Punkt (Pixel) = 1 Kartenposition. Dann erstelle ein Farb-Sprite von 1 Punkt und setze es an deiner Kartenposition – Knight0fDragon