ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_PROJECT_EL18KK

Dependencies:   mbed

Revision:
9:e6566d09f087
Parent:
8:5ede90f99a27
Child:
10:dbc149804a06
--- a/Ball/Ball.cpp	Sun May 17 17:59:30 2020 +0000
+++ b/Ball/Ball.cpp	Sun May 17 23:00:04 2020 +0000
@@ -84,80 +84,81 @@
     {0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0}
 };
 
-Ball::Ball() {}
+Ball::Ball(N5110 &lcd){ _lcd = &lcd;}
 
 Ball::~Ball() {}
 
-void Ball::init(N5110 & lcd){
+void Ball::init(){
+    _level = 1;
     _ball_x = BALL_INIT_X;
     _ball_y = BALL_INIT_Y;
-    lcd.drawSprite(_ball_x, _ball_y, 11, 15, (int*) ball);
+    _lcd->drawSprite(_ball_x, _ball_y, 11, 15, (int*) ball);
 }
 
-void Ball::setLocation(int x, int y, N5110 &lcd){
-    lcd.drawSprite(x, y, 11, 15, (int*) ball);
+void Ball::setLocation(int x, int y){
+    _lcd->drawSprite(x, y, 11, 15, (int*) ball);
 }
 
-void Ball::playShot(int user_input_x, int user_input_y, N5110 &lcd){
+void Ball::playShot(int user_input_x, int user_input_y){
     _user_input_x = user_input_x;
     _user_input_y = user_input_y;
     int ball_sprite = 0;
     while (_user_input_x < _ball_x || _user_input_y < _ball_y){
-        display_background(lcd);
+        display_background();
         if (_user_input_x < _ball_x){_ball_x -= 2.5;}
         else if (_user_input_x > _ball_x){_ball_x += 2.5;}
         
         if (_user_input_y < _ball_y){_ball_y -= 2.5;}
         else if (_user_input_y > _ball_y){_ball_y += 2.5;}
         
-        lcd.drawSprite(_ball_x, _ball_y, 11, 15, (int*) ball[ball_sprite]);
-        if (_ball_y <= 30){ball_sprite = 1;}//ball moved further
-        else if (_ball_y <= 24){ball_sprite = 2;}//ball is furthest
-        printf("ball sprite no: %d \n", ball_sprite);
-        printf("ball y pos = %d \n", _ball_y);
+        _lcd->drawSprite(_ball_x, _ball_y, 11, 15, (int*) ball[ball_sprite]);
+        if (_ball_y >= 35){ball_sprite = 1;}//ball moved further
+        else if (_ball_y <= 30){ball_sprite = 2;}//ball is furthest
+        //printf("ball sprite no: %d \n", ball_sprite);
+        //printf("ball y pos = %d \n", _ball_y);
         wait_ms(100);
-        lcd.refresh();
-        lcd.clear();
+        _lcd->refresh();
+        _lcd->clear();
     }
 }
 
-void Ball::bounceBall(int x_pos, int y_pos, int height, int status, N5110 &lcd){
+void Ball::bounceBall(int x_pos, int y_pos, int height, int status){
     _user_input_x = x_pos;
     _user_input_y = y_pos;
     _height = height;
     _status = status;
     int dir = -2;
     if (_status){
-        lcd.drawSprite(_user_input_x, _user_input_y, 11, 15, (int*) ball[0]);
+        _lcd->drawSprite(_user_input_x, _user_input_y, 11, 15, (int*) ball[0]);
         if (_user_input_y <= (y_pos - _height)){dir = 3;} //falls faster 
         else if (_user_input_y >= (y_pos)){dir = -2;}
         _user_input_y += dir;
         wait(0.1);
-        lcd.refresh();
+        _lcd->refresh();
         //clears background only in the area the ball is moving
-        lcd.drawRect(_user_input_x, (48 - y_pos), 13, (y_pos + _height), FILL_WHITE);
+        _lcd->drawRect(_user_input_x, (48 - y_pos), 13, (y_pos + _height), FILL_WHITE);
     }
 }
-void Ball::display_background(N5110 &lcd){
+void Ball::display_background(){
     //draw goal
-    lcd.drawSprite(7,0,24,70,(int *)goal);
+    _lcd->drawSprite(7,0,24,70,(int *)goal);
     //draw grass
-    lcd.drawSprite(1,17,7,7,(int *)grass);
-    lcd.drawSprite(76,17,7,7,(int *)grass);
-    lcd.drawSprite(67,26,3,3,(int *)grass_small);
-    lcd.drawSprite(67,26,3,3,(int *)grass_small);
-    lcd.drawSprite(6,30,3,3,(int *)grass_small);
-    lcd.drawSprite(72,32,3,3,(int *)grass_small);
-    lcd.drawSprite(69,43,3,3,(int *)grass_small);
-    lcd.drawSprite(16,29,3,3,(int *)grass_small);
+    _lcd->drawSprite(1,17,7,7,(int *)grass);
+    _lcd->drawSprite(76,17,7,7,(int *)grass);
+    _lcd->drawSprite(67,26,3,3,(int *)grass_small);
+    _lcd->drawSprite(67,26,3,3,(int *)grass_small);
+    _lcd->drawSprite(6,30,3,3,(int *)grass_small);
+    _lcd->drawSprite(72,32,3,3,(int *)grass_small);
+    _lcd->drawSprite(69,43,3,3,(int *)grass_small);
+    _lcd->drawSprite(16,29,3,3,(int *)grass_small);
     //ground line
-    lcd.drawLine(0,24,84,24,1);
+    _lcd->drawLine(0,24,84,24,1);
     //score card
-    lcd.drawRect(0,38,15,11,FILL_TRANSPARENT);
+    _lcd->drawRect(0,38,15,11,FILL_TRANSPARENT);
     //power meter
-    lcd.drawRect(77,27,6,20,FILL_TRANSPARENT);
+    _lcd->drawRect(77,27,6,20,FILL_TRANSPARENT);
     // aim triangle base
-    lcd.drawLine(WIDTH / 2 + 5, 41, WIDTH / 2 - 5, 41, 1);
+    _lcd->drawLine(WIDTH / 2 + 5, 41, WIDTH / 2 - 5, 41, 1);
 }
 void Ball::set_status(bool status){_status = status;}