-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSnake.java
More file actions
188 lines (164 loc) · 3.15 KB
/
Snake.java
File metadata and controls
188 lines (164 loc) · 3.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
public class Snake
{
// Stores the parts (joints) of snake on the grid
private int[] x = new int[SnakeBoard.getAllDots()];
private int[] y = new int[SnakeBoard.getAllDots()];
// Direction the snake is moving
private boolean movingLeft = false;
private boolean movingRight = false;
private boolean movingUp = false;
private boolean movingDown = false;
// Number of joints on our snake
private int joints = 0;
/**
* Gets the xCoordinate of the selected snake joint
* @param index
* @return
*/
public int getSnakeX(int index)
{
return x[index];
}
/**
* Gets the yCoordinate of the selected snake joint
* @param index
* @return
*/
public int getSnakeY(int index)
{
return y[index];
}
/**
* Sets the xCoordinate of the selected snake joint
* @param xCor
*/
public void setSnakeX(int xCor)
{
x[0] = xCor;
}
/**
* Sets the yCoordinate of the selected snake joint
* @param yCor
*/
public void setSnakeY(int yCor)
{
y[0] = yCor;
}
public void reset()
{
x= new int[SnakeBoard.getAllDots()];
y= new int[SnakeBoard.getAllDots()];
}
/**
* Determines if the snake is moving left
* @return
*/
public boolean isMovingLeft()
{
return movingLeft;
}
/**
* Sets the snake's direction to left
* @param movingLeft
*/
public void setMovingLeft(boolean movingLeft)
{
this.movingLeft = movingLeft;
}
/**
* Determines if the snake is moving right
* @return
*/
public boolean isMovingRight()
{
return movingRight;
}
/**
* Sets the snake's direction to right
* @param movingRight
*/
public void setMovingRight(boolean movingRight)
{
this.movingRight = movingRight;
}
/**
* Determines if the snake is moving up
* @return
*/
public boolean isMovingUp() {
return movingUp;
}
/**
* Sets the snake's direction to up
* @param movingUp
*/
public void setMovingUp(boolean movingUp) {
this.movingUp = movingUp;
}
/**
* Determines if the snake is moving down
* @return
*/
public boolean isMovingDown()
{
return movingDown;
}
/**
* Sets the snake's direction to down
* @param movingDown
*/
public void setMovingDown(boolean movingDown)
{
this.movingDown = movingDown;
}
/**
* Returns the number of joints
* @return
*/
public int getJoints()
{
return joints;
}
/**
* Sets the number of joints to a specified number
* @param j
*/
public void setJoints(int j)
{
joints = j;
}
/**
* Snake performs its actions
*/
public void move()
{
// Creates infinite trail
joints+=1;
for (int i = joints; i > 0; i--)
{
// Moves the joints of the snake 'up the chain'
x[i] = x[(i - 1)];
y[i] = y[(i - 1)];
}
// Moves snake to the left
if (movingLeft)
{
x[0] -= SnakeBoard.getDotSize();
}
// To the right
if (movingRight)
{
x[0] += SnakeBoard.getDotSize();
}
// Down
if (movingDown)
{
y[0] += SnakeBoard.getDotSize();
}
// Up
if (movingUp)
{
y[0] -= SnakeBoard.getDotSize();
}
}
}