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
Diff: Ball/Ball.cpp
- Revision:
- 9:a81db6a703b7
- Parent:
- 7:a1a6bff238c1
- Child:
- 10:6c6e09023942
--- a/Ball/Ball.cpp Thu Apr 18 13:04:37 2019 +0000
+++ b/Ball/Ball.cpp Sun Apr 21 17:35:15 2019 +0000
@@ -13,12 +13,14 @@
void Ball::init(int size,int speed)
{
+ direction_set=0;
_size = size;
_x1=42;
_y1=3;
_x = 42;
_y = 15;
bat.init(3,4);
+ bowled=0;
srand(time(NULL));
int direction = rand() % 4; // randomise initial direction.
@@ -49,17 +51,22 @@
}
void Ball::start(N5110 &lcd,int checkHit, Direction dir){
int ball_start_check=bowler_start();
+ printf("bowled %i \n",bowled);
if (ball_start_check==1){
printf("HELLO\n");
- if (bowled==1){
+ printf("y= %i",_y);
+ if (_y!=36){
+ _y+=1;
+ }
+ else if (bowled==1){
update_ball(checkHit, dir);
}
- else if (_y!=36){
- _y+=1;
- }
- else {
+ else if ( _y==36){
bowled=1;
}
+ else{
+ printf("lol");
+ }
}
}
void Ball::draw(N5110 &lcd)
@@ -69,12 +76,16 @@
//lcd.drawRect(_x,_y,_size,_size,FILL_BLACK);
}
void Ball::update_ball(int checkHit, Direction dir){
- if (ballHit!=1 && checkHit==1){
+ if (direction_set!=1){
+ ball_direction=dir;
+ direction_set=1;
+ }
+ if (ballHit!=1 && ballHit!=1){
ballHit=1;
}
if(bowled==1 && ballHit==1){
printf("TEST\n");
- if (dir==NE){
+ if (ball_direction==NE){
printf("x=%i y=%i \n",_x,_y);
if (!(_y == 2 )){
_y--;
@@ -84,10 +95,14 @@
}
printf("HERE");
}
-
}
}
+void Ball::reset(){
+ bowled=0;
+ ballHit=0;
+}
+
void Ball::update()
{
@@ -121,61 +136,98 @@
void Ball::get_direction(Gamepad &pad){
_d = pad.get_direction();
}
+void Ball::draw_field(N5110 &lcd){
+ lcd.drawCircle(field[0].x,field[0].y,2,FILL_BLACK);
+ lcd.drawCircle(field[1].x,field[1].y,2,FILL_BLACK);
+ lcd.drawCircle(field[2].x,field[2].y,2,FILL_BLACK);
+ lcd.drawCircle(field[3].x,field[3].y,2,FILL_BLACK);
+}
void Ball::set_field(N5110 &lcd){
- lcd.drawLine(40,11,40,14,1);
- lcd.drawLine(42,11,42,14,1);
- lcd.drawLine(44,11,44,14,1);
- lcd.drawLine(40,14,44,14,2);
- /*
- lcd.drawCircle(25,2,2,FILL_BLACK); //NE
- lcd.drawCircle(65,2,2,FILL_BLACK); //NW
- lcd.drawCircle(65,40,2,FILL_BLACK); //SE
- lcd.drawCircle(25,40,2,FILL_BLACK); //SW
- lcd.drawCircle(3,20,2,FILL_BLACK); //E
- lcd.drawCircle(80,20,2,FILL_BLACK);
- */
int d=0;
+ int pos=0;
srand(time(NULL));
- for(int i=0;i<3;i++){
- d = 1+ rand() % 6;
- //printf("Direction %i \n",d);
- //while (d==N||d==S){
- //get_direction(pad);
- //}
- if (d==1){ //NE
- field[i].x=25;
- field[i].y=2;
+ for(int i=0;i<6;i++){
+ d = 1+ rand() % 5;
+ pos=rand()%2;
+ for (int j=0;j<10;j++){
+ if (fieldNumbers[j]==d){
+ d=1+ rand() % 6;
+ break;
+ f (d==1){ //NW
+ if (pos==1){
+ field[i].x=30;
+ field[i].y=9;
+ field[i].position=1;
+ }
+ else{
+ field[i].x=25;
+ field[i].y=2;
+ field[i].position=0;
+ }
+ }
+
+
+ if (d==2){ //NE
+ if (pos==1){
+ field[i].x=55;
+ field[i].y=9;
field[i].position=1;
- }
- if (d==2){ //NW
- field[i].x=65;
- field[i].y=2;
- field[i].position=1;
+ }
+ else{
+ field[i].x=65;
+ field[i].y=2;
+ field[i].position=0;
+ }
}
+
+
if (d==3){ //SW
- field[i].x=25;
- field[i].y=40;
- field[i].position=1;
+ if (pos==1){
+ field[i].x=33;
+ field[i].y=40;
+ field[i].position=1;
+ }
+
+ else{
+ field[i].x=25;
+ field[i].y=44;
+ field[i].position=0;
+ }
}
+
if (d==4){ //SE
- field[i].x=65;
- field[i].y=40;
- field[i].position=1;
+ if (pos==1){
+ field[i].x=55;
+ field[i].y=40;
+ field[i].position=1;
+ }
+ else{
+ field[i].x=65;
+ field[i].y=44;
+ field[i].position=0;
+ }
}
- if (d==5){ //E
- field[i].x=3;
- field[i].y=20;
- field[i].position=1;
+
+ if (d==5){ //W
+ if (pos==1){
+ field[i].x=3;
+ field[i].y=25;
+ field[i].position=1;
+ }
+ else{
+ field[i].x=25;
+ field[i].y=25;
+ field[i].position=0;
+ }
}
- if (d==3){ //W
+
+ if (d==6){ //W
field[i].x=80;
field[i].y=20;
field[i].position=1;
}
+
}
- lcd.drawCircle(field[0].x,field[0].y,2,FILL_BLACK);
- lcd.drawCircle(field[1].x,field[1].y,2,FILL_BLACK);
- lcd.drawCircle(field[2].x,field[2].y,2,FILL_BLACK);
- lcd.drawCircle(field[3].x,field[3].y,2,FILL_BLACK);
+
}