sota
Dependencies: mbed
Fork of newdot by
Diff: main.cpp
- Revision:
- 1:be91a16b48ea
- Parent:
- 0:6e7a6e71dad3
- Child:
- 2:d714fd7bb7d5
--- a/main.cpp Sat Dec 03 10:17:37 2016 +0000 +++ b/main.cpp Mon Dec 11 09:40:35 2017 +0000 @@ -5,23 +5,762 @@ ColorMbed dotmatrix; Timer t; +Serial pc(D1, D0); +DigitalIn sw(USER_BUTTON); + +uint8_t blue[3] = {0,10,0}; +uint8_t green[3] = {0,255,0}; +uint8_t red[3] = {0,0,255}; +uint8_t M[3] = {255,255,255}; +uint8_t I[3] = {255,0,0}; +uint8_t map_led[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; +uint8_t boss_led[8] = {0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +uint8_t hero_led[8] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +uint8_t M_led[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +uint8_t I_led[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +char board[8][8] = {{'D','O','O','O','O','O','O','O'}, + {'O','O','O','O','O','O','O','O'}, + {'O','O','O','O','O','O','O','O'}, + {'O','O','O','O','O','O','O','O'}, + {'O','O','O','O','O','O','O','O'}, + {'O','O','O','O','O','O','O','O'}, + {'O','O','O','O','O','O','O','O'}, + {'H','O','O','O','O','O','O','O'}}; + +int bit_m[8][8] = {{0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}}; + +int bit_i[8][8] = {{0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0}}; + +int position_x = 7; +int position_y = 0; +int position_mission = 1; +char hero = 'H'; + +void print_position(){ + pc.printf("position is [%d,%d]\n",position_x,position_y); +} + +void print_mission(){ + pc.printf("mission is %d\n",position_mission); +} + +void mission(){ + if (position_mission >= 1 && position_mission < 9){ + position_x = 7; + position_y = position_mission - 1; + } + if (position_mission >= 9 && position_mission < 17){ + position_x = 6; + position_y = 16 - position_mission; + } + if (position_mission >= 17 && position_mission < 25){ + position_x = 5; + position_y = position_mission - 17; + } + if (position_mission >= 25 && position_mission < 33){ + position_x = 4; + position_y = 32 - position_mission; + } + if (position_mission >= 33 && position_mission < 41){ + position_x = 3; + position_y = position_mission - 33; + } + if (position_mission >= 41 && position_mission < 49){ + position_x = 2; + position_y = 48 - position_mission; + } + if (position_mission >= 49 && position_mission < 57){ + position_x = 1; + position_y = position_mission - 49; + } + if (position_mission >= 57 && position_mission < 65){ + position_x = 0; + position_y = 64 - position_mission; + } + if (position_mission >=65){ + position_x = 0; + position_y = 0; + position_mission = 64; + } +} + +void move(int ran){ + int walk_x = position_x; + int walk_y = position_y; + + position_mission = position_mission + ran; + mission(); + + if (board[position_x][position_y]=='O'){ + board[walk_x][walk_y]='O'; + board[position_x][position_y] = hero; + pc.printf("walk is %d\n",ran); + } + else{ + board[walk_x][walk_y]='O'; + board[position_x][position_y] = hero; + pc.printf("walk is %d\n",ran); + } +} + +void map(){ + for(int i=0;i<8;i++){ + pc.printf("\n"); + for(int j=0;j<8;j++){ + pc.printf("_%c",board[i][j]); + } + } + pc.printf("\n"); +} + +void random() { + srand((unsigned)time(0)); + int ran = (rand()%6)+1; + move(ran); +} + +void monster_easy(){ + + srand((unsigned)time(0)); + int mon1 = (rand()%3)+2; //2-4 + int B1 = (rand()%4)+5; //5-8 + int mon2 = (rand()%4)+9; //9-12 + int T1 = (rand()%4)+13; //13-16 + int mon3 = (rand()%4)+17; //17-20 + int B2 = (rand()%4)+21; //21-24 + int mon4 = (rand()%4)+25; //25-28 + int T2 = (rand()%4)+29; //29-32 + int mon5 = (rand()%4)+33; //33-36 + int B3 = (rand()%4)+37; //37-40 + int mon6 = (rand()%4)+41; //41-44 + int T3 = (rand()%4)+45; //45-48 + int mon7 = (rand()%4)+49; //49-52 + int B4 = (rand()%4)+53; //53-56 + int mon8 = (rand()%4)+57; //57-60 + int T4 = (rand()%3)+61; //61-63 + + position_mission = mon1; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon2; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon3; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon4; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon5; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon6; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon7; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon8; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = B1; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B2; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B3; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B4; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = T1; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T2; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T3; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T4; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = 1; + mission(); +} + +void monster_medium(){ + + srand((unsigned)time(0)); + int mon1 = (rand()%3)+2; //2-4 + int B1 = (rand()%3)+5; //5-7 + int mon2 = (rand()%3)+8; //8-10 + int T1 = (rand()%3)+11; //11-13 + int mon3 = (rand()%3)+14; //14-16 + int B2 = (rand()%3)+17; //17-19 + int mon4 = (rand()%3)+20; //20-22 + int T2 = (rand()%3)+23; //23-25 + int mon5 = (rand()%3)+26; //26-28 + int B3 = (rand()%3)+29; //29-31 + int mon6 = (rand()%3)+32; //32-34 + int T3 = (rand()%3)+35; //35-37 + int mon7 = (rand()%3)+38; //38-40 + int B4 = (rand()%3)+41; //41-43 + int mon8 = (rand()%3)+44; //44-46 + int T4 = (rand()%3)+47; //47-49 + int mon9 = (rand()%3)+50; //50-52 + int B5 = (rand()%3)+53; //53-55 + int mon10 = (rand()%3)+56; //56-58 + int T5 = (rand()%3)+59; //59-61 + int mon11 = (rand()%1)+62; //62 + int mon12 = (rand()%1)+63; //63 + + position_mission = mon1; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon2; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon3; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon4; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon5; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon6; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon7; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon8; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + position_mission = mon9; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + position_mission = mon10; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon11; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon12; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = B1; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B2; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B3; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B4; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B5; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = T1; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T2; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T3; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T4; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T5; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = 1; + mission(); +} + +void monster_hard(){ + + srand((unsigned)time(0)); + int mon1 = (rand()%3)+2; //2-4 + int B1 = (rand()%3)+5; //5-7 + int mon2 = (rand()%3)+8; //8-10 + int T1 = (rand()%3)+11; //11-13 + int mon3 = (rand()%3)+14; //14-16 + int B2 = (rand()%3)+17; //17-19 + int mon4 = (rand()%2)+20; //20-21-------------2 + int T2 = (rand()%2)+22; //22-23 + int mon5 = (rand()%2)+24; //24-25 + int B3 = (rand()%2)+26; //26-27 + int mon6 = (rand()%2)+28; //28-29 + int T3 = (rand()%2)+30; //30-31 + int mon7 = (rand()%2)+32; //32-33 + int B4 = (rand()%2)+34; //34-35 + int mon8 = (rand()%2)+36; //36-37 + int T4 = (rand()%2)+38; //38-39 + int mon9 = (rand()%2)+40; //40-41 + int B5 = (rand()%2)+42; //42-43 + int mon10 = (rand()%2)+44; //44-45 + int T5 = (rand()%2)+46; //46-47 + int mon11 = (rand()%2)+48; //48-49 + int B6 = (rand()%2)+50; //50-51 + int mon12 = (rand()%2)+52; //52-53 + int T6 = (rand()%2)+54; //54-55 + int mon13 = (rand()%2)+56; //56-57 + int mon14 = (rand()%2)+58; //58-59 + int mon15 = (rand()%2)+60; //60-61 + int mon16 = (rand()%2)+62; //62-63 + + position_mission = mon1; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon2; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon3; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon4; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon5; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon6; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon7; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon8; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + position_mission = mon9; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + position_mission = mon10; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon11; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon12; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon13; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon14; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon15; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = mon16; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'M'; + } + + position_mission = B1; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B2; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B3; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B4; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B5; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = B6; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'B'; + } + + position_mission = T1; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T2; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T3; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T4; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T5; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = T6; + mission(); + if (board[position_x][position_y]=='O'){ + board[position_x][position_y] = 'T'; + } + + position_mission = 1; + mission(); +} + +void led2(){ + if (position_x==7){ + hero_led[position_y] = 0x01; + } + if (position_x==6){ + hero_led[position_y] = 0x02; + } + if (position_x==5){ + hero_led[position_y] = 0x04; + } + if (position_x==4){ + hero_led[position_y] = 0x08; + } + if (position_x==3){ + hero_led[position_y] = 0x10; + } + if (position_x==2){ + hero_led[position_y] = 0x20; + } + if (position_x==1){ + hero_led[position_y] = 0x40; + } + if (position_x==0){ + hero_led[position_y] = 0x80; + } +} + +void read_m(){ + for(int i=0;i<8;i++){ + for(int j=0;j<8;j++){ + if (board[j][i]=='M'){ + bit_m[i][j] = 1; + } + else{ + bit_m[i][j] = 0; + } + } + } +} + +void read_i(){ + for(int i=0;i<8;i++){ + for(int j=0;j<8;j++){ + if (board[j][i]=='B' || board[j][i]=='T'){ + bit_i[i][j] = 1; + } + else{ + bit_i[i][j] = 0; + } + } + } +} + +void print_bit_m(){ + for(int i=0;i<8;i++){ + pc.printf("\n"); + for(int j=0;j<8;j++){ + pc.printf("%d",bit_m[i][j]); + } + } + pc.printf("\n"); +} + +void print_bit_i(){ + for(int i=0;i<8;i++){ + pc.printf("\n"); + for(int j=0;j<8;j++){ + pc.printf("%d",bit_i[i][j]); + } + } + pc.printf("\n"); +} + +void cal_m(){ + int a,b,c; + for (int i=0;i<8;i++){ + a = bit_m[i][0]*8+bit_m[i][1]*4+bit_m[i][2]*2+bit_m[i][3]; +// pc.printf("(%d)",a); + b = bit_m[i][4]*8+bit_m[i][5]*4+bit_m[i][6]*2+bit_m[i][7]; +// pc.printf("(%d)",b); + c = a*16+b; +// pc.printf("(%d)",c); + M_led[i] = c; +// pc.printf("(%2x)",M_led[i]); + } +} + +void cal_i(){ + int a,b,c; + for (int i=0;i<8;i++){ + a = bit_i[i][0]*8+bit_i[i][1]*4+bit_i[i][2]*2+bit_i[i][3]; +// pc.printf("(%d)",a); + b = bit_i[i][4]*8+bit_i[i][5]*4+bit_i[i][6]*2+bit_i[i][7]; +// pc.printf("(%d)",b); + c = a*16+b; +// pc.printf("(%d)",c); + I_led[i] = c; +// pc.printf("(%2x)",M_led[i]); + } +} + + //int y = 85; +// pc.printf("(%d)",y); +// pc.printf("(%2x)",y); +// M_led[1] = y; +// pc.printf("(%2x)",M_led[1]); int main(){ - // uint8_t rgb[3] = {255,255,100}; - uint8_t rgb[3] = {10,20,0}; - uint8_t pic[8] = {0x1C,0x00,0x20,0x20,0x20,0x20,0x00,0x00}; - uint8_t pic2[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; - uint8_t dream_ship[8] = {0x40,0x50,0x41,0x4E,0x00,0x92,0x14,0x04}; - // for coordinate - //uint8_t pic2[8] = {0x7E,0xDF,0xFF,0xF0,0xFF,0x7E,0x3C,0x3C}; - //uint8_t tmp_pic[8] = {0}; + dotmatrix.init(); - - while(1){ - dotmatrix.display_pic(dream_ship,rgb); - } - - return 0; - - + + //monster_easy(); + //monster_medium(); + monster_hard(); + map(); + print_mission(); + print_position(); + read_m(); +// print_bit_m(); + cal_m(); + read_i(); +// print_bit_i(); + cal_i(); + + while(1){ + dotmatrix.display_pic(map_led,blue); + dotmatrix.display_pic(hero_led,green); + dotmatrix.display_pic(boss_led,red); + dotmatrix.display_pic(M_led,M); + dotmatrix.display_pic(I_led,I); + + if (sw==0){ + hero_led[position_y] = 0x00; + random(); + map(); + print_mission(); + print_position(); + led2(); + + bit_m[position_x][position_y] = 0; + read_m(); + cal_m(); + bit_i[position_x][position_y] = 0; + read_i(); + cal_i(); + } + } }