Bingshuo Chen
/
Monster_copy_copy
27
Monster/monster.cpp@0:ef959ad27a16, 2021-04-08 (annotated)
- Committer:
- cbs27
- Date:
- Thu Apr 08 02:09:25 2021 +0000
- Revision:
- 0:ef959ad27a16
- Child:
- 1:48a028c4089e
Monster
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cbs27 | 0:ef959ad27a16 | 1 | #include "monster.h" |
cbs27 | 0:ef959ad27a16 | 2 | |
cbs27 | 0:ef959ad27a16 | 3 | Monster::Monster() {} |
cbs27 | 0:ef959ad27a16 | 4 | |
cbs27 | 0:ef959ad27a16 | 5 | void Monster::monster_main(N5110 &lcd, DigitalIn &button_A, DigitalIn &button_B, DigitalIn &button_C, DigitalIn &button_D) { |
cbs27 | 0:ef959ad27a16 | 6 | |
cbs27 | 0:ef959ad27a16 | 7 | //设置人物初始位置 |
cbs27 | 0:ef959ad27a16 | 8 | monster_x0 = 4; |
cbs27 | 0:ef959ad27a16 | 9 | monster_y0 = 19; |
cbs27 | 0:ef959ad27a16 | 10 | |
cbs27 | 0:ef959ad27a16 | 11 | //设置反派位置 |
cbs27 | 0:ef959ad27a16 | 12 | monster_x1 = 23; |
cbs27 | 0:ef959ad27a16 | 13 | monster_y1 = 19; |
cbs27 | 0:ef959ad27a16 | 14 | turn1 = 0; |
cbs27 | 0:ef959ad27a16 | 15 | |
cbs27 | 0:ef959ad27a16 | 16 | monster_x2 = 18; |
cbs27 | 0:ef959ad27a16 | 17 | monster_y2 = 37; |
cbs27 | 0:ef959ad27a16 | 18 | turn2 = 0; |
cbs27 | 0:ef959ad27a16 | 19 | |
cbs27 | 0:ef959ad27a16 | 20 | monster_x3 = 68; |
cbs27 | 0:ef959ad27a16 | 21 | monster_y3 = 37; |
cbs27 | 0:ef959ad27a16 | 22 | turn3 = 0; |
cbs27 | 0:ef959ad27a16 | 23 | |
cbs27 | 0:ef959ad27a16 | 24 | //开启宝石 |
cbs27 | 0:ef959ad27a16 | 25 | jewels_on1 = 1; |
cbs27 | 0:ef959ad27a16 | 26 | jewels_on2 = 1; |
cbs27 | 0:ef959ad27a16 | 27 | jewels_on3 = 1; |
cbs27 | 0:ef959ad27a16 | 28 | jewels_on4 = 1; |
cbs27 | 0:ef959ad27a16 | 29 | jewels_on5 = 1; |
cbs27 | 0:ef959ad27a16 | 30 | jewels_on6 = 1; |
cbs27 | 0:ef959ad27a16 | 31 | jewels_on7 = 1; |
cbs27 | 0:ef959ad27a16 | 32 | |
cbs27 | 0:ef959ad27a16 | 33 | while(1) { |
cbs27 | 0:ef959ad27a16 | 34 | |
cbs27 | 0:ef959ad27a16 | 35 | lcd.clear(); |
cbs27 | 0:ef959ad27a16 | 36 | |
cbs27 | 0:ef959ad27a16 | 37 | //画背景 |
cbs27 | 0:ef959ad27a16 | 38 | this->drawbackground1(lcd); |
cbs27 | 0:ef959ad27a16 | 39 | this->drawlifes(lcd); |
cbs27 | 0:ef959ad27a16 | 40 | this->drawscores(lcd); |
cbs27 | 0:ef959ad27a16 | 41 | |
cbs27 | 0:ef959ad27a16 | 42 | //画宝石和反派 |
cbs27 | 0:ef959ad27a16 | 43 | this->draw_jewels(lcd); |
cbs27 | 0:ef959ad27a16 | 44 | this->draw_blackmonsters(lcd); |
cbs27 | 0:ef959ad27a16 | 45 | |
cbs27 | 0:ef959ad27a16 | 46 | //画人物 |
cbs27 | 0:ef959ad27a16 | 47 | this->draw_monster(lcd, button_A, button_B, button_C, button_D); |
cbs27 | 0:ef959ad27a16 | 48 | |
cbs27 | 0:ef959ad27a16 | 49 | lcd.refresh(); |
cbs27 | 0:ef959ad27a16 | 50 | |
cbs27 | 0:ef959ad27a16 | 51 | thread_sleep_for(20); |
cbs27 | 0:ef959ad27a16 | 52 | |
cbs27 | 0:ef959ad27a16 | 53 | } |
cbs27 | 0:ef959ad27a16 | 54 | } |
cbs27 | 0:ef959ad27a16 | 55 | |
cbs27 | 0:ef959ad27a16 | 56 | |
cbs27 | 0:ef959ad27a16 | 57 | void Monster::drawbackground1(N5110 &lcd) { |
cbs27 | 0:ef959ad27a16 | 58 | |
cbs27 | 0:ef959ad27a16 | 59 | lcd.drawLine(0,8,84,8,2); |
cbs27 | 0:ef959ad27a16 | 60 | lcd.drawRect(23,26,26,4,FILL_BLACK); |
cbs27 | 0:ef959ad27a16 | 61 | lcd.drawRect(0,44,84,4,FILL_BLACK); |
cbs27 | 0:ef959ad27a16 | 62 | lcd.drawRect(28,40,26,4,FILL_BLACK); |
cbs27 | 0:ef959ad27a16 | 63 | lcd.drawRect(67,22,17,11,FILL_TRANSPARENT); |
cbs27 | 0:ef959ad27a16 | 64 | |
cbs27 | 0:ef959ad27a16 | 65 | } |
cbs27 | 0:ef959ad27a16 | 66 | |
cbs27 | 0:ef959ad27a16 | 67 | void Monster::drawlifes(N5110 &lcd) { |
cbs27 | 0:ef959ad27a16 | 68 | |
cbs27 | 0:ef959ad27a16 | 69 | for(int i=1; i<=lifes; i++) { |
cbs27 | 0:ef959ad27a16 | 70 | |
cbs27 | 0:ef959ad27a16 | 71 | lcd.drawSprite(7*i-4,2,4,5,(int *)shapHeart); |
cbs27 | 0:ef959ad27a16 | 72 | |
cbs27 | 0:ef959ad27a16 | 73 | } |
cbs27 | 0:ef959ad27a16 | 74 | |
cbs27 | 0:ef959ad27a16 | 75 | } |
cbs27 | 0:ef959ad27a16 | 76 | |
cbs27 | 0:ef959ad27a16 | 77 | void Monster::drawscores(N5110 &lcd) { |
cbs27 | 0:ef959ad27a16 | 78 | |
cbs27 | 0:ef959ad27a16 | 79 | char score_buffer[14]; |
cbs27 | 0:ef959ad27a16 | 80 | sprintf(score_buffer,"%d",score); |
cbs27 | 0:ef959ad27a16 | 81 | lcd.printString(score_buffer,60,0); |
cbs27 | 0:ef959ad27a16 | 82 | |
cbs27 | 0:ef959ad27a16 | 83 | } |
cbs27 | 0:ef959ad27a16 | 84 | |
cbs27 | 0:ef959ad27a16 | 85 | //画反派 |
cbs27 | 0:ef959ad27a16 | 86 | void Monster::draw_blackmonsters(N5110 &lcd) { |
cbs27 | 0:ef959ad27a16 | 87 | |
cbs27 | 0:ef959ad27a16 | 88 | |
cbs27 | 0:ef959ad27a16 | 89 | //画反派1 |
cbs27 | 0:ef959ad27a16 | 90 | if (turn1 == 0) { |
cbs27 | 0:ef959ad27a16 | 91 | |
cbs27 | 0:ef959ad27a16 | 92 | monster_x1 += 1; |
cbs27 | 0:ef959ad27a16 | 93 | lcd.drawSprite(monster_x1,monster_y1,7,7,(int *)blackMonster); |
cbs27 | 0:ef959ad27a16 | 94 | |
cbs27 | 0:ef959ad27a16 | 95 | if (monster_x1 >= 43) { |
cbs27 | 0:ef959ad27a16 | 96 | turn1 = 1; |
cbs27 | 0:ef959ad27a16 | 97 | } |
cbs27 | 0:ef959ad27a16 | 98 | |
cbs27 | 0:ef959ad27a16 | 99 | } |
cbs27 | 0:ef959ad27a16 | 100 | |
cbs27 | 0:ef959ad27a16 | 101 | if (turn1 == 1) { |
cbs27 | 0:ef959ad27a16 | 102 | |
cbs27 | 0:ef959ad27a16 | 103 | monster_x1 -= 1; |
cbs27 | 0:ef959ad27a16 | 104 | lcd.drawSprite(monster_x1,monster_y1,7,7,(int *)blackMonster); |
cbs27 | 0:ef959ad27a16 | 105 | |
cbs27 | 0:ef959ad27a16 | 106 | if (monster_x1 <= 23) { |
cbs27 | 0:ef959ad27a16 | 107 | turn1 = 0; |
cbs27 | 0:ef959ad27a16 | 108 | } |
cbs27 | 0:ef959ad27a16 | 109 | |
cbs27 | 0:ef959ad27a16 | 110 | } |
cbs27 | 0:ef959ad27a16 | 111 | |
cbs27 | 0:ef959ad27a16 | 112 | //画反派2 |
cbs27 | 0:ef959ad27a16 | 113 | if (turn2 == 0) { |
cbs27 | 0:ef959ad27a16 | 114 | |
cbs27 | 0:ef959ad27a16 | 115 | monster_x2 += 1; |
cbs27 | 0:ef959ad27a16 | 116 | lcd.drawSprite(monster_x2,monster_y2,7,7,(int *)blackMonster); |
cbs27 | 0:ef959ad27a16 | 117 | |
cbs27 | 0:ef959ad27a16 | 118 | if (monster_x2 >= 20) { |
cbs27 | 0:ef959ad27a16 | 119 | turn2 = 1; |
cbs27 | 0:ef959ad27a16 | 120 | } |
cbs27 | 0:ef959ad27a16 | 121 | |
cbs27 | 0:ef959ad27a16 | 122 | } |
cbs27 | 0:ef959ad27a16 | 123 | |
cbs27 | 0:ef959ad27a16 | 124 | if (turn2 == 1) { |
cbs27 | 0:ef959ad27a16 | 125 | |
cbs27 | 0:ef959ad27a16 | 126 | monster_x2 -= 1; |
cbs27 | 0:ef959ad27a16 | 127 | lcd.drawSprite(monster_x2,monster_y2,7,7,(int *)blackMonster); |
cbs27 | 0:ef959ad27a16 | 128 | |
cbs27 | 0:ef959ad27a16 | 129 | if (monster_x2 <= 1) { |
cbs27 | 0:ef959ad27a16 | 130 | turn2 = 0; |
cbs27 | 0:ef959ad27a16 | 131 | } |
cbs27 | 0:ef959ad27a16 | 132 | |
cbs27 | 0:ef959ad27a16 | 133 | } |
cbs27 | 0:ef959ad27a16 | 134 | |
cbs27 | 0:ef959ad27a16 | 135 | //画反派3 |
cbs27 | 0:ef959ad27a16 | 136 | if (turn3 == 0) { |
cbs27 | 0:ef959ad27a16 | 137 | |
cbs27 | 0:ef959ad27a16 | 138 | monster_x3 += 1; |
cbs27 | 0:ef959ad27a16 | 139 | lcd.drawSprite(monster_x3,monster_y3,7,7,(int *)blackMonster); |
cbs27 | 0:ef959ad27a16 | 140 | |
cbs27 | 0:ef959ad27a16 | 141 | if (monster_x3 >= 75) { |
cbs27 | 0:ef959ad27a16 | 142 | turn3 = 1; |
cbs27 | 0:ef959ad27a16 | 143 | } |
cbs27 | 0:ef959ad27a16 | 144 | |
cbs27 | 0:ef959ad27a16 | 145 | } |
cbs27 | 0:ef959ad27a16 | 146 | |
cbs27 | 0:ef959ad27a16 | 147 | if (turn3 == 1) { |
cbs27 | 0:ef959ad27a16 | 148 | |
cbs27 | 0:ef959ad27a16 | 149 | monster_x3 -= 1; |
cbs27 | 0:ef959ad27a16 | 150 | lcd.drawSprite(monster_x3,monster_y3,7,7,(int *)blackMonster); |
cbs27 | 0:ef959ad27a16 | 151 | |
cbs27 | 0:ef959ad27a16 | 152 | if (monster_x3 <= 56) { |
cbs27 | 0:ef959ad27a16 | 153 | turn3 = 0; |
cbs27 | 0:ef959ad27a16 | 154 | } |
cbs27 | 0:ef959ad27a16 | 155 | |
cbs27 | 0:ef959ad27a16 | 156 | } |
cbs27 | 0:ef959ad27a16 | 157 | |
cbs27 | 0:ef959ad27a16 | 158 | } |
cbs27 | 0:ef959ad27a16 | 159 | |
cbs27 | 0:ef959ad27a16 | 160 | //画宝石 |
cbs27 | 0:ef959ad27a16 | 161 | void Monster::draw_jewels(N5110 &lcd) { |
cbs27 | 0:ef959ad27a16 | 162 | |
cbs27 | 0:ef959ad27a16 | 163 | if (jewels_on1 == 1) { |
cbs27 | 0:ef959ad27a16 | 164 | lcd.drawSprite(41,21,3,3,(int *)shapStar); |
cbs27 | 0:ef959ad27a16 | 165 | } |
cbs27 | 0:ef959ad27a16 | 166 | if (jewels_on2 == 1) { |
cbs27 | 0:ef959ad27a16 | 167 | lcd.drawSprite(46,21,3,3,(int *)shapStar); |
cbs27 | 0:ef959ad27a16 | 168 | } |
cbs27 | 0:ef959ad27a16 | 169 | |
cbs27 | 0:ef959ad27a16 | 170 | if (jewels_on3 == 1) { |
cbs27 | 0:ef959ad27a16 | 171 | lcd.drawSprite(2,39,3,3,(int *)shapStar); |
cbs27 | 0:ef959ad27a16 | 172 | } |
cbs27 | 0:ef959ad27a16 | 173 | if (jewels_on4 == 1) { |
cbs27 | 0:ef959ad27a16 | 174 | lcd.drawSprite(7,39,3,3,(int *)shapStar); |
cbs27 | 0:ef959ad27a16 | 175 | } |
cbs27 | 0:ef959ad27a16 | 176 | if (jewels_on5 == 1) { |
cbs27 | 0:ef959ad27a16 | 177 | lcd.drawSprite(12,39,3,3,(int *)shapStar); |
cbs27 | 0:ef959ad27a16 | 178 | } |
cbs27 | 0:ef959ad27a16 | 179 | |
cbs27 | 0:ef959ad27a16 | 180 | if (jewels_on6 == 1) { |
cbs27 | 0:ef959ad27a16 | 181 | lcd.drawSprite(38,36,3,3,(int *)shapStar); |
cbs27 | 0:ef959ad27a16 | 182 | } |
cbs27 | 0:ef959ad27a16 | 183 | if (jewels_on7 == 1) { |
cbs27 | 0:ef959ad27a16 | 184 | lcd.drawSprite(43,36,3,3,(int *)shapStar); |
cbs27 | 0:ef959ad27a16 | 185 | } |
cbs27 | 0:ef959ad27a16 | 186 | |
cbs27 | 0:ef959ad27a16 | 187 | |
cbs27 | 0:ef959ad27a16 | 188 | } |
cbs27 | 0:ef959ad27a16 | 189 | |
cbs27 | 0:ef959ad27a16 | 190 | //画人物 |
cbs27 | 0:ef959ad27a16 | 191 | void Monster::draw_monster(N5110 &lcd, DigitalIn &button_A, DigitalIn &button_B, DigitalIn &button_C, DigitalIn &button_D) { |
cbs27 | 0:ef959ad27a16 | 192 | |
cbs27 | 0:ef959ad27a16 | 193 | if (button_A.read() == 1) { |
cbs27 | 0:ef959ad27a16 | 194 | monster_x0 += 1; |
cbs27 | 0:ef959ad27a16 | 195 | } |
cbs27 | 0:ef959ad27a16 | 196 | else if (button_B.read() == 1) { |
cbs27 | 0:ef959ad27a16 | 197 | monster_y0 -= 1; |
cbs27 | 0:ef959ad27a16 | 198 | } |
cbs27 | 0:ef959ad27a16 | 199 | else if (button_C.read() == 1) { |
cbs27 | 0:ef959ad27a16 | 200 | monster_x0 -= 1; |
cbs27 | 0:ef959ad27a16 | 201 | } |
cbs27 | 0:ef959ad27a16 | 202 | else if (button_D.read() == 1) { |
cbs27 | 0:ef959ad27a16 | 203 | monster_y0 += 1; |
cbs27 | 0:ef959ad27a16 | 204 | } |
cbs27 | 0:ef959ad27a16 | 205 | |
cbs27 | 0:ef959ad27a16 | 206 | //向右超出 |
cbs27 | 0:ef959ad27a16 | 207 | if (monster_x0 > 84) { |
cbs27 | 0:ef959ad27a16 | 208 | |
cbs27 | 0:ef959ad27a16 | 209 | } |
cbs27 | 0:ef959ad27a16 | 210 | //向左限定 |
cbs27 | 0:ef959ad27a16 | 211 | if (monster_x0 < 0) { |
cbs27 | 0:ef959ad27a16 | 212 | monster_x0 = 0; |
cbs27 | 0:ef959ad27a16 | 213 | } |
cbs27 | 0:ef959ad27a16 | 214 | //向上限定 |
cbs27 | 0:ef959ad27a16 | 215 | if (monster_y0 < 9) { |
cbs27 | 0:ef959ad27a16 | 216 | monster_y0 = 9; |
cbs27 | 0:ef959ad27a16 | 217 | } |
cbs27 | 0:ef959ad27a16 | 218 | //向下限定 |
cbs27 | 0:ef959ad27a16 | 219 | if (monster_y0 > 37) { |
cbs27 | 0:ef959ad27a16 | 220 | monster_y0 = 37; |
cbs27 | 0:ef959ad27a16 | 221 | } |
cbs27 | 0:ef959ad27a16 | 222 | |
cbs27 | 0:ef959ad27a16 | 223 | if (monster_x0 > 20 && monster_x0 < 56 && monster_y0 > 33) { |
cbs27 | 0:ef959ad27a16 | 224 | monster_y0 = 33; |
cbs27 | 0:ef959ad27a16 | 225 | } |
cbs27 | 0:ef959ad27a16 | 226 | |
cbs27 | 0:ef959ad27a16 | 227 | lcd.drawSprite(monster_x0,monster_y0,6,7,(int *)whiteMonster); |
cbs27 | 0:ef959ad27a16 | 228 | |
cbs27 | 0:ef959ad27a16 | 229 | if (abs(monster_x0-41+2) <= 4 |
cbs27 | 0:ef959ad27a16 | 230 | |
cbs27 | 0:ef959ad27a16 | 231 | } |
cbs27 | 0:ef959ad27a16 | 232 | |
cbs27 | 0:ef959ad27a16 | 233 |