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: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;}