ELEC2645 (2018/19) / Mbed 2 deprecated el17szs

Dependencies:   mbed

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