27

Dependencies:   N5110

Committer:
cbs27
Date:
Thu Apr 08 02:09:25 2021 +0000
Revision:
0:ef959ad27a16
Child:
1:48a028c4089e
Monster

Who changed what in which revision?

UserRevisionLine numberNew 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