![](/media/cache/profiles/LinkedIn_0NghoZJ.jpeg.50x50_q85.jpg)
Snake vs Block Game to be run upon K64F.
MenuClasses/Settings/Settings.cpp@55:df0825049171, 2019-04-27 (annotated)
- Committer:
- AhmedPlaymaker
- Date:
- Sat Apr 27 18:56:30 2019 +0000
- Revision:
- 55:df0825049171
- Parent:
- 49:441c32f6603e
- Child:
- 56:142e9fdb77a8
Converted menus from if implementation to case structures
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AhmedPlaymaker | 5:e4df87957a5b | 1 | #include "Settings.h" |
AhmedPlaymaker | 5:e4df87957a5b | 2 | |
AhmedPlaymaker | 5:e4df87957a5b | 3 | Settings::Settings() |
AhmedPlaymaker | 5:e4df87957a5b | 4 | { |
AhmedPlaymaker | 5:e4df87957a5b | 5 | |
AhmedPlaymaker | 5:e4df87957a5b | 6 | } |
AhmedPlaymaker | 5:e4df87957a5b | 7 | |
AhmedPlaymaker | 5:e4df87957a5b | 8 | Settings::~Settings() |
AhmedPlaymaker | 5:e4df87957a5b | 9 | { |
AhmedPlaymaker | 5:e4df87957a5b | 10 | |
AhmedPlaymaker | 5:e4df87957a5b | 11 | } |
AhmedPlaymaker | 5:e4df87957a5b | 12 | |
AhmedPlaymaker | 30:461231877c89 | 13 | int naviL[13][8] = { |
AhmedPlaymaker | 30:461231877c89 | 14 | {0,0,0,0,0,0,1,1}, |
AhmedPlaymaker | 30:461231877c89 | 15 | {0,0,0,0,0,1,1,0}, |
AhmedPlaymaker | 30:461231877c89 | 16 | {0,0,0,0,1,1,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 17 | {0,0,0,1,1,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 18 | {0,0,1,1,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 19 | {0,1,1,0,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 20 | {1,1,0,0,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 21 | {0,1,1,0,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 22 | {0,0,1,1,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 23 | {0,0,0,1,1,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 24 | {0,0,0,0,1,1,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 25 | {0,0,0,0,0,1,1,0}, |
AhmedPlaymaker | 30:461231877c89 | 26 | {0,0,0,0,0,0,1,1}, |
AhmedPlaymaker | 30:461231877c89 | 27 | }; |
AhmedPlaymaker | 30:461231877c89 | 28 | |
AhmedPlaymaker | 30:461231877c89 | 29 | int naviR[13][8] = { |
AhmedPlaymaker | 30:461231877c89 | 30 | {1,1,0,0,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 31 | {0,1,1,0,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 32 | {0,0,1,1,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 33 | {0,0,0,1,1,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 34 | {0,0,0,0,1,1,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 35 | {0,0,0,0,0,1,1,0}, |
AhmedPlaymaker | 30:461231877c89 | 36 | {0,0,0,0,0,0,1,1}, |
AhmedPlaymaker | 30:461231877c89 | 37 | {0,0,0,0,0,1,1,0}, |
AhmedPlaymaker | 30:461231877c89 | 38 | {0,0,0,0,1,1,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 39 | {0,0,0,1,1,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 40 | {0,0,1,1,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 41 | {0,1,1,0,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 42 | {1,1,0,0,0,0,0,0}, |
AhmedPlaymaker | 30:461231877c89 | 43 | }; |
AhmedPlaymaker | 30:461231877c89 | 44 | |
AhmedPlaymaker | 49:441c32f6603e | 45 | float * Settings::Implement(N5110 &lcd, Gamepad &pad, float cs) |
AhmedPlaymaker | 30:461231877c89 | 46 | { |
AhmedPlaymaker | 30:461231877c89 | 47 | Settings::info(lcd, pad); |
AhmedPlaymaker | 49:441c32f6603e | 48 | int st = 1; |
AhmedPlaymaker | 31:6566026b4c6a | 49 | pad.init(); |
AhmedPlaymaker | 30:461231877c89 | 50 | while (pad.check_event(Gamepad::BACK_PRESSED) == false) { //if button pressed. |
AhmedPlaymaker | 30:461231877c89 | 51 | Direction d = pad.get_direction(); |
AhmedPlaymaker | 30:461231877c89 | 52 | wait(1/cs); |
AhmedPlaymaker | 30:461231877c89 | 53 | lcd.clear(); |
AhmedPlaymaker | 30:461231877c89 | 54 | |
AhmedPlaymaker | 55:df0825049171 | 55 | if((d==E)&&(st==5)) { st=1; } |
AhmedPlaymaker | 55:df0825049171 | 56 | |
AhmedPlaymaker | 55:df0825049171 | 57 | else if((d==W)&&(st==1)) { st=5; } |
AhmedPlaymaker | 55:df0825049171 | 58 | |
AhmedPlaymaker | 55:df0825049171 | 59 | else if((d==E)&&(1<=st<=4)) { st=st+1; } |
AhmedPlaymaker | 55:df0825049171 | 60 | |
AhmedPlaymaker | 55:df0825049171 | 61 | else if((d==W)&&(2<=st<=5)) { st=st-1; } |
AhmedPlaymaker | 55:df0825049171 | 62 | |
AhmedPlaymaker | 55:df0825049171 | 63 | Settings::CallFunctions(lcd, pad, st); |
AhmedPlaymaker | 30:461231877c89 | 64 | } |
AhmedPlaymaker | 55:df0825049171 | 65 | pad.tone(1000.0,0.1); |
AhmedPlaymaker | 30:461231877c89 | 66 | return cs_sc; |
AhmedPlaymaker | 30:461231877c89 | 67 | } |
AhmedPlaymaker | 30:461231877c89 | 68 | |
AhmedPlaymaker | 55:df0825049171 | 69 | void Settings::CallFunctions(N5110 &lcd, Gamepad &pad, int st) |
AhmedPlaymaker | 55:df0825049171 | 70 | { |
AhmedPlaymaker | 55:df0825049171 | 71 | lcd.drawSprite(5,22,13,8,(int *)naviL); //Function used to draw the sprite. |
AhmedPlaymaker | 55:df0825049171 | 72 | lcd.drawSprite(71,22,13,8,(int *)naviR); //Function used to draw the sprite. |
AhmedPlaymaker | 55:df0825049171 | 73 | switch (st) { |
AhmedPlaymaker | 55:df0825049171 | 74 | case 1: |
AhmedPlaymaker | 55:df0825049171 | 75 | Settings::controlSensitivity(lcd, pad); |
AhmedPlaymaker | 55:df0825049171 | 76 | break; |
AhmedPlaymaker | 55:df0825049171 | 77 | case 2: |
AhmedPlaymaker | 55:df0825049171 | 78 | Settings::brigntness(lcd, pad); |
AhmedPlaymaker | 55:df0825049171 | 79 | break; |
AhmedPlaymaker | 55:df0825049171 | 80 | case 3: |
AhmedPlaymaker | 55:df0825049171 | 81 | Settings::contrast(lcd, pad); |
AhmedPlaymaker | 55:df0825049171 | 82 | break; |
AhmedPlaymaker | 55:df0825049171 | 83 | case 4: |
AhmedPlaymaker | 55:df0825049171 | 84 | Settings::volume(lcd, pad); |
AhmedPlaymaker | 55:df0825049171 | 85 | break; |
AhmedPlaymaker | 55:df0825049171 | 86 | case 5: |
AhmedPlaymaker | 55:df0825049171 | 87 | Settings::showCredits(lcd, pad); |
AhmedPlaymaker | 55:df0825049171 | 88 | break; |
AhmedPlaymaker | 55:df0825049171 | 89 | } |
AhmedPlaymaker | 55:df0825049171 | 90 | lcd.refresh(); |
AhmedPlaymaker | 55:df0825049171 | 91 | } |
AhmedPlaymaker | 55:df0825049171 | 92 | |
AhmedPlaymaker | 5:e4df87957a5b | 93 | void Settings::info(N5110 &lcd, Gamepad &pad) |
AhmedPlaymaker | 5:e4df87957a5b | 94 | { |
AhmedPlaymaker | 5:e4df87957a5b | 95 | lcd.clear(); |
AhmedPlaymaker | 5:e4df87957a5b | 96 | pad.leds_on(); |
AhmedPlaymaker | 5:e4df87957a5b | 97 | lcd.printString("For selecting",0,0);//Function used to promt the user to how to use settings. |
AhmedPlaymaker | 5:e4df87957a5b | 98 | lcd.printString("from settings",0,1); |
AhmedPlaymaker | 5:e4df87957a5b | 99 | lcd.printString("available, use",0,2); |
AhmedPlaymaker | 5:e4df87957a5b | 100 | lcd.printString("Joystick in <>",0,3); |
AhmedPlaymaker | 5:e4df87957a5b | 101 | lcd.printString("directions",0,4); |
AhmedPlaymaker | 5:e4df87957a5b | 102 | lcd.refresh(); |
AhmedPlaymaker | 5:e4df87957a5b | 103 | wait(2); |
AhmedPlaymaker | 5:e4df87957a5b | 104 | lcd.clear(); |
AhmedPlaymaker | 5:e4df87957a5b | 105 | lcd.printString("For adjusting",0,0); |
AhmedPlaymaker | 5:e4df87957a5b | 106 | lcd.printString("the parameters,",0,1); |
AhmedPlaymaker | 5:e4df87957a5b | 107 | lcd.printString("use the pot",0,2); |
AhmedPlaymaker | 5:e4df87957a5b | 108 | lcd.printString("by rotating",0,3); |
AhmedPlaymaker | 5:e4df87957a5b | 109 | lcd.printString("Press Back",0,4); |
AhmedPlaymaker | 5:e4df87957a5b | 110 | lcd.printString("to confirm",0,5); |
AhmedPlaymaker | 5:e4df87957a5b | 111 | lcd.refresh(); |
AhmedPlaymaker | 5:e4df87957a5b | 112 | wait(2); |
AhmedPlaymaker | 5:e4df87957a5b | 113 | pad.leds_off(); |
AhmedPlaymaker | 5:e4df87957a5b | 114 | lcd.clear(); |
AhmedPlaymaker | 5:e4df87957a5b | 115 | } |
AhmedPlaymaker | 5:e4df87957a5b | 116 | |
AhmedPlaymaker | 49:441c32f6603e | 117 | void Settings::controlSensitivity(N5110 &lcd, Gamepad &pad) |
AhmedPlaymaker | 5:e4df87957a5b | 118 | { |
AhmedPlaymaker | 5:e4df87957a5b | 119 | lcd.printString("Control Speeds",0,0); |
AhmedPlaymaker | 49:441c32f6603e | 120 | cs_sc[0] = pad.read_pot()*5+1; |
AhmedPlaymaker | 5:e4df87957a5b | 121 | lcd.drawRect(15,22,54,13,FILL_TRANSPARENT); |
AhmedPlaymaker | 5:e4df87957a5b | 122 | lcd.drawRect(15,22,pad.read_pot()*54,13,FILL_BLACK); |
AhmedPlaymaker | 5:e4df87957a5b | 123 | pad.leds_on(); |
AhmedPlaymaker | 5:e4df87957a5b | 124 | } |
AhmedPlaymaker | 5:e4df87957a5b | 125 | |
AhmedPlaymaker | 5:e4df87957a5b | 126 | void Settings::brigntness(N5110 &lcd, Gamepad &pad) |
AhmedPlaymaker | 5:e4df87957a5b | 127 | { |
AhmedPlaymaker | 5:e4df87957a5b | 128 | lcd.printString("Brigntness",9,0); |
AhmedPlaymaker | 5:e4df87957a5b | 129 | float pot; |
AhmedPlaymaker | 5:e4df87957a5b | 130 | pot = pad.read_pot(); |
AhmedPlaymaker | 5:e4df87957a5b | 131 | lcd.drawRect(15,22,54,13,FILL_TRANSPARENT); |
AhmedPlaymaker | 5:e4df87957a5b | 132 | lcd.drawRect(15,22,pad.read_pot()*54,13,FILL_BLACK); |
AhmedPlaymaker | 5:e4df87957a5b | 133 | lcd.setBrightness(pot); |
AhmedPlaymaker | 5:e4df87957a5b | 134 | pad.leds_on(); |
AhmedPlaymaker | 5:e4df87957a5b | 135 | } |
AhmedPlaymaker | 5:e4df87957a5b | 136 | |
AhmedPlaymaker | 5:e4df87957a5b | 137 | void Settings::contrast(N5110 &lcd, Gamepad &pad) |
AhmedPlaymaker | 5:e4df87957a5b | 138 | { |
AhmedPlaymaker | 5:e4df87957a5b | 139 | lcd.printString("Contrast",16,0); |
AhmedPlaymaker | 5:e4df87957a5b | 140 | float pot; |
AhmedPlaymaker | 43:233f93860d08 | 141 | pot = ((pad.read_pot()+3.8)/8); |
AhmedPlaymaker | 5:e4df87957a5b | 142 | lcd.drawRect(15,22,54,13,FILL_TRANSPARENT); |
AhmedPlaymaker | 5:e4df87957a5b | 143 | lcd.drawRect(15,22,pad.read_pot()*54,13,FILL_BLACK); |
AhmedPlaymaker | 5:e4df87957a5b | 144 | lcd.setContrast(pot); |
AhmedPlaymaker | 5:e4df87957a5b | 145 | pad.leds_on(); |
AhmedPlaymaker | 5:e4df87957a5b | 146 | } |
AhmedPlaymaker | 5:e4df87957a5b | 147 | |
AhmedPlaymaker | 5:e4df87957a5b | 148 | void Settings::volume(N5110 &lcd, Gamepad &pad) |
AhmedPlaymaker | 5:e4df87957a5b | 149 | { |
AhmedPlaymaker | 5:e4df87957a5b | 150 | lcd.printString("Volume",20,0); |
AhmedPlaymaker | 5:e4df87957a5b | 151 | float pot; |
AhmedPlaymaker | 5:e4df87957a5b | 152 | pot = pad.read_pot(); |
AhmedPlaymaker | 5:e4df87957a5b | 153 | lcd.drawRect(15,22,54,13,FILL_TRANSPARENT); |
AhmedPlaymaker | 5:e4df87957a5b | 154 | lcd.drawRect(15,22,pot*54,13,FILL_BLACK); |
AhmedPlaymaker | 5:e4df87957a5b | 155 | pad.leds_on(); |
AhmedPlaymaker | 5:e4df87957a5b | 156 | } |
AhmedPlaymaker | 5:e4df87957a5b | 157 | |
AhmedPlaymaker | 49:441c32f6603e | 158 | void Settings::showCredits(N5110 &lcd, Gamepad &pad) |
AhmedPlaymaker | 5:e4df87957a5b | 159 | { |
AhmedPlaymaker | 5:e4df87957a5b | 160 | lcd.printString("Show Credits?",5,0); |
AhmedPlaymaker | 5:e4df87957a5b | 161 | float pot; |
AhmedPlaymaker | 5:e4df87957a5b | 162 | pot = pad.read_pot(); |
AhmedPlaymaker | 5:e4df87957a5b | 163 | |
AhmedPlaymaker | 6:3ffab44ed49c | 164 | if(((0.1<=pot)&&(pot<=0.2))||((0.3<=pot)&&(pot<=0.4))||((0.5<=pot)&&(pot<=0.6))||((0.7<=pot)&&(pot<=0.8))||((0.9<=pot)&&(pot<=1))) { |
AhmedPlaymaker | 5:e4df87957a5b | 165 | lcd.printString("NO",36,3); |
AhmedPlaymaker | 49:441c32f6603e | 166 | cs_sc[1] = 0; |
AhmedPlaymaker | 5:e4df87957a5b | 167 | } |
AhmedPlaymaker | 5:e4df87957a5b | 168 | |
AhmedPlaymaker | 6:3ffab44ed49c | 169 | else { |
AhmedPlaymaker | 5:e4df87957a5b | 170 | lcd.printString("YES",33,3); |
AhmedPlaymaker | 49:441c32f6603e | 171 | cs_sc[1] = 1; |
AhmedPlaymaker | 5:e4df87957a5b | 172 | } |
AhmedPlaymaker | 6:3ffab44ed49c | 173 | |
AhmedPlaymaker | 5:e4df87957a5b | 174 | pad.leds_on(); |
AhmedPlaymaker | 5:e4df87957a5b | 175 | } |