Skip to content

Commit b66f055

Browse files
committed
Tired to get good point, so i use random
1 parent 623f8da commit b66f055

File tree

4 files changed

+36
-40
lines changed

4 files changed

+36
-40
lines changed

SnakeGame/GameFieldView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ class GameFieldView: UIView {
3838
}
3939

4040
segmentView = segmentViews[i]
41-
42-
segmentView.frame = segment.segmentRect()
41+
42+
segmentView.frame = segment.rect()
4343
segmentView.backgroundColor = segment.color
4444
}
4545
}

SnakeGame/GameModel.swift

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,17 @@ class GameBrain {
3737

3838
private var screen: CGSize!
3939

40-
private var insets: CGPoint!{
40+
private var fRect: CGRect!{
4141
get{
42-
let horizontal = (screen.width % side) / 2
42+
let x = (screen.width % side)
4343

44-
let vertical = (screen.height % side) / 2
44+
let y = (screen.height % side)
4545

46-
return CGPoint(x: horizontal, y: vertical)
46+
let width = screen.width - x
47+
48+
let height = screen.height - y
49+
50+
return CGRect(x: x/2, y: y/2, width: width, height: height)
4751
}
4852
}
4953

@@ -57,62 +61,54 @@ class GameBrain {
5761

5862
bordersArray.append(border)
5963
}
60-
6164
return bordersArray
6265
}
6366
}
6467

6568
private func createBorders(){
66-
67-
let width = screen.width - insets.x * 2
68-
69-
let height = screen.height - insets.y * 2
7069

71-
let leftBorder = CGRect(x: insets.x, y: insets.y, width: side, height: height)
70+
let leftBorder = CGRect(x: fRect.origin.x, y: fRect.origin.y, width: side, height: fRect.height)
7271

7372
bordersDictonary["Left"] = leftBorder
7473

75-
let rightBorder = CGRect(x: screen.width - insets.x - side, y: insets.y, width: side, height: height)
74+
let rightBorder = CGRect(x: screen.width - fRect.origin.x - side, y: fRect.origin.y, width: side, height: fRect.height)
7675

7776
bordersDictonary["Right"] = rightBorder
7877

79-
let topBorder = CGRect(x: side + insets.x, y: insets.y, width: width, height: side)
78+
let topBorder = CGRect(x: side + fRect.origin.x, y: fRect.origin.y, width: fRect.width, height: side)
8079

8180
bordersDictonary["Top"] = topBorder
8281

83-
let botBorder = CGRect(x: side + insets.x, y: screen.height - insets.y - side, width: width, height: side)
82+
let botBorder = CGRect(x: side + fRect.origin.x, y: screen.height - fRect.origin.y - side, width: fRect.width, height: side)
8483

85-
bordersDictonary["Bot"] = botBorder
84+
bordersDictonary["Bot"] = botBorder
85+
86+
print(bordersDictonary)
8687
}
8788

8889
var segments: [GameSegment]!
8990

90-
private func createRandomSegment(){
91+
private func randomPoint() -> CGPoint {
9192

92-
let side32 = side.convertToUInt32()
93+
let side32 = side.toUInt32()
9394

94-
let width32 = screen.width.convertToUInt32()
95+
let width32 = (fRect.width - side * 2).toUInt32()
9596

96-
let height32 = screen.height.convertToUInt32()
97+
let height32 = (fRect.height - side * 2).toUInt32()
9798

98-
let randomMultiX = arc4random_uniform(width32 / side32 - side32)
99+
let randomMultiX = arc4random_uniform(width32 / side32 - side.toUInt32())
99100

100-
let randomMultiY = arc4random_uniform(height32 / side32 - side32)
101+
let randomMultiY = arc4random_uniform(height32 / side32 - side.toUInt32())
101102

102-
let newX: CGFloat = CGFloat(randomMultiX) * side
103-
let newY: CGFloat! = CGFloat(randomMultiY) * side
103+
let newX: CGFloat = CGFloat(randomMultiX) * side + fRect.origin.x
104+
let newY: CGFloat! = CGFloat(randomMultiY) * side + fRect.origin.y
104105

105-
let newPoint = CGPoint(x: newX, y: newY)
106-
107-
let newSegment = GameSegment(point: newPoint, isEaten: false, side: side)
108-
segments.append(newSegment)
109-
110-
print(newPoint)
106+
return CGPoint(x: newX, y: newY)
111107
}
112108

113109
private var direction: (CGPoint)!
114110

115-
func setDefaultPosition(defaultPosition: CGPoint, viewSize: CGSize){
111+
func setDefaults(viewSize: CGSize){
116112

117113
//prepareView
118114
bordersDictonary = [:]
@@ -122,8 +118,7 @@ class GameBrain {
122118
//prepare segments
123119
segments = []
124120
//main default point for the head
125-
headPoint.x = defaultPosition.x
126-
headPoint.y = defaultPosition.y
121+
headPoint = randomPoint()
127122

128123
//setting default direction
129124
setDirection("Up")
@@ -133,7 +128,8 @@ class GameBrain {
133128
segments.append(headSegment)
134129

135130
//create segment to eat
136-
createRandomSegment()
131+
let newSegment = GameSegment(point: randomPoint(), isEaten: false, side: side)
132+
segments.append(newSegment)
137133
}
138134

139135
func updateHead(){
@@ -153,9 +149,9 @@ class GameBrain {
153149
}
154150

155151
private func checkFood(){
156-
let headRect = segments[0].segmentRect()
152+
let headRect = segments[0].rect()
157153

158-
let redSegment = segments[1].segmentRect()//just check, can make an error
154+
let redSegment = segments[1].rect()//just check, can make an error
159155

160156
let isEaten = CGRectIntersectsRect(headRect, redSegment)
161157

@@ -167,7 +163,7 @@ class GameBrain {
167163

168164
extension CGFloat{
169165

170-
func convertToUInt32() -> UInt32 {
166+
func toUInt32() -> UInt32 {
171167
return UInt32(self)
172168
}
173169
}

SnakeGame/GameViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class GameViewController: UIViewController {
3939

4040
extension GameViewController: DidDrawDelegate{
4141
func viewDidDraw() {
42-
brain.setDefaultPosition(view.center, viewSize: gameFieldView.correctSize)
42+
brain.setDefaults(gameFieldView.correctSize)
4343
gameFieldView.renderBorders(brain.borders)
4444

4545
NSTimer.scheduledTimerWithTimeInterval(1.00, target: self, selector: #selector(movePoint), userInfo: nil, repeats: true)

SnakeGame/Snake.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ class GameSegment {
3030
return isEaten == true ? UIColor.greenColor() : UIColor.redColor()
3131
}
3232

33-
func segmentRect() -> CGRect {
33+
func rect() -> CGRect {
3434

35-
return CGRect(x: point.x + side / 2, y: point.y + side / 2, width: side, height: side)
35+
return CGRect(x: point.x, y: point.y, width: side, height: side)
3636
}
3737
}

0 commit comments

Comments
 (0)