ELEC2645 (2018/19) / Mbed 2 deprecated el17szs

Dependencies:   mbed

Revision:
20:9d21599fe350
Parent:
19:e1ded5acb64a
Child:
21:a0904159e183
diff -r e1ded5acb64a -r 9d21599fe350 Cricket/Cricket.cpp
--- a/Cricket/Cricket.cpp	Sat Apr 27 18:16:59 2019 +0000
+++ b/Cricket/Cricket.cpp	Tue Apr 30 10:27:23 2019 +0000
@@ -23,7 +23,7 @@
    fieldersCount=0;
    init_field_counter=0;
    init_positions();
-   fielder_no=-1;
+   _position_no=-1;
    check_bowled=0;
    _ball_limit=3;
    check_hit=0;
@@ -42,7 +42,7 @@
    ballHit=0;
    init_field_counter=0;
    init_positions();
-   fielder_no=-1;
+   _position_no=-1;
    check_bowled=0;
    outfield_fielder=-1;
    check_update=-1;
@@ -54,12 +54,16 @@
     ball.reset_ball_count();
 }
 void Cricket::game(N5110 &lcd,Gamepad &pad){
+     
      if (new_game==1){
          scoreboard.generate_target();
-         bat.info_screen(lcd,scoreboard.get_target());
+         bat.first_menu(lcd,pad);
+         //bat.info_screen(lcd,scoreboard.get_target());
          new_game=0;       
      }
+     
      if (new_round==1){
+        
         if (scoreboard.compare_target()==true){
             bat.victory_menu(lcd);
             game_reset();
@@ -69,6 +73,7 @@
            game_reset();
         }
         else{
+          
           check_ball_count(lcd);
           pad.leds_off();
           round_reset();
@@ -79,9 +84,8 @@
         }
     }
     else
-    {  
         play_game(lcd,pad);
-    }  
+    
 }
 bool Cricket::check_ball_count(N5110 &lcd){
     int count=ball.get_ball_count();
@@ -104,12 +108,12 @@
         }
 }
 void Cricket::init_positions(){
-    set_init_positions(42,1,N,1);
+    set_init_positions(42,15,N,1);
     set_init_positions(84,30,E,2);
     set_init_positions(0,30,W,3);
     set_init_positions(2,44,SW,4);
     set_init_positions(0,2,NW,5);
-    set_init_positions(84,1,NE,6);
+    set_init_positions(65,2,NE,6);
     set_init_positions(60,44,SE,7);
 }
 void Cricket::set_init_positions(int x,int y, Direction direction,int no){
@@ -147,10 +151,8 @@
          update_scoreboard(check_update,field[fielder_check].position+1,pad);    
   }
   if (fielder_check==-1){
-        check_update=ball.update_ball(positions[fielder_no].x,positions[fielder_no].y);
-        
-//        /printf("location x %i y %i\n  update %i\n",positions[fielder_no].x,positions[fielder_no].y,check_update);
-        printf("update %i\n",check_update);
+        check_update=ball.update_ball(positions[_position_no].x,positions[_position_no].y);
+        printf("location x %i y %i\n  update %i\n",positions[_position_no].x,positions[_position_no].y,check_update);
         if (loft_check==1)
          update_scoreboard(check_update,6,pad);
         else
@@ -159,14 +161,22 @@
 }
 } 
 void Cricket::update_scoreboard(int checkUpdate, int runs,Gamepad &pad){
-    printf("enter check");
     if (checkUpdate==1){     
-    scoreboard.update_score(runs);
-    pad.led(3,1.0);
-    wait(0.5);
-    new_round=1;  
+        if (ball_direction==N){
+            scoreboard.update_score(0);
+            pad.led(3,1.0);
+            wait(0.5);
+            new_round=1;
+        }
+        else{
+            scoreboard.update_score(runs);
+            pad.led(3,1.0);
+            wait(0.5);
+            new_round=1;
+        }  
     }
 }
+
 void Cricket::batsman_out(int option,Gamepad &pad, N5110 &lcd){
     scoreboard.reset();
     pad.led(1,1.0);
@@ -186,22 +196,22 @@
 }
 void Cricket::set_ball_direction(Direction dir){
     if (direction_set!=1){ 
-    for (int i=0;i<init_field_counter+1;i++){
-      if(dir==positions[i].dir){
-          ball_direction=dir;
-          printf(" BALL DIRECTION %i x %i y %i \n",positions[i].no,positions[i].x,positions[i].y);
-          fielder_no=i;
-          direction_set=1;
-          break; 
-      }
+        for (int i=0;i<init_field_counter+1;i++){
+            if(dir==positions[i].dir){
+                ball_direction=dir;
+                printf(" BALL DIRECTION %i x %i y %i \n",positions[i].no,positions[i].x,positions[i].y);
+                _position_no=i;
+                direction_set=1;
+                break; 
+            }
+        }
     }
 }
-}
 int Cricket::check_fielder(Direction dir){
     Vector2D p;
-    //if (dir==N){
-//        return -1;
-//    }
+    if (dir==N){
+        return -1;
+    }
     for (int i=0;i<8;i++){
       if(dir == field[i].dir){
          return i;