Yang Zhenye 201199680

Dependencies:   mbed

Committer:
yangzhenye
Date:
Fri May 15 07:27:23 2020 +0000
Revision:
9:a5a82b3d1102
Parent:
8:c02c278320c0
el17zy Yang Zhenye

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yangzhenye 5:fcad75e9b9e1 1 /*
yangzhenye 5:fcad75e9b9e1 2 ELEC2645 Embedded Systems Project
yangzhenye 5:fcad75e9b9e1 3 School of Electronic & Electrical Engineering
yangzhenye 5:fcad75e9b9e1 4 University of Leeds
yangzhenye 5:fcad75e9b9e1 5 2019/20
yangzhenye 5:fcad75e9b9e1 6
yangzhenye 5:fcad75e9b9e1 7 Name:Yang Zhenye
yangzhenye 5:fcad75e9b9e1 8 Username:el17zy
yangzhenye 5:fcad75e9b9e1 9 Student ID Number:201199680
yangzhenye 5:fcad75e9b9e1 10 Date:2020/5/12
yangzhenye 5:fcad75e9b9e1 11 */
yangzhenye 5:fcad75e9b9e1 12
yangzhenye 7:a69ae964412c 13 #include "RooneyEngine.h"
yangzhenye 3:30c81344beff 14
yangzhenye 9:a5a82b3d1102 15 char buffer[14];
yangzhenye 5:fcad75e9b9e1 16 RooneyEngine::RooneyEngine(){}
yangzhenye 5:fcad75e9b9e1 17 RooneyEngine::~RooneyEngine(){}
yangzhenye 4:eb8dca1dc341 18 void RooneyEngine::init() {
yangzhenye 3:30c81344beff 19 reset();
yangzhenye 3:30c81344beff 20 _start_flag = true;
yangzhenye 3:30c81344beff 21 }
yangzhenye 3:30c81344beff 22
yangzhenye 4:eb8dca1dc341 23 void RooneyEngine::reset() {
yangzhenye 9:a5a82b3d1102 24 _control.c.x=0;
yangzhenye 3:30c81344beff 25 _player_x=38;
yangzhenye 3:30c81344beff 26 _player_y=5;
yangzhenye 7:a69ae964412c 27 _collision_flag = false;
yangzhenye 3:30c81344beff 28 _player_score = 0;
yangzhenye 7:a69ae964412c 29 _x = WIDTH/2 - 2/2;
yangzhenye 7:a69ae964412c 30 _y = HEIGHT/2 - 2/2;
yangzhenye 3:30c81344beff 31 }
yangzhenye 3:30c81344beff 32
yangzhenye 9:a5a82b3d1102 33 void RooneyEngine::read_input(Gamepad &gamepad) {
yangzhenye 9:a5a82b3d1102 34 _control.c = gamepad.get_mapped_coord();
yangzhenye 9:a5a82b3d1102 35 // X_flag = gamepad.check_event(Gamepad::X_PRESSED);
yangzhenye 9:a5a82b3d1102 36 }
yangzhenye 9:a5a82b3d1102 37
yangzhenye 7:a69ae964412c 38 void RooneyEngine::check_reset(N5110 &lcd, Gamepad &gamepad) {
yangzhenye 3:30c81344beff 39 if(get_reset_flag()){
yangzhenye 3:30c81344beff 40 gamepad.leds_on();
yangzhenye 3:30c81344beff 41 lcd.clear();
yangzhenye 3:30c81344beff 42 for (int i = 0; i<60; i++) {
yangzhenye 3:30c81344beff 43 lcd.printString("lose the game", 0, 2);
yangzhenye 3:30c81344beff 44 lcd.printString("sccore:", 0, 4);
yangzhenye 9:a5a82b3d1102 45 wait(0.001);
yangzhenye 3:30c81344beff 46 sprintf(buffer,"%2d",_player_score);
yangzhenye 3:30c81344beff 47 lcd.printString(buffer,16,4);
yangzhenye 3:30c81344beff 48 reset();
yangzhenye 3:30c81344beff 49 }
yangzhenye 3:30c81344beff 50 }
yangzhenye 7:a69ae964412c 51 }
yangzhenye 3:30c81344beff 52
yangzhenye 4:eb8dca1dc341 53 void RooneyEngine::check_start(N5110 &lcd, Gamepad &gamepad) {
yangzhenye 3:30c81344beff 54 if(_start_flag == true) {
yangzhenye 3:30c81344beff 55 check_reset(lcd, gamepad);}
yangzhenye 3:30c81344beff 56 _start_flag = get_start_flag();
yangzhenye 3:30c81344beff 57 }
yangzhenye 3:30c81344beff 58
yangzhenye 4:eb8dca1dc341 59 void RooneyEngine::check_collision(Gamepad &gamepad) {
yangzhenye 7:a69ae964412c 60 if ((_player_x == _x - 2) && (_player_y == _y - 5)) {
yangzhenye 3:30c81344beff 61 _collision_flag = true;
yangzhenye 3:30c81344beff 62 _player_score++;
yangzhenye 3:30c81344beff 63 }
yangzhenye 7:a69ae964412c 64 }
yangzhenye 3:30c81344beff 65
yangzhenye 9:a5a82b3d1102 66 int RooneyEngine::get_score() {
yangzhenye 9:a5a82b3d1102 67 return _player_score;}
yangzhenye 3:30c81344beff 68
yangzhenye 9:a5a82b3d1102 69 void RooneyEngine::get_sprite(N5110 &lcd) {
yangzhenye 9:a5a82b3d1102 70 lcd.drawRect(_x,_y,10,20,FILL_BLACK);}
yangzhenye 3:30c81344beff 71
yangzhenye 9:a5a82b3d1102 72 void RooneyEngine::update_lcd(N5110 &lcd) {
yangzhenye 9:a5a82b3d1102 73 get_sprite(lcd);
yangzhenye 9:a5a82b3d1102 74 sprintf(buffer,"%2d",_player_score);
yangzhenye 9:a5a82b3d1102 75 lcd.printString("score",0,0);
yangzhenye 9:a5a82b3d1102 76 lcd.printString(buffer,30,0);
yangzhenye 9:a5a82b3d1102 77 }
yangzhenye 9:a5a82b3d1102 78
yangzhenye 9:a5a82b3d1102 79 int RooneyEngine::get_speed() {return _speed;}
yangzhenye 9:a5a82b3d1102 80
yangzhenye 9:a5a82b3d1102 81 void RooneyEngine::get_rooney_x(Gamepad &gamepad,int speed,float joy_x) {
yangzhenye 9:a5a82b3d1102 82 _speed=speed;
yangzhenye 9:a5a82b3d1102 83 if (joy_x < float(-0.5)){
yangzhenye 9:a5a82b3d1102 84 _speed=-0.5;
yangzhenye 9:a5a82b3d1102 85 _player_x=38+_speed;}
yangzhenye 9:a5a82b3d1102 86 else if (_x<=0){
yangzhenye 9:a5a82b3d1102 87 _speed = 0;
yangzhenye 9:a5a82b3d1102 88 }
yangzhenye 9:a5a82b3d1102 89 if (joy_x > float(0.5)){
yangzhenye 9:a5a82b3d1102 90 _speed=0.5;
yangzhenye 9:a5a82b3d1102 91 _player_x=38+_speed;}
yangzhenye 9:a5a82b3d1102 92 else if (_x>=80){
yangzhenye 9:a5a82b3d1102 93 _speed = 0;
yangzhenye 9:a5a82b3d1102 94 }
yangzhenye 9:a5a82b3d1102 95 }
yangzhenye 4:eb8dca1dc341 96 bool RooneyEngine::get_reset_flag() {
yangzhenye 3:30c81344beff 97 return _reset_flag;
yangzhenye 3:30c81344beff 98 }
yangzhenye 3:30c81344beff 99
yangzhenye 4:eb8dca1dc341 100 bool RooneyEngine::get_start_flag() {
yangzhenye 3:30c81344beff 101 return _start_flag;
yangzhenye 3:30c81344beff 102 }
yangzhenye 3:30c81344beff 103
yangzhenye 4:eb8dca1dc341 104 void RooneyEngine::run_engine(N5110 &lcd, Gamepad &gamepad) {
yangzhenye 3:30c81344beff 105 init();
yangzhenye 3:30c81344beff 106 reset();
yangzhenye 8:c02c278320c0 107 check_reset(lcd, gamepad);
yangzhenye 8:c02c278320c0 108 check_start(lcd, gamepad);
yangzhenye 8:c02c278320c0 109 check_collision(gamepad);
yangzhenye 9:a5a82b3d1102 110 _speed=get_speed();
yangzhenye 9:a5a82b3d1102 111 _player_score=get_score();
yangzhenye 9:a5a82b3d1102 112 get_sprite(lcd);
yangzhenye 9:a5a82b3d1102 113 _player.drawrooney(lcd);
yangzhenye 9:a5a82b3d1102 114 update_lcd(lcd);
yangzhenye 3:30c81344beff 115 get_reset_flag();
yangzhenye 3:30c81344beff 116 get_start_flag();
yangzhenye 9:a5a82b3d1102 117 get_rooney_x(gamepad,_speed,_control.c.x);
yangzhenye 9:a5a82b3d1102 118 }
yangzhenye 3:30c81344beff 119
yangzhenye 3:30c81344beff 120
yangzhenye 3:30c81344beff 121
yangzhenye 3:30c81344beff 122
yangzhenye 3:30c81344beff 123
yangzhenye 3:30c81344beff 124
yangzhenye 3:30c81344beff 125