ELEC2645 (2018/19) / Mbed 2 deprecated fy14lkaa

Dependencies:   mbed

Committer:
fy14lkaa
Date:
Sat Apr 27 19:39:26 2019 +0000
Revision:
70:7f0b330ff40b
Parent:
69:19f1ad7b548e
Child:
71:1f6b665fc047
added void function to check the goals using Gamepad library and added if statement.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fy14lkaa 12:45b1249b3d9a 1 #include "SpaceInvadersEngine.h"
fy14lkaa 12:45b1249b3d9a 2
fy14lkaa 12:45b1249b3d9a 3 SpaceInvadersEngine::SpaceInvadersEngine()
fy14lkaa 12:45b1249b3d9a 4 {
fy14lkaa 12:45b1249b3d9a 5
fy14lkaa 12:45b1249b3d9a 6 }
fy14lkaa 12:45b1249b3d9a 7
fy14lkaa 12:45b1249b3d9a 8 SpaceInvadersEngine::~SpaceInvadersEngine()
fy14lkaa 12:45b1249b3d9a 9 {
fy14lkaa 57:45c5de9cefdf 10
fy14lkaa 57:45c5de9cefdf 11
fy14lkaa 12:45b1249b3d9a 12 }
fy14lkaa 12:45b1249b3d9a 13
fy14lkaa 12:45b1249b3d9a 14
fy14lkaa 12:45b1249b3d9a 15
fy14lkaa 12:45b1249b3d9a 16
fy14lkaa 57:45c5de9cefdf 17 void SpaceInvadersEngine::init(int space_ship_width,int space_ship_height,int bullet_size, int Alien_size, int speed)
fy14lkaa 57:45c5de9cefdf 18 {
fy14lkaa 57:45c5de9cefdf 19 // initialise the game parameters
fy14lkaa 57:45c5de9cefdf 20
fy14lkaa 13:9d6ee753eca6 21 _space_ship_width= space_ship_width;
fy14lkaa 13:9d6ee753eca6 22 _space_ship_height= space_ship_height;
fy14lkaa 13:9d6ee753eca6 23 _bullet_size= bullet_size;
fy14lkaa 57:45c5de9cefdf 24 _Alien_size= Alien_size;
fy14lkaa 13:9d6ee753eca6 25 _speed= speed;
fy14lkaa 57:45c5de9cefdf 26
fy14lkaa 57:45c5de9cefdf 27
fy14lkaa 12:45b1249b3d9a 28 }
fy14lkaa 12:45b1249b3d9a 29
fy14lkaa 12:45b1249b3d9a 30 void SpaceInvadersEngine::read_input(Gamepad &pad)
fy14lkaa 12:45b1249b3d9a 31 {
fy14lkaa 12:45b1249b3d9a 32 _d = pad.get_direction();
fy14lkaa 13:9d6ee753eca6 33 _mag = pad.get_mag();
fy14lkaa 12:45b1249b3d9a 34 }
fy14lkaa 12:45b1249b3d9a 35
fy14lkaa 57:45c5de9cefdf 36 void SpaceInvadersEngine::draw(N5110 &lcd)
fy14lkaa 12:45b1249b3d9a 37 {
fy14lkaa 12:45b1249b3d9a 38 // draw the elements in the LCD buffer
fy14lkaa 12:45b1249b3d9a 39 // pitch
fy14lkaa 57:45c5de9cefdf 40
fy14lkaa 12:45b1249b3d9a 41 //score
fy14lkaa 57:45c5de9cefdf 42 print_scores(lcd);
fy14lkaa 57:45c5de9cefdf 43 _Alien.draw(lcd);
fy14lkaa 58:74742c821522 44 _space_ship.draw(lcd);
fy14lkaa 59:9e8e8d6be5b2 45 _bullet.draw(lcd);
fy14lkaa 56:c8fc0a1f4132 46 }
fy14lkaa 57:45c5de9cefdf 47
fy14lkaa 60:c5f97e0a14eb 48 void SpaceInvadersEngine::update(Gamepad &pad)
fy14lkaa 60:c5f97e0a14eb 49 {
fy14lkaa 62:0bd9b22ad5ed 50 check_goal(pad);
fy14lkaa 66:0123bd3dcbc6 51 _bullet.update();
fy14lkaa 66:0123bd3dcbc6 52 _space_ship.update(_d,_mag);
fy14lkaa 60:c5f97e0a14eb 53
fy14lkaa 66:0123bd3dcbc6 54 _A1ien.update(_d,_mag);
fy14lkaa 66:0123bd3dcbc6 55
fy14lkaa 66:0123bd3dcbc6 56 check_Alien_collision(pad);
fy14lkaa 66:0123bd3dcbc6 57 check_space_ship_collisions(pad);
fy14lkaa 66:0123bd3dcbc6 58
fy14lkaa 57:45c5de9cefdf 59
fy14lkaa 66:0123bd3dcbc6 60 }
fy14lkaa 66:0123bd3dcbc6 61 void SpaceInvadersEngine::check_Alien_collision(Gamepad &pad)
fy14lkaa 66:0123bd3dcbc6 62 {
fy14lkaa 57:45c5de9cefdf 63
fy14lkaa 66:0123bd3dcbc6 64 // read current bullet attributes
fy14lkaa 66:0123bd3dcbc6 65 Vector2D bullet_pos = _bullet.get_pos();
fy14lkaa 66:0123bd3dcbc6 66 Vector2D bullet_velocity = _bullet.get_velocity();
fy14lkaa 66:0123bd3dcbc6 67 //check if the bullet hit the top of the alien
fy14lkaa 57:45c5de9cefdf 68
fy14lkaa 68:175190a03cbd 69 // check if the bullet hits top of the Alien
fy14lkaa 67:4299b64ad5fc 70 if (bullet_pos.y <= 1) { // 1 due to 1 pixel boundary
fy14lkaa 67:4299b64ad5fc 71 bullet_pos.y = 1; // bounce off ceiling without going off screen
fy14lkaa 67:4299b64ad5fc 72 bullet_velocity.y = -bullet_velocity.y;
fy14lkaa 67:4299b64ad5fc 73 // audio feedback
fy14lkaa 67:4299b64ad5fc 74 pad.tone(750.0,0.1);
fy14lkaa 67:4299b64ad5fc 75 }
fy14lkaa 67:4299b64ad5fc 76
fy14lkaa 68:175190a03cbd 77 // check if the bullet hits bottom of the Alien
fy14lkaa 68:175190a03cbd 78 else if (bullet_pos.y + _bullet_size >= (HEIGHT-1) ) { // bottom pixel is 47
fy14lkaa 68:175190a03cbd 79 // hit bottom
fy14lkaa 68:175190a03cbd 80 bullet_pos.y = (HEIGHT-1) - _bullet_size; // stops bullet going off screen
fy14lkaa 68:175190a03cbd 81 bullet_velocity.y = -bullet_velocity.y;
fy14lkaa 68:175190a03cbd 82 // audio feedback
fy14lkaa 68:175190a03cbd 83 pad.tone(750.0,0.1);
fy14lkaa 68:175190a03cbd 84 }
fy14lkaa 68:175190a03cbd 85
fy14lkaa 68:175190a03cbd 86 // update bullet parameters
fy14lkaa 68:175190a03cbd 87 _bullet.set_velocity(bullet_velocity);
fy14lkaa 68:175190a03cbd 88 _bullet.set_pos(bullet_pos);
fy14lkaa 66:0123bd3dcbc6 89 }
fy14lkaa 54:095eae44895b 90
fy14lkaa 70:7f0b330ff40b 91 /*void SpaceInvadersEngine::check_space_ship_collisions(Gamepad &pad){
fy14lkaa 69:19f1ad7b548e 92 // read current bullet attributes
fy14lkaa 69:19f1ad7b548e 93 Vector2D bullet_pos = _bullet.get_pos();
fy14lkaa 69:19f1ad7b548e 94 Vector2D bullet_velocity = _bullet.get_velocity();
fy14lkaa 70:7f0b330ff40b 95 }
fy14lkaa 70:7f0b330ff40b 96 */
fy14lkaa 70:7f0b330ff40b 97 void SpaceInvadersEngin::check_goal(Gamepad &pad)
fy14lkaa 70:7f0b330ff40b 98 {
fy14lkaa 70:7f0b330ff40b 99 Vector2D bullet_pos = _bullet.get_pos();
fy14lkaa 70:7f0b330ff40b 100 // spaceship has scored
fy14lkaa 70:7f0b330ff40b 101 if (bullet_pos.x + _bullet_size < 0) {
fy14lkaa 70:7f0b330ff40b 102 _sace_ship.add_score();
fy14lkaa 70:7f0b330ff40b 103 _bullet.init(_bullet_size,_speed);
fy14lkaa 70:7f0b330ff40b 104 pad.tone(1500.0,0.5);
fy14lkaa 70:7f0b330ff40b 105 pad.leds_on();
fy14lkaa 70:7f0b330ff40b 106 wait(0.5);
fy14lkaa 70:7f0b330ff40b 107 pad.leds_off();
fy14lkaa 70:7f0b330ff40b 108 }
fy14lkaa 56:c8fc0a1f4132 109
fy14lkaa 57:45c5de9cefdf 110
fy14lkaa 68:175190a03cbd 111
fy14lkaa 68:175190a03cbd 112