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
Ball/Ball.cpp@5:915bcac4e9b9, 2019-04-16 (annotated)
- Committer:
- shahidsajid
- Date:
- Tue Apr 16 10:17:21 2019 +0000
- Revision:
- 5:915bcac4e9b9
- Parent:
- 4:55a0509c4874
- Child:
- 6:3e50f2cf4366
Updated the bat class;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shahidsajid | 3:bd3465a70a5a | 1 | #include "Ball.h" |
shahidsajid | 3:bd3465a70a5a | 2 | |
shahidsajid | 4:55a0509c4874 | 3 | |
shahidsajid | 3:bd3465a70a5a | 4 | Ball::Ball() |
shahidsajid | 3:bd3465a70a5a | 5 | { |
shahidsajid | 3:bd3465a70a5a | 6 | |
shahidsajid | 3:bd3465a70a5a | 7 | } |
shahidsajid | 3:bd3465a70a5a | 8 | |
shahidsajid | 3:bd3465a70a5a | 9 | Ball::~Ball() |
shahidsajid | 3:bd3465a70a5a | 10 | { |
shahidsajid | 3:bd3465a70a5a | 11 | |
shahidsajid | 3:bd3465a70a5a | 12 | } |
shahidsajid | 3:bd3465a70a5a | 13 | |
shahidsajid | 3:bd3465a70a5a | 14 | void Ball::init(int size,int speed) |
shahidsajid | 3:bd3465a70a5a | 15 | { |
shahidsajid | 3:bd3465a70a5a | 16 | _size = size; |
shahidsajid | 3:bd3465a70a5a | 17 | |
shahidsajid | 3:bd3465a70a5a | 18 | _x = 42; |
shahidsajid | 3:bd3465a70a5a | 19 | _y = 15; |
shahidsajid | 3:bd3465a70a5a | 20 | |
shahidsajid | 3:bd3465a70a5a | 21 | srand(time(NULL)); |
shahidsajid | 3:bd3465a70a5a | 22 | int direction = rand() % 4; // randomise initial direction. |
shahidsajid | 3:bd3465a70a5a | 23 | |
shahidsajid | 3:bd3465a70a5a | 24 | // 4 possibilities. Get random modulo and set velocities accordingly |
shahidsajid | 3:bd3465a70a5a | 25 | if (direction == 0) { |
shahidsajid | 3:bd3465a70a5a | 26 | _velocity.x = speed; |
shahidsajid | 3:bd3465a70a5a | 27 | _velocity.y = speed; |
shahidsajid | 3:bd3465a70a5a | 28 | } else if (direction == 1) { |
shahidsajid | 3:bd3465a70a5a | 29 | _velocity.x = speed; |
shahidsajid | 3:bd3465a70a5a | 30 | _velocity.y = -speed; |
shahidsajid | 3:bd3465a70a5a | 31 | } else if (direction == 2) { |
shahidsajid | 3:bd3465a70a5a | 32 | _velocity.x = speed; |
shahidsajid | 3:bd3465a70a5a | 33 | _velocity.y = speed; |
shahidsajid | 3:bd3465a70a5a | 34 | } else { |
shahidsajid | 3:bd3465a70a5a | 35 | _velocity.x = -speed; |
shahidsajid | 3:bd3465a70a5a | 36 | _velocity.y = -speed; |
shahidsajid | 3:bd3465a70a5a | 37 | } |
shahidsajid | 3:bd3465a70a5a | 38 | } |
shahidsajid | 3:bd3465a70a5a | 39 | |
shahidsajid | 3:bd3465a70a5a | 40 | void Ball::start(N5110 &lcd){ |
shahidsajid | 4:55a0509c4874 | 41 | if (_y!=36){ |
shahidsajid | 3:bd3465a70a5a | 42 | _y+=1; |
shahidsajid | 3:bd3465a70a5a | 43 | } |
shahidsajid | 3:bd3465a70a5a | 44 | } |
shahidsajid | 3:bd3465a70a5a | 45 | |
shahidsajid | 3:bd3465a70a5a | 46 | void Ball::draw(N5110 &lcd) |
shahidsajid | 3:bd3465a70a5a | 47 | { |
shahidsajid | 3:bd3465a70a5a | 48 | lcd.drawCircle(_x,_y,1,FILL_BLACK); |
shahidsajid | 3:bd3465a70a5a | 49 | //lcd.drawRect(_x,_y,_size,_size,FILL_BLACK); |
shahidsajid | 3:bd3465a70a5a | 50 | } |
shahidsajid | 3:bd3465a70a5a | 51 | |
shahidsajid | 3:bd3465a70a5a | 52 | void Ball::update() |
shahidsajid | 3:bd3465a70a5a | 53 | { |
shahidsajid | 3:bd3465a70a5a | 54 | _x += _velocity.x; |
shahidsajid | 3:bd3465a70a5a | 55 | _y += _velocity.y; |
shahidsajid | 3:bd3465a70a5a | 56 | } |
shahidsajid | 3:bd3465a70a5a | 57 | |
shahidsajid | 3:bd3465a70a5a | 58 | void Ball::set_velocity(Vector2D v) |
shahidsajid | 3:bd3465a70a5a | 59 | { |
shahidsajid | 3:bd3465a70a5a | 60 | _velocity.x = v.x; |
shahidsajid | 3:bd3465a70a5a | 61 | _velocity.y = v.y; |
shahidsajid | 3:bd3465a70a5a | 62 | } |
shahidsajid | 3:bd3465a70a5a | 63 | |
shahidsajid | 3:bd3465a70a5a | 64 | Vector2D Ball::get_velocity() |
shahidsajid | 3:bd3465a70a5a | 65 | { |
shahidsajid | 3:bd3465a70a5a | 66 | Vector2D v = {_velocity.x,_velocity.y}; |
shahidsajid | 3:bd3465a70a5a | 67 | return v; |
shahidsajid | 3:bd3465a70a5a | 68 | } |
shahidsajid | 3:bd3465a70a5a | 69 | |
shahidsajid | 3:bd3465a70a5a | 70 | Vector2D Ball::get_pos() |
shahidsajid | 3:bd3465a70a5a | 71 | { |
shahidsajid | 3:bd3465a70a5a | 72 | Vector2D p = {_x,_y}; |
shahidsajid | 3:bd3465a70a5a | 73 | return p; |
shahidsajid | 3:bd3465a70a5a | 74 | } |
shahidsajid | 3:bd3465a70a5a | 75 | |
shahidsajid | 3:bd3465a70a5a | 76 | void Ball::set_pos(Vector2D p) |
shahidsajid | 3:bd3465a70a5a | 77 | { |
shahidsajid | 3:bd3465a70a5a | 78 | _x = p.x; |
shahidsajid | 3:bd3465a70a5a | 79 | _y = p.y; |
shahidsajid | 3:bd3465a70a5a | 80 | } |
shahidsajid | 3:bd3465a70a5a | 81 | void Ball::get_direction(Gamepad &pad){ |
shahidsajid | 3:bd3465a70a5a | 82 | _d = pad.get_direction(); |
shahidsajid | 3:bd3465a70a5a | 83 | } |
shahidsajid | 3:bd3465a70a5a | 84 | void Ball::set_field(N5110 &lcd){ |
shahidsajid | 4:55a0509c4874 | 85 | lcd.drawLine(40,11,40,14,1); |
shahidsajid | 4:55a0509c4874 | 86 | lcd.drawLine(42,11,42,14,1); |
shahidsajid | 4:55a0509c4874 | 87 | lcd.drawLine(44,11,44,14,1); |
shahidsajid | 4:55a0509c4874 | 88 | lcd.drawLine(40,14,44,14,2); |
shahidsajid | 4:55a0509c4874 | 89 | /* |
shahidsajid | 3:bd3465a70a5a | 90 | lcd.drawCircle(25,2,2,FILL_BLACK); //NE |
shahidsajid | 3:bd3465a70a5a | 91 | lcd.drawCircle(65,2,2,FILL_BLACK); //NW |
shahidsajid | 3:bd3465a70a5a | 92 | lcd.drawCircle(65,40,2,FILL_BLACK); //SE |
shahidsajid | 3:bd3465a70a5a | 93 | lcd.drawCircle(25,40,2,FILL_BLACK); //SW |
shahidsajid | 3:bd3465a70a5a | 94 | lcd.drawCircle(3,20,2,FILL_BLACK); //E |
shahidsajid | 4:55a0509c4874 | 95 | lcd.drawCircle(80,20,2,FILL_BLACK); |
shahidsajid | 4:55a0509c4874 | 96 | */ |
shahidsajid | 4:55a0509c4874 | 97 | int d=0; |
shahidsajid | 5:915bcac4e9b9 | 98 | srand(time(NULL)); |
shahidsajid | 4:55a0509c4874 | 99 | for(int i=0;i<3;i++){ |
shahidsajid | 5:915bcac4e9b9 | 100 | d = 1+ rand() % 6; |
shahidsajid | 5:915bcac4e9b9 | 101 | //printf("Direction %i \n",d); |
shahidsajid | 4:55a0509c4874 | 102 | //while (d==N||d==S){ |
shahidsajid | 4:55a0509c4874 | 103 | //get_direction(pad); |
shahidsajid | 4:55a0509c4874 | 104 | //} |
shahidsajid | 4:55a0509c4874 | 105 | if (d==1){ //NE |
shahidsajid | 4:55a0509c4874 | 106 | field[i].x=25; |
shahidsajid | 4:55a0509c4874 | 107 | field[i].y=2; |
shahidsajid | 4:55a0509c4874 | 108 | field[i].position=1; |
shahidsajid | 3:bd3465a70a5a | 109 | } |
shahidsajid | 4:55a0509c4874 | 110 | if (d==2){ //NW |
shahidsajid | 4:55a0509c4874 | 111 | field[i].x=65; |
shahidsajid | 4:55a0509c4874 | 112 | field[i].y=2; |
shahidsajid | 4:55a0509c4874 | 113 | field[i].position=1; |
shahidsajid | 4:55a0509c4874 | 114 | } |
shahidsajid | 4:55a0509c4874 | 115 | if (d==3){ //SW |
shahidsajid | 4:55a0509c4874 | 116 | field[i].x=25; |
shahidsajid | 4:55a0509c4874 | 117 | field[i].y=40; |
shahidsajid | 4:55a0509c4874 | 118 | field[i].position=1; |
shahidsajid | 4:55a0509c4874 | 119 | } |
shahidsajid | 5:915bcac4e9b9 | 120 | if (d==4){ //SE |
shahidsajid | 5:915bcac4e9b9 | 121 | field[i].x=65; |
shahidsajid | 5:915bcac4e9b9 | 122 | field[i].y=40; |
shahidsajid | 5:915bcac4e9b9 | 123 | field[i].position=1; |
shahidsajid | 5:915bcac4e9b9 | 124 | } |
shahidsajid | 5:915bcac4e9b9 | 125 | if (d==5){ //E |
shahidsajid | 5:915bcac4e9b9 | 126 | field[i].x=3; |
shahidsajid | 5:915bcac4e9b9 | 127 | field[i].y=20; |
shahidsajid | 5:915bcac4e9b9 | 128 | field[i].position=1; |
shahidsajid | 5:915bcac4e9b9 | 129 | } |
shahidsajid | 5:915bcac4e9b9 | 130 | if (d==3){ //W |
shahidsajid | 5:915bcac4e9b9 | 131 | field[i].x=80; |
shahidsajid | 5:915bcac4e9b9 | 132 | field[i].y=20; |
shahidsajid | 5:915bcac4e9b9 | 133 | field[i].position=1; |
shahidsajid | 5:915bcac4e9b9 | 134 | } |
shahidsajid | 4:55a0509c4874 | 135 | } |
shahidsajid | 4:55a0509c4874 | 136 | lcd.drawCircle(field[0].x,field[0].y,2,FILL_BLACK); |
shahidsajid | 4:55a0509c4874 | 137 | lcd.drawCircle(field[1].x,field[1].y,2,FILL_BLACK); |
shahidsajid | 4:55a0509c4874 | 138 | lcd.drawCircle(field[2].x,field[2].y,2,FILL_BLACK); |
shahidsajid | 4:55a0509c4874 | 139 | lcd.drawCircle(field[3].x,field[3].y,2,FILL_BLACK); |
shahidsajid | 4:55a0509c4874 | 140 | |
shahidsajid | 4:55a0509c4874 | 141 | } |