ELEC2645 (2017/18) / Mbed 2 deprecated el17yw

Dependencies:   mbed

Committer:
RickYu
Date:
Mon Apr 23 22:36:11 2018 +0000
Revision:
15:0a55e0ac8421
Parent:
14:a4176da69b49
Child:
16:75122d14153c
add score while not work.....

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RickYu 2:421fb0670c5c 1 #include "engine.h"
RickYu 2:421fb0670c5c 2
RickYu 2:421fb0670c5c 3 engine::engine()
RickYu 2:421fb0670c5c 4 {
RickYu 2:421fb0670c5c 5
RickYu 2:421fb0670c5c 6 }
RickYu 2:421fb0670c5c 7
RickYu 2:421fb0670c5c 8 engine::~engine()
RickYu 2:421fb0670c5c 9 {
RickYu 2:421fb0670c5c 10
RickYu 2:421fb0670c5c 11 }
RickYu 2:421fb0670c5c 12
RickYu 5:0a116644cce2 13 void engine::init(int speed)
RickYu 2:421fb0670c5c 14 {
RickYu 2:421fb0670c5c 15 // initialise the game parameters
RickYu 6:46d0caedf217 16 //_speed = speed;
RickYu 2:421fb0670c5c 17
RickYu 2:421fb0670c5c 18 }
RickYu 2:421fb0670c5c 19 void engine::draw(N5110 &lcd)
RickYu 2:421fb0670c5c 20 {
RickYu 2:421fb0670c5c 21
RickYu 7:1964f649676e 22 //draw and re-draw rectangle, boom and money on the screen
RickYu 7:1964f649676e 23 _rect.draw(lcd);
RickYu 3:1a134243e2f0 24 _boom.draw(lcd);
RickYu 6:46d0caedf217 25 _money.draw(lcd);
RickYu 2:421fb0670c5c 26
RickYu 2:421fb0670c5c 27
RickYu 2:421fb0670c5c 28 }
RickYu 2:421fb0670c5c 29
RickYu 2:421fb0670c5c 30 void engine::read_input(Gamepad &pad)
RickYu 2:421fb0670c5c 31 {
RickYu 2:421fb0670c5c 32 _d = pad.get_direction();
RickYu 2:421fb0670c5c 33 _mag = pad.get_mag();
RickYu 2:421fb0670c5c 34 }
RickYu 2:421fb0670c5c 35
RickYu 2:421fb0670c5c 36
RickYu 11:7027f69672fc 37 void engine::update(Gamepad &pad,N5110 &lcd)
RickYu 2:421fb0670c5c 38 {
RickYu 6:46d0caedf217 39
RickYu 7:1964f649676e 40 _rect.update(_d,_mag); //get the position of rect when jopystick moves
RickYu 7:1964f649676e 41
RickYu 7:1964f649676e 42 //boom and money will keep moving with initial settings
RickYu 7:1964f649676e 43 _boom.update();
RickYu 6:46d0caedf217 44 _money.update();
RickYu 5:0a116644cce2 45
RickYu 6:46d0caedf217 46 check_boom_pos(pad);
RickYu 6:46d0caedf217 47 check_money_pos(pad);
RickYu 6:46d0caedf217 48 check_rect_pos(pad);
RickYu 11:7027f69672fc 49 check_boom_collision(pad,lcd);
RickYu 13:7ad2072d63ac 50 check_money_collision(pad,lcd);
RickYu 2:421fb0670c5c 51
RickYu 2:421fb0670c5c 52 }
RickYu 2:421fb0670c5c 53
RickYu 6:46d0caedf217 54 void engine::check_money_pos(Gamepad &pad)
RickYu 6:46d0caedf217 55 {
RickYu 6:46d0caedf217 56 Vector2D money_pos = _money.get_pos();
RickYu 6:46d0caedf217 57
RickYu 6:46d0caedf217 58 if (money_pos.y > 48) {
RickYu 6:46d0caedf217 59 money_pos.y = 0;
RickYu 7:1964f649676e 60 money_pos.x = rand()%84; //the money will back to top with random x position
RickYu 6:46d0caedf217 61 }
RickYu 6:46d0caedf217 62
RickYu 7:1964f649676e 63 //avoid money out of the screen
RickYu 9:d217a636c18d 64 if (money_pos.x+4 >= 84) {
RickYu 9:d217a636c18d 65 money_pos.x = 80;
RickYu 6:46d0caedf217 66 }
RickYu 6:46d0caedf217 67
RickYu 6:46d0caedf217 68 if (money_pos.x <2){
RickYu 6:46d0caedf217 69 money_pos.x = 3;
RickYu 6:46d0caedf217 70 }
RickYu 6:46d0caedf217 71 _money.set_pos(money_pos);
RickYu 6:46d0caedf217 72
RickYu 6:46d0caedf217 73
RickYu 6:46d0caedf217 74 }
RickYu 6:46d0caedf217 75
RickYu 6:46d0caedf217 76 void engine::check_boom_pos(Gamepad &pad)
RickYu 5:0a116644cce2 77 {
RickYu 5:0a116644cce2 78 Vector2D boom_pos = _boom.get_pos();
RickYu 6:46d0caedf217 79 if (boom_pos.y > 48) {
RickYu 5:0a116644cce2 80 boom_pos.y = 0;
RickYu 7:1964f649676e 81 boom_pos.x = rand()%84; //boom will back to top with random x position
RickYu 5:0a116644cce2 82 }
RickYu 7:1964f649676e 83
RickYu 7:1964f649676e 84 //avoid boom go outside of the screen
RickYu 9:d217a636c18d 85 if (boom_pos.x >= 82) {
RickYu 5:0a116644cce2 86 boom_pos.x = 81;
RickYu 5:0a116644cce2 87 }
RickYu 5:0a116644cce2 88
RickYu 5:0a116644cce2 89 if (boom_pos.x <2){
RickYu 5:0a116644cce2 90 boom_pos.x = 3;
RickYu 6:46d0caedf217 91 }
RickYu 6:46d0caedf217 92 _boom.set_pos(boom_pos);
RickYu 6:46d0caedf217 93 }
RickYu 6:46d0caedf217 94
RickYu 6:46d0caedf217 95 void engine::check_rect_pos(Gamepad &pad)
RickYu 6:46d0caedf217 96 {
RickYu 6:46d0caedf217 97 Vector2D rect_pos = _rect.get_pos();
RickYu 7:1964f649676e 98
RickYu 7:1964f649676e 99 //keep the rect moving inside the screen
RickYu 6:46d0caedf217 100 if (rect_pos.x < 1) {
RickYu 6:46d0caedf217 101 rect_pos.x = 1;
RickYu 6:46d0caedf217 102 }
RickYu 6:46d0caedf217 103 if (rect_pos.x > 74) {
RickYu 6:46d0caedf217 104 rect_pos.x = 74;
RickYu 6:46d0caedf217 105 }
RickYu 6:46d0caedf217 106 _rect.set_pos(rect_pos);
RickYu 6:46d0caedf217 107
RickYu 6:46d0caedf217 108
RickYu 5:0a116644cce2 109 }
RickYu 11:7027f69672fc 110 void engine::check_boom_collision(Gamepad &pad,N5110 &lcd)
RickYu 5:0a116644cce2 111 {
RickYu 5:0a116644cce2 112 Vector2D boom_pos = _boom.get_pos();
RickYu 5:0a116644cce2 113 Vector2D rect_pos = _rect.get_pos();
RickYu 5:0a116644cce2 114
RickYu 9:d217a636c18d 115 if (
RickYu 11:7027f69672fc 116 (boom_pos.x-3 >= rect_pos.x)and
RickYu 11:7027f69672fc 117 (boom_pos.x+3 <= rect_pos.x+10)and
RickYu 11:7027f69672fc 118 (boom_pos.y == 40))
RickYu 10:ef01b3076040 119
RickYu 7:1964f649676e 120 {
RickYu 10:ef01b3076040 121 boom_pos.y = 0;
RickYu 10:ef01b3076040 122 boom_pos.x = rand()%84;
RickYu 6:46d0caedf217 123 pad.tone(750.0,0.1);
RickYu 13:7ad2072d63ac 124 engine::print_scores(lcd);
RickYu 6:46d0caedf217 125 }
RickYu 7:1964f649676e 126
RickYu 13:7ad2072d63ac 127
RickYu 5:0a116644cce2 128 _boom.set_pos(boom_pos);
RickYu 5:0a116644cce2 129 _rect.set_pos(rect_pos);
RickYu 5:0a116644cce2 130 }
RickYu 13:7ad2072d63ac 131
RickYu 13:7ad2072d63ac 132 void engine::check_money_collision(Gamepad &pad,N5110 &lcd)
RickYu 10:ef01b3076040 133 {
RickYu 10:ef01b3076040 134 Vector2D rect_pos = _rect.get_pos();
RickYu 10:ef01b3076040 135 Vector2D money_pos = _money.get_pos();
RickYu 13:7ad2072d63ac 136 if (
RickYu 14:a4176da69b49 137 (money_pos.x >= rect_pos.x+3)and
RickYu 14:a4176da69b49 138 (money_pos.x+4 <= rect_pos.x+7)and
RickYu 14:a4176da69b49 139 (money_pos.y+2 == 40))
RickYu 13:7ad2072d63ac 140
RickYu 13:7ad2072d63ac 141 {
RickYu 13:7ad2072d63ac 142 money_pos.y = 0;
RickYu 13:7ad2072d63ac 143 money_pos.x = rand()%84;
RickYu 13:7ad2072d63ac 144 pad.tone(750.0,0.1);
RickYu 15:0a55e0ac8421 145 _rect.add_score();
RickYu 13:7ad2072d63ac 146 //engine::print_scores(lcd);
RickYu 13:7ad2072d63ac 147 }
RickYu 5:0a116644cce2 148
RickYu 13:7ad2072d63ac 149 _money.set_pos(money_pos);
RickYu 13:7ad2072d63ac 150 _rect.set_pos(rect_pos);
RickYu 10:ef01b3076040 151 }
RickYu 13:7ad2072d63ac 152
RickYu 13:7ad2072d63ac 153
RickYu 13:7ad2072d63ac 154
RickYu 10:ef01b3076040 155 void engine::print_scores(N5110 &lcd)
RickYu 10:ef01b3076040 156 {
RickYu 15:0a55e0ac8421 157 int rect_score = _rect.get_score();
RickYu 15:0a55e0ac8421 158 char buffer1[14];
RickYu 15:0a55e0ac8421 159
RickYu 11:7027f69672fc 160 lcd.clear();
RickYu 15:0a55e0ac8421 161 sprintf(buffer1,"%2d",rect_score);
RickYu 15:0a55e0ac8421 162 lcd.printString(buffer1,WIDTH/2 - 20,1);
RickYu 15:0a55e0ac8421 163
RickYu 13:7ad2072d63ac 164 lcd.printString(" Game Over",0,1);
RickYu 11:7027f69672fc 165 lcd.refresh();
RickYu 14:a4176da69b49 166 wait(2);
RickYu 10:ef01b3076040 167 }
RickYu 10:ef01b3076040 168
RickYu 10:ef01b3076040 169
RickYu 10:ef01b3076040 170
RickYu 10:ef01b3076040 171