zhenye yang / Mbed 2 deprecated el17zy

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers RooneyEngine.cpp Source File

RooneyEngine.cpp

00001 /* 
00002 ELEC2645 Embedded Systems Project
00003 School of Electronic & Electrical Engineering
00004 University of Leeds
00005 2019/20
00006 
00007 Name:Yang Zhenye
00008 Username:el17zy
00009 Student ID Number:201199680
00010 Date:2020/5/12
00011 */
00012 
00013 #include "RooneyEngine.h"
00014 
00015 char buffer[14];
00016 RooneyEngine::RooneyEngine(){}
00017 RooneyEngine::~RooneyEngine(){}
00018 void RooneyEngine::init() {
00019      reset();
00020      _start_flag = true;
00021      }
00022      
00023 void RooneyEngine::reset() {
00024      _control.c.x=0;
00025      _player_x=38;
00026      _player_y=5;
00027      _collision_flag = false;
00028      _player_score = 0;
00029      _x = WIDTH/2 -  2/2;
00030      _y = HEIGHT/2 - 2/2;
00031      }
00032 
00033 void RooneyEngine::read_input(Gamepad &gamepad) {
00034     _control.c = gamepad.get_mapped_coord();
00035 //    X_flag = gamepad.check_event(Gamepad::X_PRESSED); 
00036 }
00037 
00038 void RooneyEngine::check_reset(N5110 &lcd, Gamepad &gamepad) {
00039  if(get_reset_flag()){
00040      gamepad.leds_on();
00041      lcd.clear();
00042      for (int i = 0; i<60; i++) {
00043          lcd.printString("lose the game", 0, 2);
00044          lcd.printString("sccore:", 0, 4);
00045          wait(0.001);
00046          sprintf(buffer,"%2d",_player_score); 
00047          lcd.printString(buffer,16,4);
00048          reset();
00049          }
00050          }
00051          }
00052 
00053 void RooneyEngine::check_start(N5110 &lcd, Gamepad &gamepad) {
00054      if(_start_flag == true) { 
00055      check_reset(lcd, gamepad);} 
00056     _start_flag = get_start_flag(); 
00057     }
00058     
00059 void RooneyEngine::check_collision(Gamepad &gamepad) { 
00060     if ((_player_x == _x - 2) && (_player_y == _y - 5)) {  
00061     _collision_flag = true;
00062     _player_score++;
00063     }
00064     }
00065 
00066 int RooneyEngine::get_score() {
00067    return _player_score;}
00068     
00069 void RooneyEngine::get_sprite(N5110 &lcd) {
00070     lcd.drawRect(_x,_y,10,20,FILL_BLACK);}
00071 
00072 void RooneyEngine::update_lcd(N5110 &lcd) {
00073        get_sprite(lcd);
00074         sprintf(buffer,"%2d",_player_score);
00075        lcd.printString("score",0,0);
00076       lcd.printString(buffer,30,0); 
00077       }
00078       
00079 int RooneyEngine::get_speed() {return _speed;}
00080     
00081 void RooneyEngine::get_rooney_x(Gamepad &gamepad,int speed,float joy_x) {
00082    _speed=speed;
00083      if (joy_x < float(-0.5)){ 
00084          _speed=-0.5;
00085      _player_x=38+_speed;}
00086      else if (_x<=0){
00087          _speed = 0;
00088         }
00089     if (joy_x > float(0.5)){ 
00090      _speed=0.5;
00091     _player_x=38+_speed;}
00092     else if (_x>=80){
00093         _speed = 0;
00094         }
00095         }
00096 bool RooneyEngine::get_reset_flag() {
00097         return _reset_flag;
00098         }
00099 
00100 bool RooneyEngine::get_start_flag() {
00101         return _start_flag;
00102         }        
00103         
00104 void RooneyEngine::run_engine(N5110 &lcd, Gamepad &gamepad) {
00105     init();
00106     reset();
00107     check_reset(lcd, gamepad);
00108     check_start(lcd, gamepad);
00109     check_collision(gamepad);
00110     _speed=get_speed();
00111     _player_score=get_score();
00112     get_sprite(lcd);
00113     _player.drawrooney(lcd);
00114     update_lcd(lcd);
00115     get_reset_flag();
00116     get_start_flag();
00117     get_rooney_x(gamepad,_speed,_control.c.x);
00118     }    
00119         
00120 
00121     
00122     
00123     
00124     
00125