Ahmed Adamjee
/
SnakeVSBlock
Snake vs Block Game to be run upon K64F.
GameObjects/Barriers/Barriers.cpp@82:c51ae8a501d1, 2019-05-06 (annotated)
- Committer:
- AhmedPlaymaker
- Date:
- Mon May 06 10:49:50 2019 +0000
- Revision:
- 82:c51ae8a501d1
- Parent:
- 81:4c1641e10dcd
- Child:
- 83:329da564799a
Improved barrier collision
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AhmedPlaymaker | 81:4c1641e10dcd | 1 | #include "Barriers.h" |
AhmedPlaymaker | 81:4c1641e10dcd | 2 | |
AhmedPlaymaker | 81:4c1641e10dcd | 3 | Barriers::Barriers() |
AhmedPlaymaker | 81:4c1641e10dcd | 4 | { |
AhmedPlaymaker | 81:4c1641e10dcd | 5 | |
AhmedPlaymaker | 81:4c1641e10dcd | 6 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 7 | |
AhmedPlaymaker | 81:4c1641e10dcd | 8 | Barriers::~Barriers() |
AhmedPlaymaker | 81:4c1641e10dcd | 9 | { |
AhmedPlaymaker | 81:4c1641e10dcd | 10 | |
AhmedPlaymaker | 81:4c1641e10dcd | 11 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 12 | |
AhmedPlaymaker | 81:4c1641e10dcd | 13 | //Brrier Sprite. |
AhmedPlaymaker | 81:4c1641e10dcd | 14 | int Barrier[22][1] = { |
AhmedPlaymaker | 81:4c1641e10dcd | 15 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 16 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 17 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 18 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 19 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 20 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 21 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 22 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 23 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 24 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 25 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 26 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 27 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 28 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 29 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 30 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 31 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 32 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 33 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 34 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 35 | {1}, |
AhmedPlaymaker | 81:4c1641e10dcd | 36 | {1}, |
AhmedPlaymaker | 82:c51ae8a501d1 | 37 | }; |
AhmedPlaymaker | 81:4c1641e10dcd | 38 | void Barriers::init() |
AhmedPlaymaker | 81:4c1641e10dcd | 39 | { |
AhmedPlaymaker | 81:4c1641e10dcd | 40 | reset = 0; |
AhmedPlaymaker | 81:4c1641e10dcd | 41 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 42 | |
AhmedPlaymaker | 81:4c1641e10dcd | 43 | |
AhmedPlaymaker | 81:4c1641e10dcd | 44 | void Barriers::draw(N5110 &lcd, int b_y) |
AhmedPlaymaker | 81:4c1641e10dcd | 45 | { |
AhmedPlaymaker | 81:4c1641e10dcd | 46 | velocity.x = 0; |
AhmedPlaymaker | 81:4c1641e10dcd | 47 | velocity.y = 1; |
AhmedPlaymaker | 82:c51ae8a501d1 | 48 | |
AhmedPlaymaker | 82:c51ae8a501d1 | 49 | if((reset == 0)&&(b_y < (_blockgap-14))) { |
AhmedPlaymaker | 82:c51ae8a501d1 | 50 | switch(rand()%4) { |
AhmedPlaymaker | 82:c51ae8a501d1 | 51 | case 0: |
AhmedPlaymaker | 82:c51ae8a501d1 | 52 | _barx = 19; |
AhmedPlaymaker | 82:c51ae8a501d1 | 53 | break; |
AhmedPlaymaker | 82:c51ae8a501d1 | 54 | case 1: |
AhmedPlaymaker | 82:c51ae8a501d1 | 55 | _barx = 35; |
AhmedPlaymaker | 82:c51ae8a501d1 | 56 | break; |
AhmedPlaymaker | 82:c51ae8a501d1 | 57 | case 2: |
AhmedPlaymaker | 82:c51ae8a501d1 | 58 | _barx = 51; |
AhmedPlaymaker | 82:c51ae8a501d1 | 59 | break; |
AhmedPlaymaker | 82:c51ae8a501d1 | 60 | case 3: |
AhmedPlaymaker | 82:c51ae8a501d1 | 61 | _barx = 67; |
AhmedPlaymaker | 82:c51ae8a501d1 | 62 | break; |
AhmedPlaymaker | 82:c51ae8a501d1 | 63 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 64 | _bary = -22; |
AhmedPlaymaker | 81:4c1641e10dcd | 65 | reset = reset+1; //to stop this if function to keep executing. |
AhmedPlaymaker | 81:4c1641e10dcd | 66 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 67 | lcd.drawSprite(_barx,_bary,22,1,(int *)Barrier); //Function to draw the frame at all i coordinates as x. |
AhmedPlaymaker | 82:c51ae8a501d1 | 68 | |
AhmedPlaymaker | 81:4c1641e10dcd | 69 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 70 | |
AhmedPlaymaker | 81:4c1641e10dcd | 71 | Vector2D Barriers::get_pos() //Obtains the X and Y coordinate of the target. |
AhmedPlaymaker | 81:4c1641e10dcd | 72 | { |
AhmedPlaymaker | 81:4c1641e10dcd | 73 | Vector2D barrierpos = {_barx,_bary}; |
AhmedPlaymaker | 81:4c1641e10dcd | 74 | //printf("barrierpos is = %f %f \n", barrierpos.x, barrierpos.y); |
AhmedPlaymaker | 81:4c1641e10dcd | 75 | return barrierpos; |
AhmedPlaymaker | 81:4c1641e10dcd | 76 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 77 | |
AhmedPlaymaker | 81:4c1641e10dcd | 78 | void Barriers::update(int blockgap) |
AhmedPlaymaker | 81:4c1641e10dcd | 79 | { |
AhmedPlaymaker | 81:4c1641e10dcd | 80 | _blockgap = blockgap; |
AhmedPlaymaker | 82:c51ae8a501d1 | 81 | _barriergap = _blockgap/4; |
AhmedPlaymaker | 82:c51ae8a501d1 | 82 | if (_blockgap <= 60) { |
AhmedPlaymaker | 82:c51ae8a501d1 | 83 | _barriergap = 60; |
AhmedPlaymaker | 82:c51ae8a501d1 | 84 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 85 | // this if function makes sure the block appears at the rate of blockgap. |
AhmedPlaymaker | 82:c51ae8a501d1 | 86 | if(_bary >= _barriergap) { |
AhmedPlaymaker | 81:4c1641e10dcd | 87 | reset = 0; |
AhmedPlaymaker | 81:4c1641e10dcd | 88 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 89 | _barx += velocity.x; |
AhmedPlaymaker | 81:4c1641e10dcd | 90 | _bary += velocity.y; |
AhmedPlaymaker | 81:4c1641e10dcd | 91 | |
AhmedPlaymaker | 81:4c1641e10dcd | 92 | } |
AhmedPlaymaker | 81:4c1641e10dcd | 93 | |
AhmedPlaymaker | 81:4c1641e10dcd | 94 | |
AhmedPlaymaker | 81:4c1641e10dcd | 95 | void Barriers::set_pos(Vector2D p) |
AhmedPlaymaker | 81:4c1641e10dcd | 96 | { |
AhmedPlaymaker | 81:4c1641e10dcd | 97 | _barx = p.x; |
AhmedPlaymaker | 81:4c1641e10dcd | 98 | _bary = p.y; |
AhmedPlaymaker | 81:4c1641e10dcd | 99 | } |