Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Menu/Menu.cpp@2:7fa08670b1fc, 2020-05-26 (annotated)
- Committer:
- ale_carb0ni
- Date:
- Tue May 26 16:26:12 2020 +0000
- Revision:
- 2:7fa08670b1fc
- Child:
- 4:17d5b53b8815
"working" classes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ale_carb0ni | 2:7fa08670b1fc | 1 | #include "Menu.h" |
ale_carb0ni | 2:7fa08670b1fc | 2 | #include "mbed.h" |
ale_carb0ni | 2:7fa08670b1fc | 3 | #include "Gamepad.h" |
ale_carb0ni | 2:7fa08670b1fc | 4 | #include "N5110.h" |
ale_carb0ni | 2:7fa08670b1fc | 5 | |
ale_carb0ni | 2:7fa08670b1fc | 6 | int snake[28][26] { //design of snake on initial page |
ale_carb0ni | 2:7fa08670b1fc | 7 | { 0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 8 | { 0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 9 | { 0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 10 | { 0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 11 | { 0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 12 | { 0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 13 | { 0,0,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 14 | { 0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 15 | { 0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 16 | { 0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 17 | { 0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 18 | { 0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 19 | { 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 20 | { 0,0,0,0,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 21 | { 0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 22 | { 0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 23 | { 0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 24 | { 0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 25 | { 0,1,0,0,1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 26 | { 1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 27 | { 1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 28 | { 1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 29 | { 1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 30 | { 0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 31 | { 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 32 | { 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 33 | { 0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 34 | { 0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 35 | }; |
ale_carb0ni | 2:7fa08670b1fc | 36 | |
ale_carb0ni | 2:7fa08670b1fc | 37 | int skull[23][23] { //design of skull in the help page |
ale_carb0ni | 2:7fa08670b1fc | 38 | { 0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 39 | { 0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 40 | { 1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 41 | { 1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 42 | { 1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 43 | { 0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 44 | { 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 45 | { 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 46 | { 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 47 | { 0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 48 | { 0,0,0,1,0,0,1,1,0,1,0,0,0,1,1,0,1,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 49 | { 0,0,0,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 50 | { 0,0,0,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 51 | { 0,0,0,1,0,0,0,1,1,0,0,1,0,0,1,1,0,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 52 | { 0,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 53 | { 0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 54 | { 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 55 | { 0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 56 | { 1,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,1,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 57 | { 1,0,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 58 | { 1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 59 | { 0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 60 | { 0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 61 | }; |
ale_carb0ni | 2:7fa08670b1fc | 62 | |
ale_carb0ni | 2:7fa08670b1fc | 63 | int selector[5][7] { |
ale_carb0ni | 2:7fa08670b1fc | 64 | { 0,0,0,0,1,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 65 | { 0,0,0,0,1,1,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 66 | { 1,1,1,1,1,1,1 }, |
ale_carb0ni | 2:7fa08670b1fc | 67 | { 0,0,0,0,1,1,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 68 | { 0,0,0,0,1,0,0 }, |
ale_carb0ni | 2:7fa08670b1fc | 69 | }; |
ale_carb0ni | 2:7fa08670b1fc | 70 | |
ale_carb0ni | 2:7fa08670b1fc | 71 | |
ale_carb0ni | 2:7fa08670b1fc | 72 | Menu::Menu(N5110 &lcd,Gamepad &pad) |
ale_carb0ni | 2:7fa08670b1fc | 73 | { |
ale_carb0ni | 2:7fa08670b1fc | 74 | _lcd = lcd; |
ale_carb0ni | 2:7fa08670b1fc | 75 | _pad = pad; |
ale_carb0ni | 2:7fa08670b1fc | 76 | }; |
ale_carb0ni | 2:7fa08670b1fc | 77 | |
ale_carb0ni | 2:7fa08670b1fc | 78 | void Menu::initscreen() |
ale_carb0ni | 2:7fa08670b1fc | 79 | { |
ale_carb0ni | 2:7fa08670b1fc | 80 | while( _pad.start_held() == false) { |
ale_carb0ni | 2:7fa08670b1fc | 81 | _lcd.clear(); |
ale_carb0ni | 2:7fa08670b1fc | 82 | _lcd.drawSprite(29,1,28,26,(int*)snake); //initial page |
ale_carb0ni | 2:7fa08670b1fc | 83 | _lcd.printString("SNAKE",WIDTH/2-15,4); |
ale_carb0ni | 2:7fa08670b1fc | 84 | _lcd.printString("Press Start",WIDTH/2-30,5); |
ale_carb0ni | 2:7fa08670b1fc | 85 | _lcd.setContrast( _pad.read_pot1()); |
ale_carb0ni | 2:7fa08670b1fc | 86 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 87 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 88 | } |
ale_carb0ni | 2:7fa08670b1fc | 89 | _lcd.clear(); |
ale_carb0ni | 2:7fa08670b1fc | 90 | } |
ale_carb0ni | 2:7fa08670b1fc | 91 | |
ale_carb0ni | 2:7fa08670b1fc | 92 | void Menu::menu_screen() |
ale_carb0ni | 2:7fa08670b1fc | 93 | { |
ale_carb0ni | 2:7fa08670b1fc | 94 | while(_pad.A_held() == false) { //unitl A is pressed, the code |
ale_carb0ni | 2:7fa08670b1fc | 95 | arrow(); //stays on the meun, |
ale_carb0ni | 2:7fa08670b1fc | 96 | _lcd.refresh(); //executing only the code of the arrow |
ale_carb0ni | 2:7fa08670b1fc | 97 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 98 | } |
ale_carb0ni | 2:7fa08670b1fc | 99 | |
ale_carb0ni | 2:7fa08670b1fc | 100 | /*if (_lcd.getPixel(20,27)) { //if A is pressed and the arrow |
ale_carb0ni | 2:7fa08670b1fc | 101 | movement(); //is corresponding to PLAY, |
ale_carb0ni | 2:7fa08670b1fc | 102 | draw(); //the code executes game, movement, draw functions |
ale_carb0ni | 2:7fa08670b1fc | 103 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 104 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 105 | }*/ |
ale_carb0ni | 2:7fa08670b1fc | 106 | if (_lcd.getPixel(20,35)) { //if A is pressed and the arrow |
ale_carb0ni | 2:7fa08670b1fc | 107 | help(); //is corresponding to HELP, |
ale_carb0ni | 2:7fa08670b1fc | 108 | _lcd.refresh(); //the code executes help function |
ale_carb0ni | 2:7fa08670b1fc | 109 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 110 | } |
ale_carb0ni | 2:7fa08670b1fc | 111 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 112 | } |
ale_carb0ni | 2:7fa08670b1fc | 113 | |
ale_carb0ni | 2:7fa08670b1fc | 114 | void Menu::arrow() |
ale_carb0ni | 2:7fa08670b1fc | 115 | { |
ale_carb0ni | 2:7fa08670b1fc | 116 | _lcd.drawRect(0,0,WIDTH,HEIGHT,FILL_TRANSPARENT); //main menu design |
ale_carb0ni | 2:7fa08670b1fc | 117 | _lcd.printString("MENU",WIDTH/2-15,1); |
ale_carb0ni | 2:7fa08670b1fc | 118 | _lcd.printString("Play",WIDTH/2-13,3); |
ale_carb0ni | 2:7fa08670b1fc | 119 | _lcd.printString("Help",WIDTH/2-13,4); |
ale_carb0ni | 2:7fa08670b1fc | 120 | //_lcd.drawSprite(WIDTH/2-26,25,5,7,(int*)selector); |
ale_carb0ni | 2:7fa08670b1fc | 121 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 122 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 123 | |
ale_carb0ni | 2:7fa08670b1fc | 124 | if ( _pad.X_held() == true) { //position of arrow in the meun |
ale_carb0ni | 2:7fa08670b1fc | 125 | _lcd.clear(); //according to what button is pressed |
ale_carb0ni | 2:7fa08670b1fc | 126 | _lcd.drawSprite(WIDTH/2-26,25,5,7,(int*)selector); |
ale_carb0ni | 2:7fa08670b1fc | 127 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 128 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 129 | } |
ale_carb0ni | 2:7fa08670b1fc | 130 | |
ale_carb0ni | 2:7fa08670b1fc | 131 | if ( _pad.B_held() == true) { //position of arrow in the meun |
ale_carb0ni | 2:7fa08670b1fc | 132 | _lcd.clear(); //according to what button is pressed |
ale_carb0ni | 2:7fa08670b1fc | 133 | _lcd.drawSprite(WIDTH/2-26,33,5,7,(int*)selector); |
ale_carb0ni | 2:7fa08670b1fc | 134 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 135 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 136 | } |
ale_carb0ni | 2:7fa08670b1fc | 137 | } |
ale_carb0ni | 2:7fa08670b1fc | 138 | |
ale_carb0ni | 2:7fa08670b1fc | 139 | void Menu::help() |
ale_carb0ni | 2:7fa08670b1fc | 140 | { |
ale_carb0ni | 2:7fa08670b1fc | 141 | while(1) { |
ale_carb0ni | 2:7fa08670b1fc | 142 | _lcd.clear(); //help instructions, page 1 |
ale_carb0ni | 2:7fa08670b1fc | 143 | _lcd.printString("Use the",21,0); |
ale_carb0ni | 2:7fa08670b1fc | 144 | _lcd.printString("buttons",21,1); |
ale_carb0ni | 2:7fa08670b1fc | 145 | _lcd.printString("to move",21,2); |
ale_carb0ni | 2:7fa08670b1fc | 146 | _lcd.printString("(press B)",15,5); |
ale_carb0ni | 2:7fa08670b1fc | 147 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 148 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 149 | if (_pad.B_held()) { |
ale_carb0ni | 2:7fa08670b1fc | 150 | break; |
ale_carb0ni | 2:7fa08670b1fc | 151 | } |
ale_carb0ni | 2:7fa08670b1fc | 152 | } |
ale_carb0ni | 2:7fa08670b1fc | 153 | wait(0.2); |
ale_carb0ni | 2:7fa08670b1fc | 154 | |
ale_carb0ni | 2:7fa08670b1fc | 155 | while(1) { |
ale_carb0ni | 2:7fa08670b1fc | 156 | _lcd.clear(); //help instructions, page 2 |
ale_carb0ni | 2:7fa08670b1fc | 157 | _lcd.printString("Eat the fruit",5,0); |
ale_carb0ni | 2:7fa08670b1fc | 158 | _lcd.printString("to score",15,1); |
ale_carb0ni | 2:7fa08670b1fc | 159 | _lcd.printString("(press B)",16,5); |
ale_carb0ni | 2:7fa08670b1fc | 160 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 161 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 162 | |
ale_carb0ni | 2:7fa08670b1fc | 163 | if (_pad.B_held()) { |
ale_carb0ni | 2:7fa08670b1fc | 164 | break; |
ale_carb0ni | 2:7fa08670b1fc | 165 | } |
ale_carb0ni | 2:7fa08670b1fc | 166 | } |
ale_carb0ni | 2:7fa08670b1fc | 167 | wait(0.2); |
ale_carb0ni | 2:7fa08670b1fc | 168 | |
ale_carb0ni | 2:7fa08670b1fc | 169 | while(1) { |
ale_carb0ni | 2:7fa08670b1fc | 170 | _lcd.clear(); //help instructions, page 3 |
ale_carb0ni | 2:7fa08670b1fc | 171 | _lcd.printString("If you hit",13,0); |
ale_carb0ni | 2:7fa08670b1fc | 172 | _lcd.printString("a wall",23,1); |
ale_carb0ni | 2:7fa08670b1fc | 173 | _lcd.printString("or your tail",5,2); |
ale_carb0ni | 2:7fa08670b1fc | 174 | _lcd.printString("...",WIDTH/2-7,3); |
ale_carb0ni | 2:7fa08670b1fc | 175 | _lcd.printString("(press B)",16,5); |
ale_carb0ni | 2:7fa08670b1fc | 176 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 177 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 178 | |
ale_carb0ni | 2:7fa08670b1fc | 179 | if (_pad.B_held()) { |
ale_carb0ni | 2:7fa08670b1fc | 180 | break; |
ale_carb0ni | 2:7fa08670b1fc | 181 | } |
ale_carb0ni | 2:7fa08670b1fc | 182 | } |
ale_carb0ni | 2:7fa08670b1fc | 183 | wait(0.2); |
ale_carb0ni | 2:7fa08670b1fc | 184 | |
ale_carb0ni | 2:7fa08670b1fc | 185 | while(1) { |
ale_carb0ni | 2:7fa08670b1fc | 186 | _lcd.clear(); //help instructions, final page |
ale_carb0ni | 2:7fa08670b1fc | 187 | _lcd.printString("YOU DIE!",20,1); |
ale_carb0ni | 2:7fa08670b1fc | 188 | _lcd.drawSprite(30,16,23,23,(int*)skull); |
ale_carb0ni | 2:7fa08670b1fc | 189 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 190 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 191 | |
ale_carb0ni | 2:7fa08670b1fc | 192 | if (_pad.B_held()) { |
ale_carb0ni | 2:7fa08670b1fc | 193 | break; |
ale_carb0ni | 2:7fa08670b1fc | 194 | } |
ale_carb0ni | 2:7fa08670b1fc | 195 | } |
ale_carb0ni | 2:7fa08670b1fc | 196 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 197 | _lcd.clear(); |
ale_carb0ni | 2:7fa08670b1fc | 198 | menu_screen(); //after help instructions, returns to main menu |
ale_carb0ni | 2:7fa08670b1fc | 199 | _lcd.refresh(); |
ale_carb0ni | 2:7fa08670b1fc | 200 | wait(1/6); |
ale_carb0ni | 2:7fa08670b1fc | 201 | } |