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@13:9785f2404045, 2019-04-03 (annotated)
- Committer:
- AhmedPlaymaker
- Date:
- Wed Apr 03 17:51:19 2019 +0000
- Revision:
- 13:9785f2404045
- Parent:
- 11:d6ceff1ff6d7
- Child:
- 16:7b474f873683
Tried to make the snake such that it does not go through the blocks once it is sideways, succeeded mostly but still has some minor glitches in doing so
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 | 11:d6ceff1ff6d7 | 21 | int blockgap = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 22 | void SnakeFood::init() //Delete Int |
AhmedPlaymaker | 9:d1d79d4ee673 | 23 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 24 | fooddrop=0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 25 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 26 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 27 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 28 | void SnakeFood::draw(N5110 &lcd) |
AhmedPlaymaker | 9:d1d79d4ee673 | 29 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 30 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 31 | //_velocity.x = 1; |
AhmedPlaymaker | 9:d1d79d4ee673 | 32 | _velocity.y = 1; |
AhmedPlaymaker | 9:d1d79d4ee673 | 33 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 34 | //add sideways velocity incase I want to make it dodgy. |
AhmedPlaymaker | 9:d1d79d4ee673 | 35 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 36 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 37 | //Remember to seed |
AhmedPlaymaker | 9:d1d79d4ee673 | 38 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 39 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 40 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 41 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 42 | /* int random = rand() % 3; |
AhmedPlaymaker | 9:d1d79d4ee673 | 43 | if(random == 0){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 44 | _velocity.x = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 45 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 46 | if(random == 1){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 47 | _velocity.x = 2; |
AhmedPlaymaker | 9:d1d79d4ee673 | 48 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 49 | if(random == 2){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 50 | _velocity.x = -2; |
AhmedPlaymaker | 9:d1d79d4ee673 | 51 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 52 | if(random == 3){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 53 | _velocity.x = -2; |
AhmedPlaymaker | 9:d1d79d4ee673 | 54 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 55 | */ |
AhmedPlaymaker | 9:d1d79d4ee673 | 56 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 57 | //Resets SnakeFood position if it reaches the bottom of the screen. |
AhmedPlaymaker | 9:d1d79d4ee673 | 58 | //Also prevents SnakeFood from going out of the side of the screen. |
AhmedPlaymaker | 9:d1d79d4ee673 | 59 | if(_fx < 0){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 60 | _fx = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 61 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 62 | if(_fx > 81){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 63 | _fx = 81; |
AhmedPlaymaker | 9:d1d79d4ee673 | 64 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 65 | if(_fy >= 48){ |
AhmedPlaymaker | 9:d1d79d4ee673 | 66 | n = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 67 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 68 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 69 | if(n == 0){ |
AhmedPlaymaker | 10:751bd953fa27 | 70 | _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 | 13:9785f2404045 | 71 | _fy = -2; |
AhmedPlaymaker | 9:d1d79d4ee673 | 72 | n = n+1; |
AhmedPlaymaker | 9:d1d79d4ee673 | 73 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 74 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 75 | lcd.drawSprite(_fx,_fy,3,3,(int *)food_sprite); //Function to draw the sprite. |
AhmedPlaymaker | 9:d1d79d4ee673 | 76 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 77 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 78 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 79 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 80 | Vector2D SnakeFood::get_pos() //Obtains the X and Y coordinate of the target. |
AhmedPlaymaker | 9:d1d79d4ee673 | 81 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 82 | Vector2D snakefoodpos = {_fx,_fy}; |
AhmedPlaymaker | 9:d1d79d4ee673 | 83 | //printf("snakefoodpos from food = %f %f \n", snakefoodpos.x, snakefoodpos.y); |
AhmedPlaymaker | 9:d1d79d4ee673 | 84 | return snakefoodpos; |
AhmedPlaymaker | 9:d1d79d4ee673 | 85 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 86 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 87 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 88 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 89 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 90 | void SnakeFood::update() |
AhmedPlaymaker | 9:d1d79d4ee673 | 91 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 92 | if(fooddrop == 0) { |
AhmedPlaymaker | 9:d1d79d4ee673 | 93 | _fx += _velocity.x; |
AhmedPlaymaker | 9:d1d79d4ee673 | 94 | _fy += _velocity.y; |
AhmedPlaymaker | 9:d1d79d4ee673 | 95 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 96 | fooddrop += 1; |
AhmedPlaymaker | 9:d1d79d4ee673 | 97 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 98 | if(fooddrop == 2) { //make this a variable multiple of game speed |
AhmedPlaymaker | 9:d1d79d4ee673 | 99 | fooddrop = 0; |
AhmedPlaymaker | 9:d1d79d4ee673 | 100 | } |
AhmedPlaymaker | 13:9785f2404045 | 101 | if((blockgap==148)||(blockgap==149)||(blockgap==150)||(blockgap==0)||(blockgap==1)||(blockgap==2)||(blockgap==3)||(blockgap==4)||(blockgap==5)||(blockgap==6)||(blockgap==7)||(blockgap==8)||(blockgap==9)||(blockgap==10)||(blockgap==11)||(blockgap==12)||(blockgap==13)) { //change this while changing the block drop gap |
AhmedPlaymaker | 13:9785f2404045 | 102 | if(_fy <= -2) { |
AhmedPlaymaker | 13:9785f2404045 | 103 | _fy = -2; |
AhmedPlaymaker | 11:d6ceff1ff6d7 | 104 | } |
AhmedPlaymaker | 11:d6ceff1ff6d7 | 105 | } |
AhmedPlaymaker | 11:d6ceff1ff6d7 | 106 | blockgap++; |
AhmedPlaymaker | 11:d6ceff1ff6d7 | 107 | if(blockgap == 150) { //change this while changing the block drop gap |
AhmedPlaymaker | 11:d6ceff1ff6d7 | 108 | blockgap = 0; |
AhmedPlaymaker | 11:d6ceff1ff6d7 | 109 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 110 | } |
AhmedPlaymaker | 9:d1d79d4ee673 | 111 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 112 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 113 | void SnakeFood::set_pos(Vector2D p) |
AhmedPlaymaker | 9:d1d79d4ee673 | 114 | { |
AhmedPlaymaker | 9:d1d79d4ee673 | 115 | _fx = p.x; |
AhmedPlaymaker | 9:d1d79d4ee673 | 116 | _fy = p.y; |
AhmedPlaymaker | 9:d1d79d4ee673 | 117 | } |