![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Yang Zhenye 201199680
Dependencies: mbed
RooneyEngine/RooneyEngine.cpp@9:a5a82b3d1102, 2020-05-15 (annotated)
- 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?
User | Revision | Line number | New 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 |