1
Dependencies: mbed Gamepad N5110
main.cpp
- Committer:
- 1012754868
- Date:
- 2019-04-27
- Revision:
- 1:db2a69ca4929
- Parent:
- 0:5fcd72a90b20
- Child:
- 2:1234b0a1a51d
File content as of revision 1:db2a69ca4929:
//屏幕开始有蛇的图标 //主页过了之后选择菜单菜单包含速度历史记录 //音乐 /* 做选项的步骤 把选项打印出来 移动光标 移动到某一个点击确定跳转到一个界面,点击返回返回到设置 */ #include "mbed.h" #include "N5110.h" #include "Gamepad.h" #include "Snake.h" /************************Structs************************/ struct UserInput { Direction d; }; /************************Objects************************/ N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);//set LCD pins Gamepad pad; Snake snake; Direction d; int SNAKY[11][48] = { {0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,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,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,1,1,1,0,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0}, {0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,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,1,1,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 _SNAKY[11][48] = { {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,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,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}, {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,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,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}, {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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} }; char _Buffer[200]; /************************Prototypes************************/ void start_game(); void game_setting(); void game_music(); void game_music_2(); /************************Variables************************/ //int heroChar[4]=(1,1,0,1); //int bomb[4]=(0,1,0,1); //int boulderLocation[4][8]={}// set the coordinate for boulder, if 00, boulder does not exist /************************Main code************************/ int main() { lcd.init();//initializing display pad.init(); //pc.printf("initalized"); snake.init(25,25,5,3); game_music_2(); start_game(); game_setting(); while (1) { //printf("updated"); snake.drawsnake(lcd); snake.snakemov(pad); } } /************************Functions************************/ void game_music_2(){ pad.tone(1047.0,0.125); //H1_ wait(0.125); pad.tone(1175.0,0.125); //H2_ wait(0.125); pad.tone(1319.0,0.25); //H3 wait(0.25); pad.tone(1047.0,0.125); //H1_ wait(0.125); pad.tone(880.0,0.125); //6_ wait(0.125); pad.tone(880.0,0.25); //6 wait(0.25); pad.tone(1175.0,0.25); //H2 wait(0.25); pad.tone(988.0,0.25); //7 wait(0.25); pad.tone(784.0,0.125); //5_ wait(0.125); pad.tone(659.0,0.125); //3_ wait(0.125); pad.tone(659.0,0.25); //3 wait(0.25); pad.tone(988.0,0.25); //7 wait(0.25); pad.tone(880.0,0.25); //6 wait(0.25); pad.tone(784.0,0.125); //5_ wait(0.125); pad.tone(523.0,0.125); //1_ wait(0.125); pad.tone(523.0,0.25); //1 wait(0.25); pad.tone(784.0,0.25); //5 wait(0.25); pad.tone(659.0,0.25); //3 wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(587.0,0.125); //2_ wait(0.125); pad.tone(659.0,0.125); //3_ wait(0.125); pad.tone(698.0,0.25); //4 wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(1047.0,0.25); //H1 wait(0.25); pad.tone(988.0,0.0833); //7_3 wait(0.0833); pad.tone(988.0,0.0833); //7_3 wait(0.0833); pad.tone(1047.0,0.0833); //H1_3 wait(0.0833); pad.tone(784.0,0.25); //5 wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(698.0,0.25); //4 wait(0.25); pad.tone(659.0,0.1875); //3 3/4*0.25 wait(0.1875); pad.tone(698.0,0.0625); //4 1/4*0.25 wait(0.0625); pad.tone(740.0,0.25); //4 wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(1047.0,0.25); //H1 wait(0.25); pad.tone(988.0,0.0833); //7_3 wait(0.0833); pad.tone(988.0,0.0833); //7_3 wait(0.0833); pad.tone(880.0,0.0833); //6_3 wait(0.0833); pad.tone(831.0,0.25); //5 wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(1047.0,0.125); //H1_ wait(0.125); pad.tone(1175.0,0.125); //H2_ wait(0.125); pad.tone(1319.0,0.25); //H3 wait(0.25); pad.tone(1047.0,0.125); //H1_ wait(0.125); pad.tone(880.0,0.125); //6_ wait(0.125); pad.tone(880.0,0.25); //6 wait(0.25); pad.tone(1175.0,0.25); //H2 wait(0.25); pad.tone(988.0,0.25); //7 wait(0.25); pad.tone(784.0,0.125); //5_ wait(0.125); pad.tone(659.0,0.125); //3_ wait(0.125); pad.tone(659.0,0.25); //3 wait(0.25); pad.tone(988.0,0.25); //7 wait(0.25); pad.tone(880.0,0.25); //6 wait(0.25); pad.tone(784.0,0.125); //5_ wait(0.125); pad.tone(523.0,0.125); //1_ wait(0.125); pad.tone(523.0,0.25); //1 wait(0.25); pad.tone(784.0,0.25); //5 wait(0.25); pad.tone(659.0,0.25); //3 wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(587.0,0.125); //2_ wait(0.125); pad.tone(659.0,0.125); //3_ wait(0.125); pad.tone(698.0,0.25); //4 wait(0.25); pad.tone(0.0,0.25); //gap wait(0.25); pad.tone(784.0,0.25); //5 wait(0.25); pad.tone(698.0,0.08333); //4_3 wait(0.08333); pad.tone(698.0,0.08333); //4_3 wait(0.08333); pad.tone(784.0,0.08333); //5_3 wait(0.08333); pad.tone(659.0,0.25); //3 wait(0.25); pad.tone(784.0,0.25); //5 wait(0.25); pad.tone(1046.0,0.25); //H1 wait(0.25); pad.tone(1318.0,0.25); //H3 wait(0.25); pad.tone(1175.0,0.1875); //H2 3/4 wait(0.1875); pad.tone(1175.0,0.125); //H2_ wait(0.125); pad.tone(1175.0,0.125); //H2_ wait(0.125); pad.tone(1046.0,0.25); //H1 wait(0.25); pad.tone(1046.0,0.125); //H1_ wait(0.125); pad.tone(1046.0,0.25); //H1 wait(0.25); pad.tone(0.0,0.25); //GAP wait(0.25); pad.tone(0.0,0.25); //GAP wait(0.25); pad.tone(0.0,0.25); //GAP wait(0.25); } void game_music(){ pad.tone(659.0,0.5); //3 wait(0.5); pad.tone(659.0,0.25); //3_ wait(0.25); pad.tone(587.0,0.25); //2_ wait(0.25); pad.tone(523.0,0.5); //1 wait(0.5); pad.tone(523.0,0.25); //1_ wait(0.25); pad.tone(440.0,0.25); //L6_ wait(0.25); pad.tone(587.0,0.25); //2_ wait(0.25); pad.tone(659.0,0.25); //3_ wait(0.25); pad.tone(587.0,0.25); //2_ wait(0.25); pad.tone(659.0,0.25); //3_ wait(0.25); pad.tone(392.0,0.5); // wait(0.5); pad.tone(0.0,0.5); //gap wait(0.5); ///////////////////////////// pad.tone(440.0,0.5);//6 wait(0.5); pad.tone(440.0,0.25);//L6_ wait(0.25); pad.tone(392.0,0.25);//L5_ wait(0.25); pad.tone(440.0,0.5);//6 wait(0.5); pad.tone(523.0,0.5);//1 wait(0.5); pad.tone(784.0,0.25);//5_ wait(0.25); pad.tone(880.0,0.25);//6_ wait(0.25); pad.tone(659.0,0.25);//3_ wait(0.25); pad.tone(784.0,0.25);//5_ wait(0.25); pad.tone(587.0,0.5);//2 wait(0.5); pad.tone(0.0,0.5);//gap wait(0.5); /////////////////////////// pad.tone(659.0,0.5);//3 wait(0.5); pad.tone(659.0,0.25);//3_ wait(0.25); pad.tone(587.0,0.25);//2_ wait(0.25); pad.tone(659.0,0.5);//3 wait(0.5); pad.tone(784.0,0.5);//5 wait(0.5); pad.tone(880.0,0.25);//6_ wait(0.25); pad.tone(880.0,0.25);//6_ wait(0.25); pad.tone(880.0,0.25);//6_ wait(0.25); pad.tone(1047.0,0.25);//H1_ wait(0.25); pad.tone(880.0,0.5);//6 wait(0.5); pad.tone(784.0,0.25);//5_ wait(0.25); pad.tone(659.0,0.25);//3_ wait(0.25); ///////////////////////////////// pad.tone(587.0,0.5);//2 wait(0.5); pad.tone(587.0,0.25);//2_ wait(0.25); pad.tone(659.0,0.25);//3_ wait(0.25); pad.tone(784.0,0.5);//5 wait(0.5); pad.tone(392.0,0.5);//L5 wait(0.5); pad.tone(587.0,0.25);//2_ wait(0.25); pad.tone(659.0,0.25);//3_ wait(0.25); pad.tone(587.0,0.25);//2_ wait(0.25); pad.tone(659.0,0.25);//3_ wait(0.25); pad.tone(523.0,0.5);//1 wait(0.5); pad.tone(0.0,0.5);//gap wait(0.5); } void start_game(){ lcd.printString(" LI Saiwen",0,3); lcd.printString(" Press A",0,5); lcd.refresh(); lcd.drawSprite(60,5,11,48,(int *)SNAKY); lcd.refresh(); wait(0.2); lcd.drawSprite(60,5,11,48,(int *)_SNAKY); lcd.refresh(); lcd.drawSprite(55,5,11,48,(int *)SNAKY); lcd.refresh(); wait(0.2); lcd.drawSprite(55,5,11,48,(int *)_SNAKY); lcd.refresh(); lcd.drawSprite(50,5,11,48,(int *)SNAKY); lcd.refresh(); wait(0.2); lcd.drawSprite(50,5,11,48,(int *)_SNAKY); lcd.refresh(); lcd.drawSprite(45,5,11,48,(int *)SNAKY); lcd.refresh(); wait(0.2); lcd.drawSprite(45,5,11,48,(int *)_SNAKY); lcd.refresh(); lcd.drawSprite(40,5,11,48,(int *)SNAKY); lcd.refresh(); wait(0.2); lcd.drawSprite(40,5,11,48,(int *)_SNAKY); lcd.refresh(); lcd.drawSprite(35,5,11,48,(int *)SNAKY); lcd.refresh(); wait(0.2); lcd.drawSprite(35,5,11,48,(int *)_SNAKY); lcd.refresh(); lcd.drawSprite(30,5,11,48,(int *)SNAKY); lcd.refresh(); wait(0.2); lcd.drawSprite(30,5,11,48,(int *)_SNAKY); lcd.refresh(); lcd.drawSprite(25,5,11,48,(int *)SNAKY); lcd.refresh(); wait(0.2); lcd.drawSprite(25,5,11,48,(int *)_SNAKY); lcd.drawSprite(20,5,11,48,(int *)SNAKY); lcd.refresh(); while ( pad.check_event(Gamepad::A_PRESSED) == false) { pad.leds_on(); wait(0.1); pad.leds_off(); wait(0.1); } lcd.clear(); } void game_setting() { lcd.printString(" Menu",0,0); lcd.printString(" A to set",0,1); lcd.printString("set speed <",0,2); lcd.printString("history ",0,3); lcd.printString(" press start",0,5); lcd.refresh(); int q = 1; while ( pad.check_event(Gamepad::START_PRESSED) == false) { d = pad.get_direction(); if(d == N || q == 1){ lcd.clear(); lcd.printString(" Menu",0,0); lcd.printString(" A to set",0,1); lcd.printString("set speed <",0,2); lcd.printString("history ",0,3); lcd.printString(" press start",0,5); lcd.refresh(); if(pad.check_event(Gamepad::A_PRESSED) == true) { bool IsCheck = false; int c = 1; lcd.clear(); lcd.printString(" Speed set",0,0); lcd.printString(" B to set",0,1); lcd.printString(" Normal <",0,2); lcd.printString(" Difficult",0,3); lcd.printString(" Hell",0,4); lcd.refresh(); while(IsCheck == false){ d = pad.get_direction(); if(d == N && c == 1){ lcd.clear(); lcd.printString(" Speed set",0,0); lcd.printString(" B to set",0,1); lcd.printString(" Normal <",0,2); lcd.printString(" Difficult",0,3); lcd.printString(" Hell",0,4); c = 1; lcd.refresh(); } else if(d == S && c == 1 ){ lcd.clear(); lcd.printString(" Speed set",0,0); lcd.printString(" B to set",0,1); lcd.printString(" Normal",0,2); lcd.printString(" Difficult <",0,3); lcd.printString(" Hell",0,4); c = 2; lcd.refresh(); } else if(d == N && c == 2){ lcd.clear(); lcd.printString(" Speed set",0,0); lcd.printString(" B to set",0,1); lcd.printString(" Normal",0,2); lcd.printString(" Difficult <",0,3); lcd.printString(" Hell",0,4); c = 1; lcd.refresh(); } else if(d == S && c == 2){ lcd.clear(); lcd.printString(" Speed set",0,0); lcd.printString(" B to set",0,1); lcd.printString(" Normal",0,2); lcd.printString(" Difficult",0,3); lcd.printString(" Hell <",0,4); c = 3; lcd.refresh(); } else if(d == S && c == 3){ lcd.clear(); lcd.printString(" Speed set",0,0); lcd.printString(" B to set",0,1); lcd.printString(" Normal",0,2); lcd.printString(" Difficult",0,3); lcd.printString(" Hell <",0,4); c = 3; lcd.refresh(); } else if(d == N && c == 3){ lcd.clear(); lcd.printString(" Speed set",0,0); lcd.printString(" B to set",0,1); lcd.printString(" Normal",0,2); lcd.printString(" Difficult <",0,3); lcd.printString(" Hell",0,4); c = 2; lcd.refresh(); } wait(0.3); if(c == 1 && pad.check_event(Gamepad::B_PRESSED) == true) { snake._speed = 0; lcd.clear(); lcd.printString(" set success!",0,2); lcd.printString(" Press Back!",0,4); lcd.refresh(); } else if(c == 2 && pad.check_event(Gamepad::B_PRESSED) == true) { snake._speed = 10; lcd.clear(); lcd.printString(" set success!",0,2); lcd.printString(" Press Back!",0,4); lcd.refresh(); } else if(c == 3 && pad.check_event(Gamepad::B_PRESSED) == true) { snake._speed = 50; lcd.clear(); lcd.printString(" set success",0,2); lcd.printString(" Press Back!",0,4); lcd.refresh(); } if(pad.check_event(Gamepad::BACK_PRESSED) == true){ IsCheck = true; } } if(pad.check_event(Gamepad::BACK_PRESSED) == true){ break; } } } if(d == S && q == 1){ lcd.clear(); lcd.printString(" Menu",0,0); lcd.printString(" A to set",0,1); lcd.printString("set speed",0,2); lcd.printString("history <",0,3); lcd.printString(" press start",0,5); lcd.refresh(); q = 2; } if(d == S && q == 2){ lcd.clear(); lcd.printString(" Menu",0,0); lcd.printString(" A to set",0,1); lcd.printString("set speed",0,2); lcd.printString("history <",0,3); lcd.printString(" press start",0,5); lcd.refresh(); q = 2; } if(d == N && q == 2) { lcd.clear(); lcd.printString(" Menu",0,0); lcd.printString(" A to set",0,1); lcd.printString("set speed <",0,2); lcd.printString("history ",0,3); lcd.printString(" press start",0,5); lcd.refresh(); q = 1; } if(q == 2 && pad.check_event(Gamepad::A_PRESSED) == true) { lcd.clear(); sprintf(_Buffer,"%2d",snake.Highest_score); lcd.printString(_Buffer,24,3); lcd.printString("Highest score",0,1); lcd.printString(" Press Back",0,4); lcd.refresh(); while(pad.check_event(Gamepad::BACK_PRESSED) == false){ } lcd.clear(); lcd.printString("MOVE joystick",0,1); lcd.refresh(); } pad.leds_on(); wait(0.1); pad.leds_off(); wait(0.1); } lcd.clear(); lcd.printString(" start!!!",0,1); lcd.printString("Enjoy yourself",0,3); lcd.refresh(); wait(2); }