Hu Dongyu
/
HuDongyu
publish my project
Start/Start.cpp@7:4b92c1ee6231, 2020-04-29 (annotated)
- Committer:
- dongyuhu
- Date:
- Wed Apr 29 10:51:02 2020 +0000
- Revision:
- 7:4b92c1ee6231
- Parent:
- 5:c31ba165e49c
publish
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dongyuhu | 0:9e95a5ef2659 | 1 | #include "Start.h" |
dongyuhu | 0:9e95a5ef2659 | 2 | bool ifnotstop = true; |
dongyuhu | 0:9e95a5ef2659 | 3 | |
dongyuhu | 0:9e95a5ef2659 | 4 | Start::Start() |
dongyuhu | 0:9e95a5ef2659 | 5 | { |
dongyuhu | 0:9e95a5ef2659 | 6 | |
dongyuhu | 0:9e95a5ef2659 | 7 | } |
dongyuhu | 0:9e95a5ef2659 | 8 | |
dongyuhu | 0:9e95a5ef2659 | 9 | Start::~Start() |
dongyuhu | 0:9e95a5ef2659 | 10 | { |
dongyuhu | 0:9e95a5ef2659 | 11 | |
dongyuhu | 0:9e95a5ef2659 | 12 | } |
dongyuhu | 0:9e95a5ef2659 | 13 | |
dongyuhu | 0:9e95a5ef2659 | 14 | void Start::init(int me_width,int me_height,int attacker_size,int speed) |
dongyuhu | 0:9e95a5ef2659 | 15 | { |
dongyuhu | 0:9e95a5ef2659 | 16 | // initialise the game parameters |
dongyuhu | 0:9e95a5ef2659 | 17 | _me_width = me_width; //3 |
dongyuhu | 0:9e95a5ef2659 | 18 | _me_height = me_height; //3 |
dongyuhu | 0:9e95a5ef2659 | 19 | _attacker_size = attacker_size; //2 |
dongyuhu | 0:9e95a5ef2659 | 20 | _speed = speed; //1 |
dongyuhu | 0:9e95a5ef2659 | 21 | |
dongyuhu | 0:9e95a5ef2659 | 22 | |
dongyuhu | 0:9e95a5ef2659 | 23 | |
dongyuhu | 0:9e95a5ef2659 | 24 | _me.init(_mex,_mey,_me_height,_me_width); |
dongyuhu | 0:9e95a5ef2659 | 25 | |
dongyuhu | 0:9e95a5ef2659 | 26 | _attacker1.init1(_attacker_size,_speed); |
dongyuhu | 0:9e95a5ef2659 | 27 | _attacker2.init2(_attacker_size,_speed); |
dongyuhu | 0:9e95a5ef2659 | 28 | _attacker3.init3(_attacker_size,_speed); |
dongyuhu | 0:9e95a5ef2659 | 29 | _attacker4.init4(_attacker_size,_speed); |
dongyuhu | 0:9e95a5ef2659 | 30 | _attacker5.init5(_attacker_size,_speed); |
dongyuhu | 0:9e95a5ef2659 | 31 | _attacker6.init6(_attacker_size,_speed); |
dongyuhu | 0:9e95a5ef2659 | 32 | _attacker7.init7(_attacker_size,_speed); |
dongyuhu | 0:9e95a5ef2659 | 33 | _attacker8.init8(_attacker_size,_speed); |
dongyuhu | 0:9e95a5ef2659 | 34 | |
dongyuhu | 0:9e95a5ef2659 | 35 | } |
dongyuhu | 0:9e95a5ef2659 | 36 | |
dongyuhu | 0:9e95a5ef2659 | 37 | void Start::read_input(Gamepad &pad) |
dongyuhu | 0:9e95a5ef2659 | 38 | { |
dongyuhu | 0:9e95a5ef2659 | 39 | _d = pad.get_direction(); |
dongyuhu | 0:9e95a5ef2659 | 40 | _mag = pad.get_mag(); |
dongyuhu | 0:9e95a5ef2659 | 41 | } |
dongyuhu | 0:9e95a5ef2659 | 42 | |
dongyuhu | 0:9e95a5ef2659 | 43 | void Start::draw(N5110 &lcd) |
dongyuhu | 0:9e95a5ef2659 | 44 | { |
dongyuhu | 0:9e95a5ef2659 | 45 | |
dongyuhu | 0:9e95a5ef2659 | 46 | lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT); //draw the turrets |
dongyuhu | 0:9e95a5ef2659 | 47 | lcd.drawRect(10,10,64,28,FILL_TRANSPARENT); //map |
dongyuhu | 0:9e95a5ef2659 | 48 | lcd.drawCircle(5,17,4,FILL_TRANSPARENT); |
dongyuhu | 0:9e95a5ef2659 | 49 | lcd.drawCircle(5,31,4,FILL_TRANSPARENT); //the two in left |
dongyuhu | 0:9e95a5ef2659 | 50 | lcd.drawCircle(78,17,4,FILL_TRANSPARENT); |
dongyuhu | 0:9e95a5ef2659 | 51 | lcd.drawCircle(78,31,4,FILL_TRANSPARENT); //right |
dongyuhu | 0:9e95a5ef2659 | 52 | lcd.drawCircle(30,5,4,FILL_TRANSPARENT); |
dongyuhu | 0:9e95a5ef2659 | 53 | lcd.drawCircle(54,5,4,FILL_TRANSPARENT); //up |
dongyuhu | 0:9e95a5ef2659 | 54 | lcd.drawCircle(30,42,4,FILL_TRANSPARENT); |
dongyuhu | 0:9e95a5ef2659 | 55 | lcd.drawCircle(54,42,4,FILL_TRANSPARENT); //down |
dongyuhu | 0:9e95a5ef2659 | 56 | |
dongyuhu | 0:9e95a5ef2659 | 57 | _me.draw(lcd); |
dongyuhu | 0:9e95a5ef2659 | 58 | _attacker1.draw(lcd); |
dongyuhu | 0:9e95a5ef2659 | 59 | _attacker2.draw(lcd); |
dongyuhu | 0:9e95a5ef2659 | 60 | _attacker3.draw(lcd); |
dongyuhu | 0:9e95a5ef2659 | 61 | _attacker4.draw(lcd); |
dongyuhu | 0:9e95a5ef2659 | 62 | _attacker5.draw(lcd); |
dongyuhu | 0:9e95a5ef2659 | 63 | _attacker6.draw(lcd); |
dongyuhu | 0:9e95a5ef2659 | 64 | _attacker7.draw(lcd); |
dongyuhu | 0:9e95a5ef2659 | 65 | _attacker8.draw(lcd); |
dongyuhu | 0:9e95a5ef2659 | 66 | |
dongyuhu | 0:9e95a5ef2659 | 67 | } |
dongyuhu | 0:9e95a5ef2659 | 68 | |
dongyuhu | 0:9e95a5ef2659 | 69 | void Start::update(Gamepad &pad) |
dongyuhu | 0:9e95a5ef2659 | 70 | { |
dongyuhu | 0:9e95a5ef2659 | 71 | _me.update(_d); |
dongyuhu | 0:9e95a5ef2659 | 72 | _attacker1.update(); |
dongyuhu | 0:9e95a5ef2659 | 73 | _attacker2.update(); |
dongyuhu | 0:9e95a5ef2659 | 74 | _attacker3.update(); |
dongyuhu | 0:9e95a5ef2659 | 75 | _attacker4.update(); |
dongyuhu | 0:9e95a5ef2659 | 76 | _attacker5.update(); |
dongyuhu | 0:9e95a5ef2659 | 77 | _attacker6.update(); |
dongyuhu | 0:9e95a5ef2659 | 78 | _attacker7.update(); |
dongyuhu | 0:9e95a5ef2659 | 79 | _attacker8.update(); |
dongyuhu | 0:9e95a5ef2659 | 80 | |
dongyuhu | 0:9e95a5ef2659 | 81 | check_wall_collision(pad); |
dongyuhu | 0:9e95a5ef2659 | 82 | check_body_collisions(pad); |
dongyuhu | 0:9e95a5ef2659 | 83 | |
dongyuhu | 0:9e95a5ef2659 | 84 | } |
dongyuhu | 5:c31ba165e49c | 85 | void setpos(Vector2D &attacker_pos,int x,int y) |
dongyuhu | 3:c89450845b2a | 86 | { |
dongyuhu | 5:c31ba165e49c | 87 | attacker_pos.x = x; |
dongyuhu | 5:c31ba165e49c | 88 | attacker_pos.y = y; |
dongyuhu | 3:c89450845b2a | 89 | } |
dongyuhu | 3:c89450845b2a | 90 | |
dongyuhu | 5:c31ba165e49c | 91 | |
dongyuhu | 5:c31ba165e49c | 92 | void JUDGE(Vector2D &attacker11_pos,Vector2D &attacker22_pos,Vector2D &attacker33_pos,Vector2D &attacker44_pos,Vector2D &attacker55_pos,Vector2D &attacker66_pos,Vector2D &attacker77_pos,Vector2D &attacker88_pos) |
dongyuhu | 3:c89450845b2a | 93 | { |
dongyuhu | 4:fd47d9c11263 | 94 | if(attacker11_pos.y < 10||attacker11_pos.y > 36||attacker11_pos.x < 10||attacker11_pos.x > 72) |
dongyuhu | 3:c89450845b2a | 95 | setpos(attacker11_pos,30,11); |
dongyuhu | 3:c89450845b2a | 96 | else if(attacker22_pos.y < 10||attacker22_pos.y > 36||attacker22_pos.x < 10||attacker22_pos.x > 72) |
dongyuhu | 3:c89450845b2a | 97 | setpos(attacker22_pos,54,10); |
dongyuhu | 3:c89450845b2a | 98 | else if(attacker33_pos.y < 10||attacker33_pos.y > 36||attacker33_pos.x < 10||attacker33_pos.x > 72) |
dongyuhu | 3:c89450845b2a | 99 | setpos(attacker33_pos,10,17); |
dongyuhu | 3:c89450845b2a | 100 | else if(attacker44_pos.y < 10||attacker44_pos.y > 36||attacker11_pos.x < 10||attacker44_pos.x > 72) |
dongyuhu | 3:c89450845b2a | 101 | setpos(attacker44_pos,10,31); |
dongyuhu | 3:c89450845b2a | 102 | else if(attacker55_pos.y < 10||attacker55_pos.y > 36||attacker55_pos.x < 10||attacker55_pos.x > 72) |
dongyuhu | 3:c89450845b2a | 103 | setpos(attacker55_pos,30,36); |
dongyuhu | 3:c89450845b2a | 104 | else if(attacker66_pos.y < 10||attacker66_pos.y > 36||attacker66_pos.x < 10||attacker66_pos.x >72) |
dongyuhu | 3:c89450845b2a | 105 | setpos(attacker66_pos,54,36); |
dongyuhu | 3:c89450845b2a | 106 | else if(attacker77_pos.y < 10||attacker77_pos.y > 36||attacker77_pos.x < 10||attacker77_pos.x >72) |
dongyuhu | 3:c89450845b2a | 107 | setpos(attacker77_pos,71,31); |
dongyuhu | 3:c89450845b2a | 108 | else if(attacker88_pos.y < 10||attacker88_pos.y > 36||attacker88_pos.x < 10||attacker88_pos.x >72) |
dongyuhu | 5:c31ba165e49c | 109 | setpos(attacker88_pos,71,17); |
dongyuhu | 3:c89450845b2a | 110 | } |
dongyuhu | 0:9e95a5ef2659 | 111 | |
dongyuhu | 0:9e95a5ef2659 | 112 | void Start::check_wall_collision(Gamepad &pad) |
dongyuhu | 0:9e95a5ef2659 | 113 | { |
dongyuhu | 0:9e95a5ef2659 | 114 | Vector2D attacker11_pos = _attacker1.get_pos(); |
dongyuhu | 0:9e95a5ef2659 | 115 | Vector2D attacker22_pos = _attacker2.get_pos(); |
dongyuhu | 0:9e95a5ef2659 | 116 | Vector2D attacker33_pos = _attacker3.get_pos(); |
dongyuhu | 0:9e95a5ef2659 | 117 | Vector2D attacker44_pos = _attacker4.get_pos(); |
dongyuhu | 0:9e95a5ef2659 | 118 | Vector2D attacker55_pos = _attacker5.get_pos(); |
dongyuhu | 0:9e95a5ef2659 | 119 | Vector2D attacker66_pos = _attacker6.get_pos(); |
dongyuhu | 0:9e95a5ef2659 | 120 | Vector2D attacker77_pos = _attacker7.get_pos(); |
dongyuhu | 0:9e95a5ef2659 | 121 | Vector2D attacker88_pos = _attacker8.get_pos(); |
dongyuhu | 5:c31ba165e49c | 122 | JUDGE(attacker11_pos,attacker22_pos,attacker33_pos,attacker44_pos,attacker55_pos,attacker66_pos,attacker77_pos,attacker88_pos); |
dongyuhu | 0:9e95a5ef2659 | 123 | _attacker1.set_pos(attacker11_pos); |
dongyuhu | 0:9e95a5ef2659 | 124 | _attacker2.set_pos(attacker22_pos); |
dongyuhu | 0:9e95a5ef2659 | 125 | _attacker3.set_pos(attacker33_pos); |
dongyuhu | 0:9e95a5ef2659 | 126 | _attacker4.set_pos(attacker44_pos); |
dongyuhu | 0:9e95a5ef2659 | 127 | _attacker5.set_pos(attacker55_pos); |
dongyuhu | 0:9e95a5ef2659 | 128 | _attacker6.set_pos(attacker66_pos); |
dongyuhu | 0:9e95a5ef2659 | 129 | _attacker7.set_pos(attacker77_pos); |
dongyuhu | 0:9e95a5ef2659 | 130 | _attacker8.set_pos(attacker88_pos); |
dongyuhu | 0:9e95a5ef2659 | 131 | |
dongyuhu | 0:9e95a5ef2659 | 132 | } |
dongyuhu | 5:c31ba165e49c | 133 | void set_stop(Vector2D &attacker_pos,int x,int y) |
dongyuhu | 5:c31ba165e49c | 134 | { |
dongyuhu | 5:c31ba165e49c | 135 | ifnotstop = false; |
dongyuhu | 5:c31ba165e49c | 136 | attacker_pos.x = x; |
dongyuhu | 5:c31ba165e49c | 137 | attacker_pos.y = y; |
dongyuhu | 5:c31ba165e49c | 138 | } |
dongyuhu | 5:c31ba165e49c | 139 | bool Judge_for_each_situation(Vector2D &me_pos,Vector2D &attacker_pos) |
dongyuhu | 5:c31ba165e49c | 140 | { |
dongyuhu | 5:c31ba165e49c | 141 | if ((attacker_pos.x+1 == me_pos.x) &&(attacker_pos.y+1 == me_pos.y)|| |
dongyuhu | 5:c31ba165e49c | 142 | (attacker_pos.x+1 == me_pos.x) &&(attacker_pos.y == me_pos.y)|| |
dongyuhu | 5:c31ba165e49c | 143 | (attacker_pos.x+1 == me_pos.x) &&(attacker_pos.y-1 == me_pos.y)|| |
dongyuhu | 5:c31ba165e49c | 144 | (attacker_pos.x+1 == me_pos.x) &&(attacker_pos.y-2 == me_pos.y)|| |
dongyuhu | 5:c31ba165e49c | 145 | (attacker_pos.x == me_pos.x+2) &&(attacker_pos.y+1 == me_pos.y)|| |
dongyuhu | 5:c31ba165e49c | 146 | (attacker_pos.x == me_pos.x+2) &&(attacker_pos.y == me_pos.y)|| |
dongyuhu | 5:c31ba165e49c | 147 | (attacker_pos.x == me_pos.x+2) &&(attacker_pos.y-1 == me_pos.y)|| |
dongyuhu | 5:c31ba165e49c | 148 | (attacker_pos.x == me_pos.x+2) &&(attacker_pos.y-2 == me_pos.y)|| |
dongyuhu | 5:c31ba165e49c | 149 | (attacker_pos.x == me_pos.x-1) &&(attacker_pos.y+2 == me_pos.y+1)|| |
dongyuhu | 5:c31ba165e49c | 150 | (attacker_pos.x == me_pos.x ) &&(attacker_pos.y+2 == me_pos.y+1)|| |
dongyuhu | 5:c31ba165e49c | 151 | (attacker_pos.x == me_pos.x+1) &&(attacker_pos.y+2 == me_pos.y+1)|| |
dongyuhu | 5:c31ba165e49c | 152 | (attacker_pos.x == me_pos.x+2) &&(attacker_pos.y+2 == me_pos.y+1)|| |
dongyuhu | 5:c31ba165e49c | 153 | (attacker_pos.x == me_pos.x-1) &&(attacker_pos.y == me_pos.y+2)|| |
dongyuhu | 5:c31ba165e49c | 154 | (attacker_pos.x == me_pos.x ) &&(attacker_pos.y == me_pos.y+2)|| |
dongyuhu | 5:c31ba165e49c | 155 | (attacker_pos.x == me_pos.x+1) &&(attacker_pos.y == me_pos.y+2)|| |
dongyuhu | 5:c31ba165e49c | 156 | (attacker_pos.x == me_pos.x+2) &&(attacker_pos.y == me_pos.y+2)) |
dongyuhu | 5:c31ba165e49c | 157 | return true; |
dongyuhu | 5:c31ba165e49c | 158 | else |
dongyuhu | 5:c31ba165e49c | 159 | return false; |
dongyuhu | 5:c31ba165e49c | 160 | } |
dongyuhu | 5:c31ba165e49c | 161 | void Judge_ifstop(Vector2D &me_pos,Vector2D &attacker11_pos,Vector2D &attacker22_pos,Vector2D &attacker33_pos,Vector2D &attacker44_pos,Vector2D &attacker55_pos,Vector2D &attacker66_pos,Vector2D &attacker77_pos,Vector2D &attacker88_pos) |
dongyuhu | 5:c31ba165e49c | 162 | { |
dongyuhu | 5:c31ba165e49c | 163 | if(Judge_for_each_situation(me_pos,attacker11_pos)) |
dongyuhu | 5:c31ba165e49c | 164 | set_stop(attacker11_pos,30,11); |
dongyuhu | 5:c31ba165e49c | 165 | else if(Judge_for_each_situation(me_pos,attacker22_pos)) |
dongyuhu | 5:c31ba165e49c | 166 | set_stop(attacker22_pos,54,10); |
dongyuhu | 5:c31ba165e49c | 167 | else if(Judge_for_each_situation(me_pos,attacker33_pos)) |
dongyuhu | 5:c31ba165e49c | 168 | set_stop(attacker33_pos,10,17); |
dongyuhu | 5:c31ba165e49c | 169 | else if(Judge_for_each_situation(me_pos,attacker44_pos)) |
dongyuhu | 5:c31ba165e49c | 170 | set_stop(attacker44_pos,10,31); |
dongyuhu | 5:c31ba165e49c | 171 | else if(Judge_for_each_situation(me_pos,attacker55_pos)) |
dongyuhu | 5:c31ba165e49c | 172 | set_stop(attacker55_pos,30,38); |
dongyuhu | 5:c31ba165e49c | 173 | else if(Judge_for_each_situation(me_pos,attacker66_pos)) |
dongyuhu | 5:c31ba165e49c | 174 | set_stop(attacker66_pos,54,38); |
dongyuhu | 5:c31ba165e49c | 175 | else if(Judge_for_each_situation(me_pos,attacker77_pos)) |
dongyuhu | 5:c31ba165e49c | 176 | set_stop(attacker77_pos,74,31); |
dongyuhu | 5:c31ba165e49c | 177 | else if(Judge_for_each_situation(me_pos,attacker88_pos)) |
dongyuhu | 5:c31ba165e49c | 178 | set_stop(attacker88_pos,74,17); |
dongyuhu | 5:c31ba165e49c | 179 | } |
dongyuhu | 0:9e95a5ef2659 | 180 | |
dongyuhu | 0:9e95a5ef2659 | 181 | |
dongyuhu | 5:c31ba165e49c | 182 | void Start::check_body_collisions(Gamepad &pad) |
dongyuhu | 0:9e95a5ef2659 | 183 | { |
dongyuhu | 5:c31ba165e49c | 184 | Vector2D attacker11_pos = _attacker1.get_pos(); |
dongyuhu | 5:c31ba165e49c | 185 | Vector2D attacker22_pos = _attacker2.get_pos(); |
dongyuhu | 5:c31ba165e49c | 186 | Vector2D attacker33_pos = _attacker3.get_pos(); |
dongyuhu | 5:c31ba165e49c | 187 | Vector2D attacker44_pos = _attacker4.get_pos(); |
dongyuhu | 5:c31ba165e49c | 188 | Vector2D attacker55_pos = _attacker5.get_pos(); |
dongyuhu | 5:c31ba165e49c | 189 | Vector2D attacker66_pos = _attacker6.get_pos(); |
dongyuhu | 5:c31ba165e49c | 190 | Vector2D attacker77_pos = _attacker7.get_pos(); |
dongyuhu | 5:c31ba165e49c | 191 | Vector2D attacker88_pos = _attacker8.get_pos(); |
dongyuhu | 5:c31ba165e49c | 192 | Vector2D me_pos = _me.get_pos(); |
dongyuhu | 5:c31ba165e49c | 193 | Judge_ifstop(me_pos,attacker11_pos,attacker22_pos,attacker33_pos,attacker44_pos,attacker55_pos,attacker66_pos,attacker77_pos,attacker88_pos); |
dongyuhu | 0:9e95a5ef2659 | 194 | _attacker1.set_pos(attacker11_pos); |
dongyuhu | 0:9e95a5ef2659 | 195 | _attacker2.set_pos(attacker22_pos); |
dongyuhu | 0:9e95a5ef2659 | 196 | _attacker3.set_pos(attacker33_pos); |
dongyuhu | 0:9e95a5ef2659 | 197 | _attacker4.set_pos(attacker44_pos); |
dongyuhu | 0:9e95a5ef2659 | 198 | _attacker5.set_pos(attacker55_pos); |
dongyuhu | 0:9e95a5ef2659 | 199 | _attacker6.set_pos(attacker66_pos); |
dongyuhu | 0:9e95a5ef2659 | 200 | _attacker7.set_pos(attacker77_pos); |
dongyuhu | 5:c31ba165e49c | 201 | _attacker8.set_pos(attacker88_pos); |
dongyuhu | 0:9e95a5ef2659 | 202 | } |