ELEC2645 (2017/18) / Mbed 2 deprecated ll13jrm

Dependencies:   mbed

Committer:
JRM1986
Date:
Tue Apr 03 12:24:18 2018 +0000
Revision:
9:561e5681b7a6
Parent:
2:ea90cec2489a
Child:
10:62d8cb7742c3
Functions to set and return direction of snake head, and position of snake head respectively done but not tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JRM1986 2:ea90cec2489a 1 #include "Snake.h"
JRM1986 2:ea90cec2489a 2
JRM1986 2:ea90cec2489a 3
JRM1986 2:ea90cec2489a 4 Snake::Snake()
JRM1986 2:ea90cec2489a 5 {
JRM1986 2:ea90cec2489a 6
JRM1986 2:ea90cec2489a 7 }
JRM1986 2:ea90cec2489a 8
JRM1986 2:ea90cec2489a 9 Snake::~Snake()
JRM1986 2:ea90cec2489a 10 {
JRM1986 2:ea90cec2489a 11
JRM1986 9:561e5681b7a6 12 }
JRM1986 9:561e5681b7a6 13
JRM1986 9:561e5681b7a6 14 void Snake::update(Direction d)
JRM1986 9:561e5681b7a6 15 {
JRM1986 9:561e5681b7a6 16
JRM1986 9:561e5681b7a6 17 Vector2D values = get_snake_position();
JRM1986 9:561e5681b7a6 18
JRM1986 9:561e5681b7a6 19 _x = values.x;
JRM1986 9:561e5681b7a6 20 _y = values.y;
JRM1986 9:561e5681b7a6 21
JRM1986 9:561e5681b7a6 22 }
JRM1986 9:561e5681b7a6 23
JRM1986 9:561e5681b7a6 24 void Snake::set_snake_direction(Direction input)
JRM1986 9:561e5681b7a6 25 {
JRM1986 9:561e5681b7a6 26 StateDirection sd;
JRM1986 9:561e5681b7a6 27
JRM1986 9:561e5681b7a6 28 int state = 1;
JRM1986 9:561e5681b7a6 29
JRM1986 9:561e5681b7a6 30 StateDirection fsm[4] = {
JRM1986 9:561e5681b7a6 31
JRM1986 9:561e5681b7a6 32 {N,{N,E,N,W}},
JRM1986 9:561e5681b7a6 33 {E,{N,E,S,E}},
JRM1986 9:561e5681b7a6 34 {S,{S,E,S,W}},
JRM1986 9:561e5681b7a6 35 {W,{N,W,S,W}}
JRM1986 9:561e5681b7a6 36
JRM1986 9:561e5681b7a6 37 };
JRM1986 9:561e5681b7a6 38
JRM1986 9:561e5681b7a6 39 sd.output = fsm[state].output; // set ouput depending on current state
JRM1986 9:561e5681b7a6 40 state = fsm[state].nextState[input]; // read input and update curent state
JRM1986 9:561e5681b7a6 41 _direction = sd.output;
JRM1986 9:561e5681b7a6 42 //_direction.nextState[state] = input;
JRM1986 9:561e5681b7a6 43
JRM1986 9:561e5681b7a6 44
JRM1986 9:561e5681b7a6 45 }
JRM1986 9:561e5681b7a6 46
JRM1986 9:561e5681b7a6 47 Direction Snake::get_snake_direction()
JRM1986 9:561e5681b7a6 48 {
JRM1986 9:561e5681b7a6 49
JRM1986 9:561e5681b7a6 50 Direction d = _direction;
JRM1986 9:561e5681b7a6 51
JRM1986 9:561e5681b7a6 52 return d;
JRM1986 9:561e5681b7a6 53
JRM1986 9:561e5681b7a6 54 }
JRM1986 9:561e5681b7a6 55
JRM1986 9:561e5681b7a6 56 void Snake::set_snake_position()
JRM1986 9:561e5681b7a6 57 {
JRM1986 9:561e5681b7a6 58 Direction v = get_snake_direction();
JRM1986 9:561e5681b7a6 59 Vector2D p;
JRM1986 9:561e5681b7a6 60
JRM1986 9:561e5681b7a6 61 switch(v) {
JRM1986 9:561e5681b7a6 62
JRM1986 9:561e5681b7a6 63 case(N):
JRM1986 9:561e5681b7a6 64
JRM1986 9:561e5681b7a6 65 p.x = p.x;
JRM1986 9:561e5681b7a6 66 --p.y;
JRM1986 9:561e5681b7a6 67
JRM1986 9:561e5681b7a6 68 break;
JRM1986 9:561e5681b7a6 69
JRM1986 9:561e5681b7a6 70 case(E):
JRM1986 9:561e5681b7a6 71
JRM1986 9:561e5681b7a6 72 ++p.x;
JRM1986 9:561e5681b7a6 73 p.y = p.y;
JRM1986 9:561e5681b7a6 74
JRM1986 9:561e5681b7a6 75 break;
JRM1986 9:561e5681b7a6 76
JRM1986 9:561e5681b7a6 77 case(S):
JRM1986 9:561e5681b7a6 78
JRM1986 9:561e5681b7a6 79 p.x = p.x;
JRM1986 9:561e5681b7a6 80 ++p.y;
JRM1986 9:561e5681b7a6 81
JRM1986 9:561e5681b7a6 82 break;
JRM1986 9:561e5681b7a6 83
JRM1986 9:561e5681b7a6 84 case(W):
JRM1986 9:561e5681b7a6 85
JRM1986 9:561e5681b7a6 86 --p.x;
JRM1986 9:561e5681b7a6 87 p.y = p.y;
JRM1986 9:561e5681b7a6 88
JRM1986 9:561e5681b7a6 89 break;
JRM1986 9:561e5681b7a6 90
JRM1986 9:561e5681b7a6 91 default:
JRM1986 9:561e5681b7a6 92
JRM1986 9:561e5681b7a6 93 p.x = p.x;
JRM1986 9:561e5681b7a6 94 p.y = p.y;
JRM1986 9:561e5681b7a6 95
JRM1986 9:561e5681b7a6 96 break;
JRM1986 9:561e5681b7a6 97
JRM1986 9:561e5681b7a6 98 }
JRM1986 9:561e5681b7a6 99
JRM1986 9:561e5681b7a6 100 _x = p.x;
JRM1986 9:561e5681b7a6 101 _y = p.y;
JRM1986 9:561e5681b7a6 102
JRM1986 9:561e5681b7a6 103 }
JRM1986 9:561e5681b7a6 104
JRM1986 9:561e5681b7a6 105 Vector2D Snake::get_snake_position()
JRM1986 9:561e5681b7a6 106 {
JRM1986 9:561e5681b7a6 107 Vector2D pos = {_x, _y};
JRM1986 9:561e5681b7a6 108
JRM1986 9:561e5681b7a6 109 return pos;
JRM1986 9:561e5681b7a6 110 }
JRM1986 9:561e5681b7a6 111 /*
JRM1986 9:561e5681b7a6 112
JRM1986 9:561e5681b7a6 113 void Snake::set_next_dir(Direction next)
JRM1986 9:561e5681b7a6 114 {
JRM1986 9:561e5681b7a6 115
JRM1986 9:561e5681b7a6 116 }
JRM1986 9:561e5681b7a6 117
JRM1986 9:561e5681b7a6 118 Vector2D Snake::move_snake()
JRM1986 9:561e5681b7a6 119 {
JRM1986 9:561e5681b7a6 120 Direction pre;
JRM1986 9:561e5681b7a6 121 Direction next;
JRM1986 9:561e5681b7a6 122 Vector2D i;
JRM1986 9:561e5681b7a6 123
JRM1986 9:561e5681b7a6 124 switch(pre) {
JRM1986 9:561e5681b7a6 125
JRM1986 9:561e5681b7a6 126 case(N):
JRM1986 9:561e5681b7a6 127
JRM1986 9:561e5681b7a6 128 switch(next) {
JRM1986 9:561e5681b7a6 129
JRM1986 9:561e5681b7a6 130 case(N):
JRM1986 9:561e5681b7a6 131
JRM1986 9:561e5681b7a6 132 i.x = i.x;
JRM1986 9:561e5681b7a6 133 ++i.y;
JRM1986 9:561e5681b7a6 134
JRM1986 9:561e5681b7a6 135 break;
JRM1986 9:561e5681b7a6 136
JRM1986 9:561e5681b7a6 137 case(E):
JRM1986 9:561e5681b7a6 138
JRM1986 9:561e5681b7a6 139 ++i.x;
JRM1986 9:561e5681b7a6 140 i.y = i.y;
JRM1986 9:561e5681b7a6 141
JRM1986 9:561e5681b7a6 142 break;
JRM1986 9:561e5681b7a6 143
JRM1986 9:561e5681b7a6 144 case(S):
JRM1986 9:561e5681b7a6 145
JRM1986 9:561e5681b7a6 146 i.x = i.x;
JRM1986 9:561e5681b7a6 147 i.y = i.y;
JRM1986 9:561e5681b7a6 148
JRM1986 9:561e5681b7a6 149 break;
JRM1986 9:561e5681b7a6 150
JRM1986 9:561e5681b7a6 151 case(W):
JRM1986 9:561e5681b7a6 152
JRM1986 9:561e5681b7a6 153 --i.x;
JRM1986 9:561e5681b7a6 154 i.y = i.y;
JRM1986 9:561e5681b7a6 155
JRM1986 9:561e5681b7a6 156 break;
JRM1986 9:561e5681b7a6 157
JRM1986 9:561e5681b7a6 158 case(CENTRE):
JRM1986 9:561e5681b7a6 159
JRM1986 9:561e5681b7a6 160 i.x = i.x;
JRM1986 9:561e5681b7a6 161 ++i.y;
JRM1986 9:561e5681b7a6 162
JRM1986 9:561e5681b7a6 163 break;
JRM1986 9:561e5681b7a6 164
JRM1986 9:561e5681b7a6 165 default:
JRM1986 9:561e5681b7a6 166
JRM1986 9:561e5681b7a6 167 i.x = i.x;
JRM1986 9:561e5681b7a6 168 i.y = i.y;
JRM1986 9:561e5681b7a6 169
JRM1986 9:561e5681b7a6 170 break;
JRM1986 9:561e5681b7a6 171
JRM1986 9:561e5681b7a6 172 }
JRM1986 9:561e5681b7a6 173
JRM1986 9:561e5681b7a6 174 break;
JRM1986 9:561e5681b7a6 175
JRM1986 9:561e5681b7a6 176 case(E):
JRM1986 9:561e5681b7a6 177
JRM1986 9:561e5681b7a6 178 switch(next) {
JRM1986 9:561e5681b7a6 179
JRM1986 9:561e5681b7a6 180 case(N):
JRM1986 9:561e5681b7a6 181
JRM1986 9:561e5681b7a6 182 i.x = i.x;
JRM1986 9:561e5681b7a6 183 ++i.y;
JRM1986 9:561e5681b7a6 184
JRM1986 9:561e5681b7a6 185 break;
JRM1986 9:561e5681b7a6 186
JRM1986 9:561e5681b7a6 187 case(E):
JRM1986 9:561e5681b7a6 188
JRM1986 9:561e5681b7a6 189 ++i.x;
JRM1986 9:561e5681b7a6 190 i.y = i.y;
JRM1986 9:561e5681b7a6 191
JRM1986 9:561e5681b7a6 192 break;
JRM1986 9:561e5681b7a6 193
JRM1986 9:561e5681b7a6 194 case(S):
JRM1986 9:561e5681b7a6 195
JRM1986 9:561e5681b7a6 196 i.x = i.x;
JRM1986 9:561e5681b7a6 197 i.y = i.y;
JRM1986 9:561e5681b7a6 198
JRM1986 9:561e5681b7a6 199 break;
JRM1986 9:561e5681b7a6 200
JRM1986 9:561e5681b7a6 201 case(W):
JRM1986 9:561e5681b7a6 202
JRM1986 9:561e5681b7a6 203 i.x = i.x;
JRM1986 9:561e5681b7a6 204 i.y = i.y;
JRM1986 9:561e5681b7a6 205
JRM1986 9:561e5681b7a6 206 break;
JRM1986 9:561e5681b7a6 207
JRM1986 9:561e5681b7a6 208 case(CENTRE):
JRM1986 9:561e5681b7a6 209
JRM1986 9:561e5681b7a6 210 ++i.x;
JRM1986 9:561e5681b7a6 211 i.y = i.y;
JRM1986 9:561e5681b7a6 212
JRM1986 9:561e5681b7a6 213 break;
JRM1986 9:561e5681b7a6 214
JRM1986 9:561e5681b7a6 215 default:
JRM1986 9:561e5681b7a6 216
JRM1986 9:561e5681b7a6 217 i.x = i.x;
JRM1986 9:561e5681b7a6 218 i.y = i.y;
JRM1986 9:561e5681b7a6 219
JRM1986 9:561e5681b7a6 220 break;
JRM1986 9:561e5681b7a6 221
JRM1986 9:561e5681b7a6 222 }
JRM1986 9:561e5681b7a6 223
JRM1986 9:561e5681b7a6 224 break;
JRM1986 9:561e5681b7a6 225
JRM1986 9:561e5681b7a6 226 case(S):
JRM1986 9:561e5681b7a6 227
JRM1986 9:561e5681b7a6 228 switch(next) {
JRM1986 9:561e5681b7a6 229
JRM1986 9:561e5681b7a6 230 case(N):
JRM1986 9:561e5681b7a6 231
JRM1986 9:561e5681b7a6 232 i.x = i.x;
JRM1986 9:561e5681b7a6 233 i.y = i.y;
JRM1986 9:561e5681b7a6 234
JRM1986 9:561e5681b7a6 235 break;
JRM1986 9:561e5681b7a6 236
JRM1986 9:561e5681b7a6 237 case(E):
JRM1986 9:561e5681b7a6 238
JRM1986 9:561e5681b7a6 239 ++i.x;
JRM1986 9:561e5681b7a6 240 i.y = i.y;
JRM1986 9:561e5681b7a6 241
JRM1986 9:561e5681b7a6 242 break;
JRM1986 9:561e5681b7a6 243
JRM1986 9:561e5681b7a6 244 case(S):
JRM1986 9:561e5681b7a6 245
JRM1986 9:561e5681b7a6 246 i.x = i.x;
JRM1986 9:561e5681b7a6 247 i.y = i.y;
JRM1986 9:561e5681b7a6 248
JRM1986 9:561e5681b7a6 249 break;
JRM1986 9:561e5681b7a6 250
JRM1986 9:561e5681b7a6 251 case(W):
JRM1986 9:561e5681b7a6 252
JRM1986 9:561e5681b7a6 253 --i.x;
JRM1986 9:561e5681b7a6 254 i.y = i.y;
JRM1986 9:561e5681b7a6 255
JRM1986 9:561e5681b7a6 256 break;
JRM1986 9:561e5681b7a6 257
JRM1986 9:561e5681b7a6 258 case(CENTRE):
JRM1986 9:561e5681b7a6 259
JRM1986 9:561e5681b7a6 260 i.x = i.x;
JRM1986 9:561e5681b7a6 261 --i.y;
JRM1986 9:561e5681b7a6 262
JRM1986 9:561e5681b7a6 263 break;
JRM1986 9:561e5681b7a6 264
JRM1986 9:561e5681b7a6 265 default:
JRM1986 9:561e5681b7a6 266
JRM1986 9:561e5681b7a6 267 i.x = i.x;
JRM1986 9:561e5681b7a6 268 i.y = i.y;
JRM1986 9:561e5681b7a6 269
JRM1986 9:561e5681b7a6 270 break;
JRM1986 9:561e5681b7a6 271
JRM1986 9:561e5681b7a6 272 }
JRM1986 9:561e5681b7a6 273
JRM1986 9:561e5681b7a6 274 break;
JRM1986 9:561e5681b7a6 275
JRM1986 9:561e5681b7a6 276 case(W):
JRM1986 9:561e5681b7a6 277
JRM1986 9:561e5681b7a6 278 switch(next) {
JRM1986 9:561e5681b7a6 279
JRM1986 9:561e5681b7a6 280 case(N):
JRM1986 9:561e5681b7a6 281
JRM1986 9:561e5681b7a6 282 i.x = i.x;
JRM1986 9:561e5681b7a6 283 ++i.y;
JRM1986 9:561e5681b7a6 284
JRM1986 9:561e5681b7a6 285 break;
JRM1986 9:561e5681b7a6 286
JRM1986 9:561e5681b7a6 287 case(E):
JRM1986 9:561e5681b7a6 288
JRM1986 9:561e5681b7a6 289 i.x = i.x;
JRM1986 9:561e5681b7a6 290 i.y = i.y;
JRM1986 9:561e5681b7a6 291
JRM1986 9:561e5681b7a6 292 break;
JRM1986 9:561e5681b7a6 293
JRM1986 9:561e5681b7a6 294 case(S):
JRM1986 9:561e5681b7a6 295
JRM1986 9:561e5681b7a6 296 i.x = i.x;
JRM1986 9:561e5681b7a6 297 i.y = i.y;
JRM1986 9:561e5681b7a6 298
JRM1986 9:561e5681b7a6 299 break;
JRM1986 9:561e5681b7a6 300
JRM1986 9:561e5681b7a6 301 case(W):
JRM1986 9:561e5681b7a6 302
JRM1986 9:561e5681b7a6 303 --i.x;
JRM1986 9:561e5681b7a6 304 i.y = i.y;
JRM1986 9:561e5681b7a6 305
JRM1986 9:561e5681b7a6 306 break;
JRM1986 9:561e5681b7a6 307
JRM1986 9:561e5681b7a6 308 case(CENTRE):
JRM1986 9:561e5681b7a6 309
JRM1986 9:561e5681b7a6 310 --i.x;
JRM1986 9:561e5681b7a6 311 i.y = i.y;
JRM1986 9:561e5681b7a6 312
JRM1986 9:561e5681b7a6 313 break;
JRM1986 9:561e5681b7a6 314
JRM1986 9:561e5681b7a6 315 default:
JRM1986 9:561e5681b7a6 316
JRM1986 9:561e5681b7a6 317 i.x = i.x;
JRM1986 9:561e5681b7a6 318 i.y = i.y;
JRM1986 9:561e5681b7a6 319
JRM1986 9:561e5681b7a6 320 break;
JRM1986 9:561e5681b7a6 321
JRM1986 9:561e5681b7a6 322 }
JRM1986 9:561e5681b7a6 323
JRM1986 9:561e5681b7a6 324 break;
JRM1986 9:561e5681b7a6 325
JRM1986 9:561e5681b7a6 326 }
JRM1986 9:561e5681b7a6 327
JRM1986 9:561e5681b7a6 328 return i;
JRM1986 9:561e5681b7a6 329
JRM1986 9:561e5681b7a6 330 }*/
JRM1986 9:561e5681b7a6 331
JRM1986 9:561e5681b7a6 332
JRM1986 9:561e5681b7a6 333