Updated Space Invaders on the mbed. Improved upon Michael Son's "Mbed Space Invaders" at https://os.mbed.com/users/michaeljson/notebook/mbed-space-invaders/.
Dependencies: mbed wave_player mbed-rtos 4DGL-uLCD-SE SparkfunAnalogJoystick SDFileSystem LSM9DS1_Library_cal_updated
Fork of Two-PlayerSpaceInvaders by
test
enemy.cpp@27:9a17cf897bf8, 2021-04-28 (annotated)
- Committer:
- Tito96
- Date:
- Wed Apr 28 14:44:14 2021 +0000
- Revision:
- 27:9a17cf897bf8
- Parent:
- 16:e4e6515bdabb
changed the shape and color of enemy sprites
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
michaeljson | 0:3817adfaeb06 | 1 | #include "enemy.h" |
michaeljson | 0:3817adfaeb06 | 2 | #include "missile.h" |
Tito96 | 27:9a17cf897bf8 | 3 | #include "globals.h" |
michaeljson | 0:3817adfaeb06 | 4 | |
Tito96 | 27:9a17cf897bf8 | 5 | void draw_enemy(int blk_x, int blk_y, int enemy_color, int e_width, int e_height, enemy_t *g) |
michaeljson | 0:3817adfaeb06 | 6 | { |
Tito96 | 27:9a17cf897bf8 | 7 | char *shapes; |
Tito96 | 27:9a17cf897bf8 | 8 | //enemy_color = 0x00FF00; |
Tito96 | 27:9a17cf897bf8 | 9 | if (enemy_color == 0xFF0000){ |
Tito96 | 27:9a17cf897bf8 | 10 | shapes = "0000RRR00000RRRRRRRRR0RRRRRRRRRRRRRR00R00RRRRRRRRRRRRRR000RR0RR00000RR000RR00RR000R000RR"; |
Tito96 | 27:9a17cf897bf8 | 11 | } |
Tito96 | 27:9a17cf897bf8 | 12 | // uLCD.filled_rectangle(blk_x,blk_y,blk_x+e_width,blk_y-e_height,enemy_color); |
wminix3 | 16:e4e6515bdabb | 13 | //const int* colors = [ |
wminix3 | 16:e4e6515bdabb | 14 | //uLCD.BLIT(blk_x, blk_y, e_width, e_height, |
Tito96 | 27:9a17cf897bf8 | 15 | |
Tito96 | 27:9a17cf897bf8 | 16 | |
Tito96 | 27:9a17cf897bf8 | 17 | draw_img(blk_x, blk_y, e_width, e_height, shapes); |
michaeljson | 0:3817adfaeb06 | 18 | } |
michaeljson | 0:3817adfaeb06 | 19 | |
michaeljson | 0:3817adfaeb06 | 20 | void erase_enemy(int blk_x, int blk_y, int enemy_color, int e_width, int e_height) |
michaeljson | 0:3817adfaeb06 | 21 | { |
Tito96 | 27:9a17cf897bf8 | 22 | //uLCD.filled_rectangle(blk_x,blk_y,blk_x+e_width,blk_y-e_height,BACKGROUND_COLOR); |
Tito96 | 27:9a17cf897bf8 | 23 | uLCD.filled_rectangle(blk_x - 2, blk_y, blk_x + 11 + 2, blk_y + 8 + 2,BACKGROUND_COLOR ); |
michaeljson | 0:3817adfaeb06 | 24 | } |
michaeljson | 0:3817adfaeb06 | 25 | |
michaeljson | 0:3817adfaeb06 | 26 | int move_enemy(enemy_t * g, int MOVE_DOWN, int DIRECTION) |
michaeljson | 0:3817adfaeb06 | 27 | { |
michaeljson | 0:3817adfaeb06 | 28 | if (g->status == ENEMY_ALIVE) |
michaeljson | 0:3817adfaeb06 | 29 | { |
michaeljson | 0:3817adfaeb06 | 30 | if (DIRECTION == 1) |
michaeljson | 0:3817adfaeb06 | 31 | { |
michaeljson | 0:3817adfaeb06 | 32 | enemy_erase(g); |
michaeljson | 0:3817adfaeb06 | 33 | g->enemy_blk_x += 1; |
michaeljson | 0:3817adfaeb06 | 34 | enemy_show(g); |
michaeljson | 0:3817adfaeb06 | 35 | |
michaeljson | 0:3817adfaeb06 | 36 | if (g->enemy_blk_y >= 110) |
michaeljson | 0:3817adfaeb06 | 37 | { |
michaeljson | 0:3817adfaeb06 | 38 | MOVE_DOWN = 2; |
michaeljson | 0:3817adfaeb06 | 39 | } |
michaeljson | 0:3817adfaeb06 | 40 | } |
michaeljson | 0:3817adfaeb06 | 41 | else if (DIRECTION == 2) |
michaeljson | 0:3817adfaeb06 | 42 | { |
michaeljson | 0:3817adfaeb06 | 43 | enemy_erase(g); |
michaeljson | 0:3817adfaeb06 | 44 | g->enemy_blk_x -= 1; |
michaeljson | 0:3817adfaeb06 | 45 | enemy_show(g); |
michaeljson | 0:3817adfaeb06 | 46 | |
michaeljson | 0:3817adfaeb06 | 47 | if (g->enemy_blk_y >= 110) |
michaeljson | 0:3817adfaeb06 | 48 | { |
michaeljson | 0:3817adfaeb06 | 49 | MOVE_DOWN = 2; |
michaeljson | 0:3817adfaeb06 | 50 | } |
michaeljson | 0:3817adfaeb06 | 51 | } |
michaeljson | 0:3817adfaeb06 | 52 | |
michaeljson | 0:3817adfaeb06 | 53 | if ((g->enemy_blk_x+g->enemy_width) > (128-g->enemy_width) |
michaeljson | 0:3817adfaeb06 | 54 | || (g->enemy_blk_x < (0+g->enemy_width))) |
michaeljson | 0:3817adfaeb06 | 55 | { |
michaeljson | 0:3817adfaeb06 | 56 | MOVE_DOWN = 1; |
michaeljson | 0:3817adfaeb06 | 57 | } |
michaeljson | 0:3817adfaeb06 | 58 | } |
michaeljson | 0:3817adfaeb06 | 59 | return MOVE_DOWN; |
michaeljson | 0:3817adfaeb06 | 60 | } |
michaeljson | 0:3817adfaeb06 | 61 | |
michaeljson | 0:3817adfaeb06 | 62 | void enemy_init(enemy_t * g, unsigned int blk_x, unsigned int blk_y, unsigned int color) |
michaeljson | 0:3817adfaeb06 | 63 | { |
michaeljson | 0:3817adfaeb06 | 64 | g->enemy_blk_x = blk_x; |
michaeljson | 0:3817adfaeb06 | 65 | g->enemy_blk_y = blk_y; |
Tito96 | 27:9a17cf897bf8 | 66 | g->enemy_color = 0xFF0000; |
Tito96 | 27:9a17cf897bf8 | 67 | g->enemy_width = 11; |
michaeljson | 0:3817adfaeb06 | 68 | g->enemy_height = 8; |
michaeljson | 0:3817adfaeb06 | 69 | g->status = ENEMY_ALIVE; |
michaeljson | 0:3817adfaeb06 | 70 | } |
michaeljson | 0:3817adfaeb06 | 71 | |
michaeljson | 0:3817adfaeb06 | 72 | void enemy_show(enemy_t * g) |
michaeljson | 0:3817adfaeb06 | 73 | { |
Tito96 | 27:9a17cf897bf8 | 74 | draw_enemy(g->enemy_blk_x, g->enemy_blk_y, g->enemy_color, g->enemy_width, g->enemy_height, g); |
michaeljson | 0:3817adfaeb06 | 75 | } |
michaeljson | 0:3817adfaeb06 | 76 | |
michaeljson | 0:3817adfaeb06 | 77 | void enemy_erase(enemy_t * g) |
michaeljson | 0:3817adfaeb06 | 78 | { |
michaeljson | 0:3817adfaeb06 | 79 | erase_enemy(g->enemy_blk_x, g->enemy_blk_y, g->enemy_color, g->enemy_width, g->enemy_height); |
michaeljson | 0:3817adfaeb06 | 80 | } |
michaeljson | 0:3817adfaeb06 | 81 | |
michaeljson | 0:3817adfaeb06 | 82 | int check_enemy(enemy_t * g, missile_t * h) |
michaeljson | 0:3817adfaeb06 | 83 | { |
michaeljson | 0:3817adfaeb06 | 84 | int enemy_died = 0; |
michaeljson | 0:3817adfaeb06 | 85 | if (g->status == ENEMY_ALIVE |
michaeljson | 0:3817adfaeb06 | 86 | && ((h->missile_blk_x >= g->enemy_blk_x) && (h->missile_blk_x <= (g->enemy_blk_x + g->enemy_width)))) |
michaeljson | 0:3817adfaeb06 | 87 | { |
michaeljson | 0:3817adfaeb06 | 88 | enemy_erase(g); |
michaeljson | 0:3817adfaeb06 | 89 | g->status = ENEMY_DEAD; |
michaeljson | 0:3817adfaeb06 | 90 | enemy_died = 1; |
michaeljson | 0:3817adfaeb06 | 91 | h->status = PLAYER_MISSILE_EXPLODED; |
michaeljson | 0:3817adfaeb06 | 92 | } |
michaeljson | 0:3817adfaeb06 | 93 | |
michaeljson | 0:3817adfaeb06 | 94 | return enemy_died; |
michaeljson | 0:3817adfaeb06 | 95 | } |