James Cummins / Mbed 2 deprecated el17jnc

Dependencies:   mbed

Committer:
JamesCummins
Date:
Sun Apr 28 10:20:52 2019 +0000
Revision:
32:eff573ad8e42
Parent:
31:c95f1b1d6423
Child:
36:9f7463a65fe0
Classic mode finished and working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JamesCummins 29:42651f87522b 1 #include "ClassicEngine.h"
JamesCummins 29:42651f87522b 2
JamesCummins 29:42651f87522b 3 ClassicEngine::ClassicEngine(){
JamesCummins 29:42651f87522b 4 }
JamesCummins 29:42651f87522b 5
JamesCummins 29:42651f87522b 6 ClassicEngine::~ClassicEngine(){
JamesCummins 20:4a39a1a2be51 7 }
JamesCummins 20:4a39a1a2be51 8
JamesCummins 29:42651f87522b 9 void ClassicEngine::init(Ball &ball, Map &map){
JamesCummins 31:c95f1b1d6423 10 _frames = 0;
JamesCummins 29:42651f87522b 11 _ball_coord.x = 42;
JamesCummins 29:42651f87522b 12 _ball_coord.y = 24;
JamesCummins 29:42651f87522b 13 _map_coord.x = 47;
JamesCummins 29:42651f87522b 14 _map_coord.y = 25;
JamesCummins 29:42651f87522b 15 ball.set_position(_ball_coord);
JamesCummins 29:42651f87522b 16 map.set_map_display(_map_coord);
JamesCummins 20:4a39a1a2be51 17 }
JamesCummins 29:42651f87522b 18
JamesCummins 29:42651f87522b 19 void ClassicEngine::classic_update(Ball &ball, FXOS8700CQ &accelerometer, Map &map){
JamesCummins 29:42651f87522b 20 map.read_input(accelerometer, ball);
JamesCummins 29:42651f87522b 21 map.update();
JamesCummins 29:42651f87522b 22 ball.set_position(_ball_coord);
JamesCummins 31:c95f1b1d6423 23 _frames++;
JamesCummins 31:c95f1b1d6423 24 _map_coord = map.get_map_display();
JamesCummins 31:c95f1b1d6423 25 _abs_ball_pos.x = _ball_coord.x + _map_coord.x;
JamesCummins 31:c95f1b1d6423 26 _abs_ball_pos.y = _ball_coord.y + _map_coord.y;
JamesCummins 29:42651f87522b 27 }
JamesCummins 29:42651f87522b 28
JamesCummins 29:42651f87522b 29 void ClassicEngine::classic_draw(N5110 &lcd, Map &map, Ball &ball){
JamesCummins 29:42651f87522b 30 map.draw(lcd);
JamesCummins 29:42651f87522b 31 ball.draw(lcd);
JamesCummins 29:42651f87522b 32 }
JamesCummins 31:c95f1b1d6423 33
JamesCummins 31:c95f1b1d6423 34 bool ClassicEngine::finished(){
JamesCummins 31:c95f1b1d6423 35 bool finished = false;
JamesCummins 32:eff573ad8e42 36 if(_abs_ball_pos.x > 402 && //these are the range of coords the ball
JamesCummins 32:eff573ad8e42 37 _abs_ball_pos.x < 407 && //can have as it crosses the finish line
JamesCummins 32:eff573ad8e42 38 _abs_ball_pos.y > 101 && //must be given as a range rather than an
JamesCummins 32:eff573ad8e42 39 _abs_ball_pos.y < 141 ){ //exact number as .x and .y are floats so
JamesCummins 32:eff573ad8e42 40 finished = true; //will never exactly equal 405
JamesCummins 31:c95f1b1d6423 41 }
JamesCummins 31:c95f1b1d6423 42 else{ finished = false; }
JamesCummins 32:eff573ad8e42 43 printf("ball pos = %f , %f | finished = %d\n", _abs_ball_pos.x, _abs_ball_pos.y, finished);
JamesCummins 31:c95f1b1d6423 44 return finished;
JamesCummins 31:c95f1b1d6423 45 }
JamesCummins 31:c95f1b1d6423 46
JamesCummins 31:c95f1b1d6423 47 void ClassicEngine::mode_complete(N5110 &lcd, Gamepad &gamepad, int fps){
JamesCummins 31:c95f1b1d6423 48 while(!(gamepad.check_event(gamepad.A_PRESSED))){
JamesCummins 31:c95f1b1d6423 49 float time_taken = _frames / fps;
JamesCummins 31:c95f1b1d6423 50 char buffer[6];
JamesCummins 31:c95f1b1d6423 51 sprintf(buffer, "%4.f", time_taken);
JamesCummins 31:c95f1b1d6423 52 lcd.clear();
JamesCummins 31:c95f1b1d6423 53 lcd.printString("You win!", 18, 1);
JamesCummins 31:c95f1b1d6423 54 lcd.printString("Your time:", 12, 3);
JamesCummins 31:c95f1b1d6423 55 lcd.printString(buffer, 18,4);
JamesCummins 31:c95f1b1d6423 56 lcd.printChar('s',54,4);
JamesCummins 31:c95f1b1d6423 57 lcd.printString("(A = back)", 24, 5);
JamesCummins 31:c95f1b1d6423 58 lcd.refresh();
JamesCummins 31:c95f1b1d6423 59 wait(0.2);
JamesCummins 31:c95f1b1d6423 60 }
JamesCummins 31:c95f1b1d6423 61 }
JamesCummins 31:c95f1b1d6423 62
JamesCummins 31:c95f1b1d6423 63 bool ClassicEngine::mode_failed(N5110 &lcd, Gamepad &gamepad, Ball &ball, Map &map){
JamesCummins 31:c95f1b1d6423 64 bool back_to_start_menu = false;
JamesCummins 31:c95f1b1d6423 65 while(1){
JamesCummins 31:c95f1b1d6423 66 wait(0.2);
JamesCummins 31:c95f1b1d6423 67 lcd.clear();
JamesCummins 32:eff573ad8e42 68 lcd.printString("Game over!", 12, 1);
JamesCummins 31:c95f1b1d6423 69 lcd.printString("Back = A", 18, 3);
JamesCummins 31:c95f1b1d6423 70 lcd.printString("Replay = B", 12, 4);
JamesCummins 31:c95f1b1d6423 71 lcd.refresh();
JamesCummins 31:c95f1b1d6423 72 if(gamepad.check_event(gamepad.A_PRESSED)){
JamesCummins 31:c95f1b1d6423 73 back_to_start_menu = true;
JamesCummins 31:c95f1b1d6423 74 break; }
JamesCummins 31:c95f1b1d6423 75 if(gamepad.check_event(gamepad.B_PRESSED)){
JamesCummins 31:c95f1b1d6423 76 back_to_start_menu = false;
JamesCummins 31:c95f1b1d6423 77 break; }
JamesCummins 31:c95f1b1d6423 78 }
JamesCummins 31:c95f1b1d6423 79 return back_to_start_menu;
JamesCummins 31:c95f1b1d6423 80 }