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); + }