ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18jgb

Dependencies:   mbed

Committer:
el18jgb
Date:
Sun May 17 17:05:13 2020 +0000
Revision:
7:04a7826ff7e4
Parent:
6:d560ecc21ae6
Child:
8:0b9a824c75fe
game gets harder as peed progressivly gets faster. implemented a cock power up to change speed back down;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el18jgb 5:c37f4ed2cad3 1
el18jgb 5:c37f4ed2cad3 2 #include "Eng.h"
el18jgb 4:6f898b000797 3 Eng::Eng()
el18jgb 4:6f898b000797 4 {
el18jgb 4:6f898b000797 5
el18jgb 4:6f898b000797 6 }
el18jgb 4:6f898b000797 7
el18jgb 4:6f898b000797 8 Eng::~Eng()
el18jgb 4:6f898b000797 9 {
el18jgb 4:6f898b000797 10
el18jgb 4:6f898b000797 11 }
el18jgb 4:6f898b000797 12 // objects
el18jgb 5:c37f4ed2cad3 13 //Gamepad pad;
el18jgb 5:c37f4ed2cad3 14 //N5110 lcd;
el18jgb 5:c37f4ed2cad3 15 Aim aim;
el18jgb 4:6f898b000797 16 Heston heston;
el18jgb 7:04a7826ff7e4 17 Pup pup;
el18jgb 4:6f898b000797 18
el18jgb 4:6f898b000797 19
el18jgb 5:c37f4ed2cad3 20 void Eng::init()
el18jgb 5:c37f4ed2cad3 21 {
el18jgb 5:c37f4ed2cad3 22
el18jgb 5:c37f4ed2cad3 23 aim.init();
el18jgb 5:c37f4ed2cad3 24 heston.init();
el18jgb 7:04a7826ff7e4 25 pup.init();
el18jgb 7:04a7826ff7e4 26 pupon = 0;
el18jgb 7:04a7826ff7e4 27 _tok = 0;
el18jgb 7:04a7826ff7e4 28 flag = true;
el18jgb 4:6f898b000797 29
el18jgb 5:c37f4ed2cad3 30
el18jgb 5:c37f4ed2cad3 31 }
el18jgb 5:c37f4ed2cad3 32
el18jgb 5:c37f4ed2cad3 33 //void Eng::read_input(Gamepad &pad);
el18jgb 6:d560ecc21ae6 34 void Eng::update(Gamepad &pad, bool fire, N5110 &lcd)
el18jgb 4:6f898b000797 35 {
el18jgb 6:d560ecc21ae6 36 if (fire == 1){
el18jgb 6:d560ecc21ae6 37 aim.draw(lcd, fire);
el18jgb 6:d560ecc21ae6 38 lcd.refresh();
el18jgb 6:d560ecc21ae6 39 wait(0.1);
el18jgb 6:d560ecc21ae6 40 check_hit(pad);
el18jgb 6:d560ecc21ae6 41 }
el18jgb 7:04a7826ff7e4 42
el18jgb 7:04a7826ff7e4 43 int c_score = heston.checkscore();
el18jgb 7:04a7826ff7e4 44 if (c_score%5 == 0 && flag == false){
el18jgb 7:04a7826ff7e4 45 flag = true;
el18jgb 7:04a7826ff7e4 46 powerup(lcd, pad);
el18jgb 7:04a7826ff7e4 47 }
el18jgb 7:04a7826ff7e4 48 if (c_score%5 == 1){
el18jgb 7:04a7826ff7e4 49 flag = false;
el18jgb 7:04a7826ff7e4 50 }
el18jgb 7:04a7826ff7e4 51
el18jgb 7:04a7826ff7e4 52 heston.checkstrike();
el18jgb 7:04a7826ff7e4 53
el18jgb 5:c37f4ed2cad3 54 heston.update(pad);
el18jgb 5:c37f4ed2cad3 55 aim.update(pad);
el18jgb 5:c37f4ed2cad3 56
el18jgb 5:c37f4ed2cad3 57
el18jgb 5:c37f4ed2cad3 58 }
el18jgb 5:c37f4ed2cad3 59
el18jgb 5:c37f4ed2cad3 60 void Eng::draw(N5110 &lcd)
el18jgb 5:c37f4ed2cad3 61 {
el18jgb 5:c37f4ed2cad3 62 heston.draw(lcd);
el18jgb 6:d560ecc21ae6 63 aim.draw(lcd, 0);
el18jgb 7:04a7826ff7e4 64 if (pupon == 1){
el18jgb 7:04a7826ff7e4 65 pup.draw(lcd, 0);
el18jgb 7:04a7826ff7e4 66 }
el18jgb 4:6f898b000797 67 }
el18jgb 5:c37f4ed2cad3 68
el18jgb 5:c37f4ed2cad3 69 void Eng::check_hit(Gamepad &pad)
el18jgb 5:c37f4ed2cad3 70 {
el18jgb 5:c37f4ed2cad3 71 Vector2D aim_pos = aim.get_pos();
el18jgb 5:c37f4ed2cad3 72 Vector2D h1_pos = heston.get_pos();
el18jgb 7:04a7826ff7e4 73 Vector2D pup_pos = pup.get_pos();
el18jgb 5:c37f4ed2cad3 74
el18jgb 5:c37f4ed2cad3 75 if (
el18jgb 5:c37f4ed2cad3 76 (aim_pos.y >= h1_pos.y) && //top
el18jgb 5:c37f4ed2cad3 77 (aim_pos.y <= h1_pos.y + 12) && //bottom
el18jgb 5:c37f4ed2cad3 78 (aim_pos.x >= h1_pos.x) && //left
el18jgb 5:c37f4ed2cad3 79 (aim_pos.x <= h1_pos.x + 11) //right
el18jgb 5:c37f4ed2cad3 80 ) {
el18jgb 5:c37f4ed2cad3 81 heston.hit(pad);
el18jgb 7:04a7826ff7e4 82 }
el18jgb 7:04a7826ff7e4 83 if (
el18jgb 7:04a7826ff7e4 84 (pupon == 1) &&
el18jgb 7:04a7826ff7e4 85 (aim_pos.y >= pup_pos.y) && //top
el18jgb 7:04a7826ff7e4 86 (aim_pos.y <= pup_pos.y + 8) && //bottom
el18jgb 7:04a7826ff7e4 87 (aim_pos.x >= pup_pos.x) && //left
el18jgb 7:04a7826ff7e4 88 (aim_pos.x <= pup_pos.x + 8) //right
el18jgb 7:04a7826ff7e4 89 ) {
el18jgb 7:04a7826ff7e4 90 pupon = 0;
el18jgb 7:04a7826ff7e4 91 heston.set_speed(0);
el18jgb 7:04a7826ff7e4 92 pad.led(2,1);
el18jgb 7:04a7826ff7e4 93 pad.led(5,1);
el18jgb 7:04a7826ff7e4 94 wait(0.2);
el18jgb 7:04a7826ff7e4 95 pad.leds_off();
el18jgb 7:04a7826ff7e4 96 }
el18jgb 7:04a7826ff7e4 97 else {
el18jgb 7:04a7826ff7e4 98 heston.miss(pad);
el18jgb 7:04a7826ff7e4 99 }
el18jgb 5:c37f4ed2cad3 100 }
el18jgb 5:c37f4ed2cad3 101
el18jgb 7:04a7826ff7e4 102 void Eng::powerup(N5110 &lcd, Gamepad &pad)
el18jgb 7:04a7826ff7e4 103 {
el18jgb 7:04a7826ff7e4 104 Vector2D aim_pos = aim.get_pos();
el18jgb 7:04a7826ff7e4 105 int x = aim_pos.x;
el18jgb 7:04a7826ff7e4 106 int y = aim_pos.y;
el18jgb 7:04a7826ff7e4 107 pup.position(x, y);
el18jgb 7:04a7826ff7e4 108 pupon = 1;
el18jgb 7:04a7826ff7e4 109
el18jgb 7:04a7826ff7e4 110
el18jgb 5:c37f4ed2cad3 111 }
el18jgb 7:04a7826ff7e4 112
el18jgb 7:04a7826ff7e4 113 void Eng::tik()
el18jgb 7:04a7826ff7e4 114 {
el18jgb 7:04a7826ff7e4 115 _tok = _tok + 1;
el18jgb 7:04a7826ff7e4 116 int rem = _tok%50;
el18jgb 7:04a7826ff7e4 117 if (rem == 0){
el18jgb 7:04a7826ff7e4 118 heston.set_speed(1);
el18jgb 7:04a7826ff7e4 119 }
el18jgb 7:04a7826ff7e4 120 }
el18jgb 7:04a7826ff7e4 121