Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Weapons/Weapons.cpp@31:6015e8ed859c, 2020-05-14 (annotated)
- Committer:
- evanso
- Date:
- Thu May 14 18:34:56 2020 +0000
- Revision:
- 31:6015e8ed859c
- Parent:
- 28:a5958497d5ce
- Child:
- 34:85ccc16f24d2
Added get_pos function to position parent class. Added smart bomb weapon to weapons class.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
evanso | 16:1ee3d3804557 | 1 | #include "Weapons.h" |
evanso | 16:1ee3d3804557 | 2 | |
evanso | 16:1ee3d3804557 | 3 | Weapons::Weapons() { |
evanso | 16:1ee3d3804557 | 4 | |
evanso | 16:1ee3d3804557 | 5 | } |
evanso | 16:1ee3d3804557 | 6 | |
evanso | 16:1ee3d3804557 | 7 | Weapons::~Weapons() { |
evanso | 16:1ee3d3804557 | 8 | |
evanso | 16:1ee3d3804557 | 9 | } |
evanso | 16:1ee3d3804557 | 10 | |
evanso | 28:a5958497d5ce | 11 | void Weapons::init(Vector2D sprite_pos, bool sprite_direction, |
evanso | 28:a5958497d5ce | 12 | bool bullet_type) { |
evanso | 28:a5958497d5ce | 13 | //bullet for alien or for spacship |
evanso | 28:a5958497d5ce | 14 | set_direction(sprite_direction); |
evanso | 28:a5958497d5ce | 15 | if (bullet_type){ |
evanso | 28:a5958497d5ce | 16 | calc_bullets_start_pos(sprite_pos, sprite_direction); |
evanso | 28:a5958497d5ce | 17 | }else{ |
evanso | 28:a5958497d5ce | 18 | calc_alien_bullets_start_pos(sprite_pos, sprite_direction); |
evanso | 28:a5958497d5ce | 19 | } |
evanso | 28:a5958497d5ce | 20 | bullet_delete_counter_ = 0; |
evanso | 16:1ee3d3804557 | 21 | } |
evanso | 16:1ee3d3804557 | 22 | |
evanso | 31:6015e8ed859c | 23 | void Weapons::smart_bomb(N5110 &lcd){ |
evanso | 31:6015e8ed859c | 24 | lcd.backLightOff(); |
evanso | 31:6015e8ed859c | 25 | wait(0.02); |
evanso | 31:6015e8ed859c | 26 | lcd.backLightOn(); |
evanso | 31:6015e8ed859c | 27 | wait(0.02); |
evanso | 31:6015e8ed859c | 28 | lcd.backLightOff(); |
evanso | 31:6015e8ed859c | 29 | wait(0.02); |
evanso | 31:6015e8ed859c | 30 | lcd.backLightOn(); |
evanso | 31:6015e8ed859c | 31 | } |
evanso | 31:6015e8ed859c | 32 | |
evanso | 31:6015e8ed859c | 33 | |
evanso | 27:8bb2bd97c319 | 34 | void Weapons::calc_bullets_start_pos(Vector2D spaceship_pos, |
evanso | 27:8bb2bd97c319 | 35 | bool spaceship_sprite_direction_){ |
evanso | 17:25d79cca203a | 36 | // Sets start position of bullet to spaceships nose |
evanso | 17:25d79cca203a | 37 | if (spaceship_sprite_direction_){ |
evanso | 27:8bb2bd97c319 | 38 | position_x_ = spaceship_pos.x + 13; |
evanso | 27:8bb2bd97c319 | 39 | position_y_ = spaceship_pos.y + 2; |
evanso | 17:25d79cca203a | 40 | }else{ |
evanso | 27:8bb2bd97c319 | 41 | position_x_ = spaceship_pos.x; |
evanso | 27:8bb2bd97c319 | 42 | position_y_ = spaceship_pos.y + 2; |
evanso | 17:25d79cca203a | 43 | } |
evanso | 17:25d79cca203a | 44 | #ifdef POSITION_BULLET_DEBUG |
evanso | 27:8bb2bd97c319 | 45 | printf("X = %d\n", position_x_); |
evanso | 27:8bb2bd97c319 | 46 | printf("Y = %d\n", position_y_); |
evanso | 17:25d79cca203a | 47 | #endif |
evanso | 17:25d79cca203a | 48 | } |
evanso | 17:25d79cca203a | 49 | |
evanso | 18:11068b98e261 | 50 | void Weapons::draw_bullet(N5110 &lcd){ |
evanso | 23:cc44e26c08fa | 51 | // draws then moves the bullet position |
evanso | 27:8bb2bd97c319 | 52 | lcd.drawLine(position_x_, position_y_, position_x_+1, position_y_, 1); |
evanso | 27:8bb2bd97c319 | 53 | if(direction_){ |
evanso | 27:8bb2bd97c319 | 54 | position_x_ += 3; |
evanso | 19:1bc0a2d22054 | 55 | }else{ |
evanso | 27:8bb2bd97c319 | 56 | position_x_ -= 3; |
evanso | 19:1bc0a2d22054 | 57 | } |
evanso | 28:a5958497d5ce | 58 | |
evanso | 28:a5958497d5ce | 59 | // increments counter |
evanso | 28:a5958497d5ce | 60 | bullet_delete_counter_++; |
evanso | 28:a5958497d5ce | 61 | } |
evanso | 28:a5958497d5ce | 62 | |
evanso | 28:a5958497d5ce | 63 | void Weapons::calc_alien_bullets_start_pos(Vector2D alien_pos, |
evanso | 28:a5958497d5ce | 64 | bool alien_sprite_direction_){ |
evanso | 28:a5958497d5ce | 65 | // Sets start position of bullet to middle of alien |
evanso | 28:a5958497d5ce | 66 | position_x_ = alien_pos.x + 3; |
evanso | 28:a5958497d5ce | 67 | position_y_ = alien_pos.y + 3; |
evanso | 28:a5958497d5ce | 68 | |
evanso | 28:a5958497d5ce | 69 | //gets a random direction for the bullet to travel in |
evanso | 28:a5958497d5ce | 70 | set_random_move(); |
evanso | 28:a5958497d5ce | 71 | } |
evanso | 28:a5958497d5ce | 72 | |
evanso | 28:a5958497d5ce | 73 | void Weapons::draw_alien_bullet(N5110 &lcd,Direction d_){ |
evanso | 28:a5958497d5ce | 74 | // draws then moves the bullet position |
evanso | 28:a5958497d5ce | 75 | lcd.drawLine(position_x_, position_y_, position_x_+1, position_y_, 1); |
evanso | 28:a5958497d5ce | 76 | |
evanso | 28:a5958497d5ce | 77 | //Moves bullet in random direction and accomodates for spaceship movement |
evanso | 28:a5958497d5ce | 78 | move_direction(); |
evanso | 28:a5958497d5ce | 79 | position_x_ += calc_bullet_movement(d_); |
evanso | 20:febd920ec29e | 80 | |
evanso | 20:febd920ec29e | 81 | // increments counter |
evanso | 28:a5958497d5ce | 82 | bullet_delete_counter_++; |
evanso | 28:a5958497d5ce | 83 | } |
evanso | 28:a5958497d5ce | 84 | |
evanso | 28:a5958497d5ce | 85 | int Weapons::calc_bullet_movement(Direction d_){ |
evanso | 28:a5958497d5ce | 86 | // moves the bullets in oposite direction to spaceship when it's position is |
evanso | 28:a5958497d5ce | 87 | // at min and max x positions and joystick has direction |
evanso | 28:a5958497d5ce | 88 | if (d_ == W || d_ == NW || d_ == SW){ |
evanso | 28:a5958497d5ce | 89 | return 2; |
evanso | 28:a5958497d5ce | 90 | }else if (d_ == E || d_ == NE || d_ == SE){ |
evanso | 28:a5958497d5ce | 91 | return -2; |
evanso | 28:a5958497d5ce | 92 | }else { |
evanso | 28:a5958497d5ce | 93 | return 0; |
evanso | 28:a5958497d5ce | 94 | } |
evanso | 18:11068b98e261 | 95 | } |
evanso | 18:11068b98e261 | 96 | |
evanso | 22:053c11a202e1 | 97 | void Weapons::set_pos_one(Vector2D pos){ |
evanso | 27:8bb2bd97c319 | 98 | position_x_ = pos.x; |
evanso | 27:8bb2bd97c319 | 99 | position_y_ = pos.y; |
evanso | 22:053c11a202e1 | 100 | } |
evanso | 22:053c11a202e1 | 101 | |
evanso | 28:a5958497d5ce | 102 | void Weapons::set_direction(bool sprite_direction){ |
evanso | 28:a5958497d5ce | 103 | direction_ = sprite_direction; |
evanso | 20:febd920ec29e | 104 | } |
evanso | 20:febd920ec29e | 105 | |
evanso | 20:febd920ec29e | 106 | int Weapons::get_bullet_delete_counter(){ |
evanso | 28:a5958497d5ce | 107 | return bullet_delete_counter_; |
evanso | 20:febd920ec29e | 108 | } |
evanso | 20:febd920ec29e | 109 | |
evanso | 20:febd920ec29e | 110 | bool Weapons::get_direction(){ |
evanso | 27:8bb2bd97c319 | 111 | return direction_; |
evanso | 16:1ee3d3804557 | 112 | } |