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
Head/Head.cpp@4:748b3e0062f6, 2020-05-27 (annotated)
- Committer:
- el18lg
- Date:
- Wed May 27 20:57:21 2020 +0000
- Revision:
- 4:748b3e0062f6
- Parent:
- 3:beb0cc405b1e
- Child:
- 5:e0f08e8022de
Started to do the body of the snake
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el18lg | 3:beb0cc405b1e | 1 | #include "Head.h" |
el18lg | 3:beb0cc405b1e | 2 | |
el18lg | 3:beb0cc405b1e | 3 | // nothing doing in the constructor and destructor |
el18lg | 3:beb0cc405b1e | 4 | Head::Head() |
el18lg | 3:beb0cc405b1e | 5 | { |
el18lg | 3:beb0cc405b1e | 6 | |
el18lg | 3:beb0cc405b1e | 7 | } |
el18lg | 3:beb0cc405b1e | 8 | |
el18lg | 3:beb0cc405b1e | 9 | Head::~Head() |
el18lg | 3:beb0cc405b1e | 10 | { |
el18lg | 3:beb0cc405b1e | 11 | |
el18lg | 3:beb0cc405b1e | 12 | } |
el18lg | 3:beb0cc405b1e | 13 | |
el18lg | 4:748b3e0062f6 | 14 | void Head::init(int x, int y, int length, int speed) |
el18lg | 3:beb0cc405b1e | 15 | { |
el18lg | 4:748b3e0062f6 | 16 | _x = x; |
el18lg | 4:748b3e0062f6 | 17 | _y = y; |
el18lg | 3:beb0cc405b1e | 18 | _length = length; |
el18lg | 3:beb0cc405b1e | 19 | _speed = speed; |
el18lg | 3:beb0cc405b1e | 20 | srand(time(NULL)); |
el18lg | 3:beb0cc405b1e | 21 | _x = WIDTH/2 - _length/2; // snake spawns in random position |
el18lg | 3:beb0cc405b1e | 22 | _y = HEIGHT/2 - _length/2; |
el18lg | 4:748b3e0062f6 | 23 | // set the direction of snake to north |
el18lg | 3:beb0cc405b1e | 24 | |
el18lg | 3:beb0cc405b1e | 25 | } |
el18lg | 3:beb0cc405b1e | 26 | void Head::draw(N5110 &lcd) { |
el18lg | 3:beb0cc405b1e | 27 | |
el18lg | 3:beb0cc405b1e | 28 | lcd.drawCircle(_x,_y,_length,FILL_BLACK); |
el18lg | 3:beb0cc405b1e | 29 | } |
el18lg | 3:beb0cc405b1e | 30 | |
el18lg | 3:beb0cc405b1e | 31 | |
el18lg | 4:748b3e0062f6 | 32 | void Head::update(Direction d, float mag) |
el18lg | 3:beb0cc405b1e | 33 | { |
el18lg | 3:beb0cc405b1e | 34 | // update y value depending on direction of movement |
el18lg | 3:beb0cc405b1e | 35 | // North is decrement as origin is at the top-left so decreasing moves up |
el18lg | 4:748b3e0062f6 | 36 | _speed = int(mag*10.0f); |
el18lg | 4:748b3e0062f6 | 37 | if (d == N && d != S){ |
el18lg | 4:748b3e0062f6 | 38 | _y -= _speed; |
el18lg | 4:748b3e0062f6 | 39 | |
el18lg | 3:beb0cc405b1e | 40 | } |
el18lg | 4:748b3e0062f6 | 41 | if (d == S && d != N){ |
el18lg | 4:748b3e0062f6 | 42 | _y += _speed; |
el18lg | 4:748b3e0062f6 | 43 | |
el18lg | 4:748b3e0062f6 | 44 | } |
el18lg | 4:748b3e0062f6 | 45 | if (d == W && d != E){ |
el18lg | 4:748b3e0062f6 | 46 | |
el18lg | 4:748b3e0062f6 | 47 | _x -= _speed; |
el18lg | 3:beb0cc405b1e | 48 | } |
el18lg | 4:748b3e0062f6 | 49 | if (d == E && d != W){ |
el18lg | 4:748b3e0062f6 | 50 | |
el18lg | 4:748b3e0062f6 | 51 | _x += _speed; |
el18lg | 3:beb0cc405b1e | 52 | } |
el18lg | 4:748b3e0062f6 | 53 | |
el18lg | 4:748b3e0062f6 | 54 | switch(d){ |
el18lg | 4:748b3e0062f6 | 55 | case S: |
el18lg | 4:748b3e0062f6 | 56 | _y; |
el18lg | 4:748b3e0062f6 | 57 | break; |
el18lg | 4:748b3e0062f6 | 58 | |
el18lg | 4:748b3e0062f6 | 59 | case N: |
el18lg | 4:748b3e0062f6 | 60 | _y = 1; |
el18lg | 4:748b3e0062f6 | 61 | break; |
el18lg | 4:748b3e0062f6 | 62 | |
el18lg | 4:748b3e0062f6 | 63 | case W: |
el18lg | 4:748b3e0062f6 | 64 | _x = 1; |
el18lg | 4:748b3e0062f6 | 65 | break; |
el18lg | 4:748b3e0062f6 | 66 | |
el18lg | 4:748b3e0062f6 | 67 | case E: |
el18lg | 4:748b3e0062f6 | 68 | _x = 1; |
el18lg | 4:748b3e0062f6 | 69 | break; |
el18lg | 4:748b3e0062f6 | 70 | } |
el18lg | 4:748b3e0062f6 | 71 | |
el18lg | 3:beb0cc405b1e | 72 | } |
el18lg | 3:beb0cc405b1e | 73 | // The head changes to the new position |
el18lg | 3:beb0cc405b1e | 74 | |
el18lg | 3:beb0cc405b1e | 75 | |
el18lg | 3:beb0cc405b1e | 76 | |
el18lg | 3:beb0cc405b1e | 77 | Vector2D Head::get_pos() { |
el18lg | 3:beb0cc405b1e | 78 | Vector2D pos = {_x,_y}; |
el18lg | 3:beb0cc405b1e | 79 | return pos; |
el18lg | 3:beb0cc405b1e | 80 | } |