revamped sprite blocks, added green block, upgraded random number handling
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 7.7 KiB |
|
@ -9,11 +9,9 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import SpriteKit
|
import SpriteKit
|
||||||
|
|
||||||
let NumberOfColors: UInt32 = 6
|
|
||||||
|
|
||||||
// Colors that may be applied to blocks (whcih controls the sprite image they use)
|
// Colors that may be applied to blocks (whcih controls the sprite image they use)
|
||||||
enum BlockColor: Int, CustomStringConvertible {
|
enum BlockColor: Int, CustomStringConvertible, CaseIterable {
|
||||||
case Blue = 0, Orange, Purple, Red, Teal, Yellow
|
case Blue = 0, Orange, Purple, Red, Teal, Yellow, Green
|
||||||
|
|
||||||
var spriteName: String {
|
var spriteName: String {
|
||||||
switch self {
|
switch self {
|
||||||
|
@ -29,6 +27,8 @@ enum BlockColor: Int, CustomStringConvertible {
|
||||||
return "teal"
|
return "teal"
|
||||||
case .Yellow:
|
case .Yellow:
|
||||||
return "yellow"
|
return "yellow"
|
||||||
|
case .Green:
|
||||||
|
return "green"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ enum BlockColor: Int, CustomStringConvertible {
|
||||||
}
|
}
|
||||||
|
|
||||||
static func random() -> BlockColor {
|
static func random() -> BlockColor {
|
||||||
return BlockColor(rawValue:Int(arc4random_uniform(NumberOfColors)))!
|
return BlockColor.allCases.shuffled().first!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -170,13 +170,13 @@ class GameScene: SKScene {
|
||||||
// Animate the "removed" blocks "exploding"
|
// Animate the "removed" blocks "exploding"
|
||||||
for rowToRemove in linesToRemove {
|
for rowToRemove in linesToRemove {
|
||||||
for block in rowToRemove {
|
for block in rowToRemove {
|
||||||
let randomRadius = CGFloat(UInt(arc4random_uniform(400) + 100))
|
let randomRadius = CGFloat(Float.random(in: 100.0 ... 500.0))
|
||||||
let goLeft = arc4random_uniform(100) % 2 == 0
|
let goLeft = Bool.random()
|
||||||
|
|
||||||
var point = pointForColumn(column: block.column, row: block.row)
|
var point = pointForColumn(column: block.column, row: block.row)
|
||||||
point = CGPoint(x: point.x + (goLeft ? -randomRadius : randomRadius), y: point.y)
|
point = CGPoint(x: point.x + (goLeft ? -randomRadius : randomRadius), y: point.y)
|
||||||
|
|
||||||
let randomDuration = TimeInterval(arc4random_uniform(2)) + 0.5
|
let randomDuration = TimeInterval(Float.random(in: 0.5 ... 2.5))
|
||||||
|
|
||||||
var startAngle = CGFloat(Double.pi)
|
var startAngle = CGFloat(Double.pi)
|
||||||
var endAngle = startAngle * 2
|
var endAngle = startAngle * 2
|
||||||
|
|
|
@ -9,10 +9,10 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import SpriteKit
|
import SpriteKit
|
||||||
|
|
||||||
let NumOrientations: UInt32 = 4
|
//let NumOrientations: UInt32 = 4
|
||||||
|
|
||||||
// Represents the orientation of a shape in increments of 90 degrees
|
// Represents the orientation of a shape in increments of 90 degrees
|
||||||
enum Orientation: Int, CustomStringConvertible {
|
enum Orientation: Int, CustomStringConvertible, CaseIterable {
|
||||||
case Zero = 0, Ninety, OneEighty, TwoSeventy
|
case Zero = 0, Ninety, OneEighty, TwoSeventy
|
||||||
|
|
||||||
var description: String {
|
var description: String {
|
||||||
|
@ -29,7 +29,7 @@ enum Orientation: Int, CustomStringConvertible {
|
||||||
}
|
}
|
||||||
|
|
||||||
static func random() -> Orientation {
|
static func random() -> Orientation {
|
||||||
return Orientation(rawValue:Int(arc4random_uniform(NumOrientations)))!
|
return Orientation.allCases.shuffled().first!
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the orientation resulting from a rotation in either direction.
|
// Returns the orientation resulting from a rotation in either direction.
|
||||||
|
@ -45,7 +45,7 @@ enum Orientation: Int, CustomStringConvertible {
|
||||||
}
|
}
|
||||||
|
|
||||||
// The number of total shape varieties
|
// The number of total shape varieties
|
||||||
let NumShapeTypes: UInt32 = 7
|
let NumShapeTypes = 7
|
||||||
|
|
||||||
// Shape indexes
|
// Shape indexes
|
||||||
let FirstBlockIdx: Int = 0
|
let FirstBlockIdx: Int = 0
|
||||||
|
@ -192,7 +192,7 @@ class Shape: Hashable, CustomStringConvertible {
|
||||||
|
|
||||||
// Generates a random shape.
|
// Generates a random shape.
|
||||||
final class func random(startingColumn: Int, startingRow: Int) -> Shape {
|
final class func random(startingColumn: Int, startingRow: Int) -> Shape {
|
||||||
switch Int(arc4random_uniform(NumShapeTypes)) {
|
switch Int.random(in: 0 ..< NumShapeTypes) {
|
||||||
case 0:
|
case 0:
|
||||||
return SquareShape(column: startingColumn, row: startingRow)
|
return SquareShape(column: startingColumn, row: startingRow)
|
||||||
case 1:
|
case 1:
|
||||||
|
|
Before Width: | Height: | Size: 231 B After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 383 B After Width: | Height: | Size: 7.3 KiB |
BIN
Privyet/Sprites.atlas/green.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
Privyet/Sprites.atlas/green@2x.png
Normal file
After Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 381 B After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 383 B After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 222 B After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 370 B After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 378 B After Width: | Height: | Size: 7.5 KiB |