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.
SnakeFood/SnakeFood.cpp@10:751bd953fa27, 2019-03-30 (annotated)
- Committer:
- AhmedPlaymaker
- Date:
- Sat Mar 30 17:09:18 2019 +0000
- Revision:
- 10:751bd953fa27
- Parent:
- 9:d1d79d4ee673
- Child:
- 11:d6ceff1ff6d7
Can now draw blocks and generate random numbers in them, they can be seen on screen, the next step is creating collision
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AhmedPlaymaker | 9:d1d79d4ee673 | 1 | #include "SnakeFood.h" |
AhmedPlaymaker | 9:d1d79d4ee673 | 2 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 3 | SnakeFood::SnakeFood() |
AhmedPlaymaker | 9:d1d79d4ee673 | 4 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 5 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 6 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 7 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 8 | SnakeFood::~SnakeFood() |
AhmedPlaymaker | 9:d1d79d4ee673 | 9 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 10 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 11 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 12 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 13 | //SnakeFood Sprite. |
AhmedPlaymaker | 9:d1d79d4ee673 | 14 | int food_sprite[3][3] = { |
AhmedPlaymaker | 9:d1d79d4ee673 | 15 | {0,1,0}, |
AhmedPlaymaker | 9:d1d79d4ee673 | 16 | {1,0,1}, |
AhmedPlaymaker | 9:d1d79d4ee673 | 17 | {0,1,0}, |
AhmedPlaymaker | 9:d1d79d4ee673 | 18 | }; |
AhmedPlaymaker | 9:d1d79d4ee673 | 19 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 20 | int n = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 21 | void SnakeFood::init() //Delete Int |
AhmedPlaymaker | 9:d1d79d4ee673 | 22 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 23 | fooddrop=0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 24 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 25 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 26 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 27 | void SnakeFood::draw(N5110 &lcd) |
AhmedPlaymaker | 9:d1d79d4ee673 | 28 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 29 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 30 | //_velocity.x = 1; |
AhmedPlaymaker | 9:d1d79d4ee673 | 31 | _velocity.y = 1; |
AhmedPlaymaker | 9:d1d79d4ee673 | 32 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 33 | //add sideways velocity incase I want to make it dodgy. |
AhmedPlaymaker | 9:d1d79d4ee673 | 34 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 35 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 36 | //Remember to seed |
AhmedPlaymaker | 9:d1d79d4ee673 | 37 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 38 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 39 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 40 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 41 | /* int random = rand() % 3; |
AhmedPlaymaker | 9:d1d79d4ee673 | 42 | if(random == 0){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 43 | _velocity.x = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 44 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 45 | if(random == 1){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 46 | _velocity.x = 2; |
AhmedPlaymaker | 9:d1d79d4ee673 | 47 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 48 | if(random == 2){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 49 | _velocity.x = -2; |
AhmedPlaymaker | 9:d1d79d4ee673 | 50 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 51 | if(random == 3){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 52 | _velocity.x = -2; |
AhmedPlaymaker | 9:d1d79d4ee673 | 53 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 54 | */ |
AhmedPlaymaker | 9:d1d79d4ee673 | 55 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 56 | //Resets SnakeFood position if it reaches the bottom of the screen. |
AhmedPlaymaker | 9:d1d79d4ee673 | 57 | //Also prevents SnakeFood from going out of the side of the screen. |
AhmedPlaymaker | 9:d1d79d4ee673 | 58 | if(_fx < 0){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 59 | _fx = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 60 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 61 | if(_fx > 81){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 62 | _fx = 81; |
AhmedPlaymaker | 9:d1d79d4ee673 | 63 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 64 | if(_fy >= 48){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 65 | n = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 66 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 67 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 68 | if(n == 0){ |
AhmedPlaymaker | 10:751bd953fa27 | 69 | _fx = (rand() % 82); //change the number here so that there is always an unsurity(a little) if the food will come or not(change the limits for this) |
AhmedPlaymaker | 9:d1d79d4ee673 | 70 | _fy = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 71 | n = n+1; |
AhmedPlaymaker | 9:d1d79d4ee673 | 72 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 73 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 74 | lcd.drawSprite(_fx,_fy,3,3,(int *)food_sprite); //Function to draw the sprite. |
AhmedPlaymaker | 9:d1d79d4ee673 | 75 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 76 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 77 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 78 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 79 | Vector2D SnakeFood::get_pos() //Obtains the X and Y coordinate of the target. |
AhmedPlaymaker | 9:d1d79d4ee673 | 80 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 81 | Vector2D snakefoodpos = {_fx,_fy}; |
AhmedPlaymaker | 9:d1d79d4ee673 | 82 | //printf("snakefoodpos from food = %f %f \n", snakefoodpos.x, snakefoodpos.y); |
AhmedPlaymaker | 9:d1d79d4ee673 | 83 | return snakefoodpos; |
AhmedPlaymaker | 9:d1d79d4ee673 | 84 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 85 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 86 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 87 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 88 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 89 | void SnakeFood::update() |
AhmedPlaymaker | 9:d1d79d4ee673 | 90 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 91 | if(fooddrop == 0) { |
AhmedPlaymaker | 9:d1d79d4ee673 | 92 | _fx += _velocity.x; |
AhmedPlaymaker | 9:d1d79d4ee673 | 93 | _fy += _velocity.y; |
AhmedPlaymaker | 9:d1d79d4ee673 | 94 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 95 | fooddrop += 1; |
AhmedPlaymaker | 9:d1d79d4ee673 | 96 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 97 | if(fooddrop == 2) { //make this a variable multiple of game speed |
AhmedPlaymaker | 9:d1d79d4ee673 | 98 | fooddrop = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 99 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 100 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 101 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 102 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 103 | void SnakeFood::set_pos(Vector2D p) |
AhmedPlaymaker | 9:d1d79d4ee673 | 104 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 105 | _fx = p.x; |
AhmedPlaymaker | 9:d1d79d4ee673 | 106 | _fy = p.y; |
AhmedPlaymaker | 9:d1d79d4ee673 | 107 | } |