Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: Snake/Snake.cpp
- Revision:
- 9:561e5681b7a6
- Parent:
- 2:ea90cec2489a
- Child:
- 10:62d8cb7742c3
--- a/Snake/Snake.cpp Thu Mar 22 14:52:08 2018 +0000
+++ b/Snake/Snake.cpp Tue Apr 03 12:24:18 2018 +0000
@@ -9,4 +9,325 @@
Snake::~Snake()
{
-}
\ No newline at end of file
+}
+
+void Snake::update(Direction d)
+{
+
+ Vector2D values = get_snake_position();
+
+ _x = values.x;
+ _y = values.y;
+
+}
+
+void Snake::set_snake_direction(Direction input)
+{
+ StateDirection sd;
+
+ int state = 1;
+
+ StateDirection fsm[4] = {
+
+ {N,{N,E,N,W}},
+ {E,{N,E,S,E}},
+ {S,{S,E,S,W}},
+ {W,{N,W,S,W}}
+
+};
+
+ sd.output = fsm[state].output; // set ouput depending on current state
+ state = fsm[state].nextState[input]; // read input and update curent state
+ _direction = sd.output;
+ //_direction.nextState[state] = input;
+
+
+}
+
+Direction Snake::get_snake_direction()
+{
+
+ Direction d = _direction;
+
+ return d;
+
+}
+
+void Snake::set_snake_position()
+{
+ Direction v = get_snake_direction();
+ Vector2D p;
+
+ switch(v) {
+
+ case(N):
+
+ p.x = p.x;
+ --p.y;
+
+ break;
+
+ case(E):
+
+ ++p.x;
+ p.y = p.y;
+
+ break;
+
+ case(S):
+
+ p.x = p.x;
+ ++p.y;
+
+ break;
+
+ case(W):
+
+ --p.x;
+ p.y = p.y;
+
+ break;
+
+ default:
+
+ p.x = p.x;
+ p.y = p.y;
+
+ break;
+
+ }
+
+ _x = p.x;
+ _y = p.y;
+
+}
+
+Vector2D Snake::get_snake_position()
+{
+ Vector2D pos = {_x, _y};
+
+ return pos;
+}
+/*
+
+void Snake::set_next_dir(Direction next)
+{
+
+}
+
+Vector2D Snake::move_snake()
+{
+ Direction pre;
+ Direction next;
+ Vector2D i;
+
+ switch(pre) {
+
+ case(N):
+
+ switch(next) {
+
+ case(N):
+
+ i.x = i.x;
+ ++i.y;
+
+ break;
+
+ case(E):
+
+ ++i.x;
+ i.y = i.y;
+
+ break;
+
+ case(S):
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ case(W):
+
+ --i.x;
+ i.y = i.y;
+
+ break;
+
+ case(CENTRE):
+
+ i.x = i.x;
+ ++i.y;
+
+ break;
+
+ default:
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ }
+
+ break;
+
+ case(E):
+
+ switch(next) {
+
+ case(N):
+
+ i.x = i.x;
+ ++i.y;
+
+ break;
+
+ case(E):
+
+ ++i.x;
+ i.y = i.y;
+
+ break;
+
+ case(S):
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ case(W):
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ case(CENTRE):
+
+ ++i.x;
+ i.y = i.y;
+
+ break;
+
+ default:
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ }
+
+ break;
+
+ case(S):
+
+ switch(next) {
+
+ case(N):
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ case(E):
+
+ ++i.x;
+ i.y = i.y;
+
+ break;
+
+ case(S):
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ case(W):
+
+ --i.x;
+ i.y = i.y;
+
+ break;
+
+ case(CENTRE):
+
+ i.x = i.x;
+ --i.y;
+
+ break;
+
+ default:
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ }
+
+ break;
+
+ case(W):
+
+ switch(next) {
+
+ case(N):
+
+ i.x = i.x;
+ ++i.y;
+
+ break;
+
+ case(E):
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ case(S):
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ case(W):
+
+ --i.x;
+ i.y = i.y;
+
+ break;
+
+ case(CENTRE):
+
+ --i.x;
+ i.y = i.y;
+
+ break;
+
+ default:
+
+ i.x = i.x;
+ i.y = i.y;
+
+ break;
+
+ }
+
+ break;
+
+ }
+
+ return i;
+
+ }*/
+
+
+
\ No newline at end of file