ELEC2645 (2017/18) / Mbed 2 deprecated el17yw

Dependencies:   mbed

Committer:
RickYu
Date:
Mon Apr 23 21:10:55 2018 +0000
Revision:
11:7027f69672fc
Parent:
10:ef01b3076040
Child:
12:0d7d3be8bd40
enhance the log in surface

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 2:421fb0670c5c 50
RickYu 2:421fb0670c5c 51 }
RickYu 2:421fb0670c5c 52
RickYu 6:46d0caedf217 53 void engine::check_money_pos(Gamepad &pad)
RickYu 6:46d0caedf217 54 {
RickYu 6:46d0caedf217 55 Vector2D money_pos = _money.get_pos();
RickYu 6:46d0caedf217 56
RickYu 6:46d0caedf217 57 if (money_pos.y > 48) {
RickYu 6:46d0caedf217 58 money_pos.y = 0;
RickYu 7:1964f649676e 59 money_pos.x = rand()%84; //the money will back to top with random x position
RickYu 6:46d0caedf217 60 }
RickYu 6:46d0caedf217 61
RickYu 7:1964f649676e 62 //avoid money out of the screen
RickYu 9:d217a636c18d 63 if (money_pos.x+4 >= 84) {
RickYu 9:d217a636c18d 64 money_pos.x = 80;
RickYu 6:46d0caedf217 65 }
RickYu 6:46d0caedf217 66
RickYu 6:46d0caedf217 67 if (money_pos.x <2){
RickYu 6:46d0caedf217 68 money_pos.x = 3;
RickYu 6:46d0caedf217 69 }
RickYu 6:46d0caedf217 70 _money.set_pos(money_pos);
RickYu 6:46d0caedf217 71
RickYu 6:46d0caedf217 72
RickYu 6:46d0caedf217 73 }
RickYu 6:46d0caedf217 74
RickYu 6:46d0caedf217 75 void engine::check_boom_pos(Gamepad &pad)
RickYu 5:0a116644cce2 76 {
RickYu 5:0a116644cce2 77 Vector2D boom_pos = _boom.get_pos();
RickYu 6:46d0caedf217 78 if (boom_pos.y > 48) {
RickYu 5:0a116644cce2 79 boom_pos.y = 0;
RickYu 7:1964f649676e 80 boom_pos.x = rand()%84; //boom will back to top with random x position
RickYu 5:0a116644cce2 81 }
RickYu 7:1964f649676e 82
RickYu 7:1964f649676e 83 //avoid boom go outside of the screen
RickYu 9:d217a636c18d 84 if (boom_pos.x >= 82) {
RickYu 5:0a116644cce2 85 boom_pos.x = 81;
RickYu 5:0a116644cce2 86 }
RickYu 5:0a116644cce2 87
RickYu 5:0a116644cce2 88 if (boom_pos.x <2){
RickYu 5:0a116644cce2 89 boom_pos.x = 3;
RickYu 6:46d0caedf217 90 }
RickYu 6:46d0caedf217 91 _boom.set_pos(boom_pos);
RickYu 6:46d0caedf217 92 }
RickYu 6:46d0caedf217 93
RickYu 6:46d0caedf217 94 void engine::check_rect_pos(Gamepad &pad)
RickYu 6:46d0caedf217 95 {
RickYu 6:46d0caedf217 96 Vector2D rect_pos = _rect.get_pos();
RickYu 7:1964f649676e 97
RickYu 7:1964f649676e 98 //keep the rect moving inside the screen
RickYu 6:46d0caedf217 99 if (rect_pos.x < 1) {
RickYu 6:46d0caedf217 100 rect_pos.x = 1;
RickYu 6:46d0caedf217 101 }
RickYu 6:46d0caedf217 102 if (rect_pos.x > 74) {
RickYu 6:46d0caedf217 103 rect_pos.x = 74;
RickYu 6:46d0caedf217 104 }
RickYu 6:46d0caedf217 105 _rect.set_pos(rect_pos);
RickYu 6:46d0caedf217 106
RickYu 6:46d0caedf217 107
RickYu 5:0a116644cce2 108 }
RickYu 11:7027f69672fc 109 void engine::check_boom_collision(Gamepad &pad,N5110 &lcd)
RickYu 5:0a116644cce2 110 {
RickYu 5:0a116644cce2 111 Vector2D boom_pos = _boom.get_pos();
RickYu 5:0a116644cce2 112 Vector2D rect_pos = _rect.get_pos();
RickYu 7:1964f649676e 113 Vector2D money_pos = _money.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 11:7027f69672fc 124 engine::print_scores(lcd);
RickYu 6:46d0caedf217 125 }
RickYu 7:1964f649676e 126
RickYu 7:1964f649676e 127 _money.set_pos(money_pos);
RickYu 5:0a116644cce2 128 _boom.set_pos(boom_pos);
RickYu 5:0a116644cce2 129 _rect.set_pos(rect_pos);
RickYu 5:0a116644cce2 130 }
RickYu 11:7027f69672fc 131 /*
RickYu 11:7027f69672fc 132 void engine::check_goal(Gamepad &pad,N5110 &lcd)
RickYu 10:ef01b3076040 133 {
RickYu 10:ef01b3076040 134 Vector2D boom_pos = _boom.get_pos();
RickYu 10:ef01b3076040 135 Vector2D rect_pos = _rect.get_pos();
RickYu 10:ef01b3076040 136 Vector2D money_pos = _money.get_pos();
RickYu 10:ef01b3076040 137
RickYu 10:ef01b3076040 138 if ((boom_pos.x-2 >= rect_pos.x)and
RickYu 10:ef01b3076040 139 (boom_pos.x+2 <= rect_pos.x+10)and
RickYu 11:7027f69672fc 140 (boom_pos.y == 40)){
RickYu 10:ef01b3076040 141 _rect.add_score();
RickYu 11:7027f69672fc 142
RickYu 10:ef01b3076040 143 //_ball.init(_ball_size,_speed);
RickYu 10:ef01b3076040 144 pad.tone(1500.0,0.5);
RickYu 10:ef01b3076040 145 pad.leds_on();
RickYu 10:ef01b3076040 146 wait(0.5);
RickYu 10:ef01b3076040 147 pad.leds_off();
RickYu 10:ef01b3076040 148 }
RickYu 5:0a116644cce2 149
RickYu 10:ef01b3076040 150 }
RickYu 11:7027f69672fc 151 */
RickYu 10:ef01b3076040 152 void engine::print_scores(N5110 &lcd)
RickYu 10:ef01b3076040 153 {
RickYu 10:ef01b3076040 154
RickYu 11:7027f69672fc 155 lcd.clear();
RickYu 11:7027f69672fc 156 lcd.refresh();
RickYu 11:7027f69672fc 157 lcd.printString(" Game Over ",5,1);
RickYu 11:7027f69672fc 158 wait(5);
RickYu 10:ef01b3076040 159 }
RickYu 10:ef01b3076040 160
RickYu 10:ef01b3076040 161
RickYu 10:ef01b3076040 162
RickYu 10:ef01b3076040 163