ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

Committer:
lewisgw
Date:
Sat Apr 06 17:13:37 2019 +0000
Revision:
15:876c047a6ec9
Child:
16:331be5c7ed80
There is now a coin to collect generated in a random position on the map. The number of coins you collect is displayed at the top of the screen.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lewisgw 15:876c047a6ec9 1 #include "Coin.h"
lewisgw 15:876c047a6ec9 2
lewisgw 15:876c047a6ec9 3 // Define sprite arrays.
lewisgw 15:876c047a6ec9 4 int coin_front[5][5] = {
lewisgw 15:876c047a6ec9 5 { 0,0,1,0,0 },
lewisgw 15:876c047a6ec9 6 { 0,1,0,1,0 },
lewisgw 15:876c047a6ec9 7 { 1,0,1,0,1 },
lewisgw 15:876c047a6ec9 8 { 0,1,0,1,0 },
lewisgw 15:876c047a6ec9 9 { 0,0,1,0,0 },
lewisgw 15:876c047a6ec9 10 };
lewisgw 15:876c047a6ec9 11
lewisgw 15:876c047a6ec9 12 int coin_side[5][5] = {
lewisgw 15:876c047a6ec9 13 { 0,0,1,0,0 },
lewisgw 15:876c047a6ec9 14 { 0,0,1,0,0 },
lewisgw 15:876c047a6ec9 15 { 0,0,1,0,0 },
lewisgw 15:876c047a6ec9 16 { 0,0,1,0,0 },
lewisgw 15:876c047a6ec9 17 { 0,0,1,0,0 },
lewisgw 15:876c047a6ec9 18 };
lewisgw 15:876c047a6ec9 19
lewisgw 15:876c047a6ec9 20 // Constructor and destructor.
lewisgw 15:876c047a6ec9 21 Coin::Coin() {}
lewisgw 15:876c047a6ec9 22
lewisgw 15:876c047a6ec9 23 Coin::~Coin() {}
lewisgw 15:876c047a6ec9 24
lewisgw 15:876c047a6ec9 25 void Coin::init() {
lewisgw 15:876c047a6ec9 26 // Initialise starting position of the coin.
lewisgw 15:876c047a6ec9 27 _x = 10;
lewisgw 15:876c047a6ec9 28 _y = 33;
lewisgw 15:876c047a6ec9 29 _coin_counter = 0;
lewisgw 15:876c047a6ec9 30 }
lewisgw 15:876c047a6ec9 31
lewisgw 15:876c047a6ec9 32 void Coin::generate_coin() {
lewisgw 15:876c047a6ec9 33 // Toggle the state of the coin every 3 loop iterations so it looks
lewisgw 15:876c047a6ec9 34 // like it is rotating.
lewisgw 15:876c047a6ec9 35 if (_coin_counter == 2) {
lewisgw 15:876c047a6ec9 36 _coin_counter = 0;
lewisgw 15:876c047a6ec9 37 _rotate_coin = !_rotate_coin;
lewisgw 15:876c047a6ec9 38 }
lewisgw 15:876c047a6ec9 39 _coin_counter++;
lewisgw 15:876c047a6ec9 40 }
lewisgw 15:876c047a6ec9 41
lewisgw 15:876c047a6ec9 42 void Coin::update_coin(int rand_x, int rand_y) {
lewisgw 15:876c047a6ec9 43 // Move the coin to a new random location
lewisgw 15:876c047a6ec9 44 if (rand_y > 50) {
lewisgw 15:876c047a6ec9 45 _y = 13;
lewisgw 15:876c047a6ec9 46 } else {
lewisgw 15:876c047a6ec9 47 _y = 33;
lewisgw 15:876c047a6ec9 48 }
lewisgw 15:876c047a6ec9 49 _x = rand_x;
lewisgw 15:876c047a6ec9 50 if (_x < 3 || _x > 80) {
lewisgw 15:876c047a6ec9 51 _x = 50;
lewisgw 15:876c047a6ec9 52 }
lewisgw 15:876c047a6ec9 53 }
lewisgw 15:876c047a6ec9 54
lewisgw 15:876c047a6ec9 55 int * Coin::get_coin_sprite() {
lewisgw 15:876c047a6ec9 56 if (_rotate_coin) {
lewisgw 15:876c047a6ec9 57 return *coin_front;
lewisgw 15:876c047a6ec9 58 } else {
lewisgw 15:876c047a6ec9 59 return *coin_side;
lewisgw 15:876c047a6ec9 60 }
lewisgw 15:876c047a6ec9 61 }
lewisgw 15:876c047a6ec9 62
lewisgw 15:876c047a6ec9 63 int Coin::get_coin_x() {
lewisgw 15:876c047a6ec9 64 return _x;
lewisgw 15:876c047a6ec9 65 }
lewisgw 15:876c047a6ec9 66
lewisgw 15:876c047a6ec9 67 int Coin::get_coin_y() {
lewisgw 15:876c047a6ec9 68 return _y;
lewisgw 15:876c047a6ec9 69 }