Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Committer:
AhmedPlaymaker
Date:
Mon May 06 14:28:35 2019 +0000
Revision:
83:329da564799a
Parent:
76:7fa91122907f
Child:
89:8fbb0405a916
Now, I have put gamepad and lcd objects from the main() in a pointer, so that i can declare them in init() in every class i use them in and use them as global objects for each class, without having to send their addresses to all of the functions.

Who changed what in which revision?

UserRevisionLine numberNew 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 63:205f0ca48473 5
AhmedPlaymaker 5:e4df87957a5b 6 }
AhmedPlaymaker 5:e4df87957a5b 7
AhmedPlaymaker 5:e4df87957a5b 8 Settings::~Settings()
AhmedPlaymaker 5:e4df87957a5b 9 {
AhmedPlaymaker 63:205f0ca48473 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 56:142e9fdb77a8 20 {1,1,1,1,1,1,1,1},
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 56:142e9fdb77a8 36 {1,1,1,1,1,1,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 57:845781aea5ec 45 int screenContrast[13][13] = {
AhmedPlaymaker 57:845781aea5ec 46 {0,0,0,0,1,1,1,1,1,0,0,0,0},
AhmedPlaymaker 57:845781aea5ec 47 {0,0,0,1,0,0,0,0,0,1,0,0,0},
AhmedPlaymaker 57:845781aea5ec 48 {0,0,1,0,0,1,1,1,0,0,1,0,0},
AhmedPlaymaker 57:845781aea5ec 49 {0,1,0,1,1,0,0,1,1,1,0,1,0},
AhmedPlaymaker 57:845781aea5ec 50 {1,0,0,1,0,0,0,1,1,1,0,0,1},
AhmedPlaymaker 57:845781aea5ec 51 {1,0,1,1,0,0,0,1,1,1,1,0,1},
AhmedPlaymaker 57:845781aea5ec 52 {1,0,1,0,0,0,0,1,1,1,1,0,1},
AhmedPlaymaker 57:845781aea5ec 53 {1,0,1,0,0,0,0,1,1,1,1,0,1},
AhmedPlaymaker 57:845781aea5ec 54 {1,0,0,1,0,0,0,1,1,1,0,0,1},
AhmedPlaymaker 57:845781aea5ec 55 {0,1,0,1,1,0,0,1,1,1,0,1,0},
AhmedPlaymaker 57:845781aea5ec 56 {0,0,1,0,0,1,1,1,0,0,1,0,0},
AhmedPlaymaker 57:845781aea5ec 57 {0,0,0,1,0,0,0,0,0,1,0,0,0},
AhmedPlaymaker 57:845781aea5ec 58 {0,0,0,0,1,1,1,1,1,0,0,0,0},
AhmedPlaymaker 57:845781aea5ec 59 };
AhmedPlaymaker 57:845781aea5ec 60
AhmedPlaymaker 57:845781aea5ec 61 int brightness[15][15] = {
AhmedPlaymaker 57:845781aea5ec 62 {0,0,0,1,0,0,0,1,0,0,0,1,0,0,0},
AhmedPlaymaker 57:845781aea5ec 63 {0,1,0,0,1,0,0,1,0,0,1,0,0,1,0},
AhmedPlaymaker 57:845781aea5ec 64 {0,0,1,0,0,1,0,1,0,1,0,0,1,0,0},
AhmedPlaymaker 57:845781aea5ec 65 {1,0,0,1,0,0,1,1,1,0,0,1,0,0,1},
AhmedPlaymaker 57:845781aea5ec 66 {0,1,0,0,1,1,0,0,0,1,1,0,0,1,0},
AhmedPlaymaker 57:845781aea5ec 67 {0,0,1,0,1,0,0,0,0,0,1,0,1,0,0},
AhmedPlaymaker 57:845781aea5ec 68 {0,0,0,1,0,0,0,0,0,0,0,1,0,0,0},
AhmedPlaymaker 57:845781aea5ec 69 {1,1,1,1,0,0,0,0,0,0,0,1,1,1,1},
AhmedPlaymaker 57:845781aea5ec 70 {0,0,0,1,0,0,0,0,0,0,0,1,0,0,0},
AhmedPlaymaker 57:845781aea5ec 71 {0,0,1,0,1,0,0,0,0,0,1,0,1,0,0},
AhmedPlaymaker 57:845781aea5ec 72 {0,1,0,0,1,1,0,0,0,1,1,0,0,1,0},
AhmedPlaymaker 57:845781aea5ec 73 {1,0,0,1,0,0,1,1,1,0,0,1,0,0,1},
AhmedPlaymaker 57:845781aea5ec 74 {0,0,1,0,0,1,0,1,0,1,0,0,1,0,0},
AhmedPlaymaker 57:845781aea5ec 75 {0,1,0,0,1,0,0,1,0,0,1,0,0,1,0},
AhmedPlaymaker 57:845781aea5ec 76 {0,0,0,1,0,0,0,1,0,0,0,1,0,0,0},
AhmedPlaymaker 57:845781aea5ec 77 };
AhmedPlaymaker 57:845781aea5ec 78
AhmedPlaymaker 83:329da564799a 79 void Settings::init(N5110 *lcd, Gamepad *pad)
AhmedPlaymaker 30:461231877c89 80 {
AhmedPlaymaker 83:329da564799a 81 _lcd = lcd;
AhmedPlaymaker 83:329da564799a 82 _pad = pad;
AhmedPlaymaker 83:329da564799a 83 }
AhmedPlaymaker 83:329da564799a 84
AhmedPlaymaker 83:329da564799a 85 float * Settings::Implement(float cs)
AhmedPlaymaker 83:329da564799a 86 {
AhmedPlaymaker 83:329da564799a 87 Settings::info();
AhmedPlaymaker 64:540aa1602372 88 cs_sc[0] = 4; //to initialise the control speeds
AhmedPlaymaker 64:540aa1602372 89 cs_sc[1] = 1; //to set show credits to a default of 1.
AhmedPlaymaker 63:205f0ca48473 90 int st = 1; //an index for settings
AhmedPlaymaker 63:205f0ca48473 91 wait(1/cs); //to avoid a race condition of the following while loop being skipped.
AhmedPlaymaker 83:329da564799a 92 //_pad->init();
AhmedPlaymaker 83:329da564799a 93 while (_pad->check_event(Gamepad::BACK_PRESSED) == false) { //if button pressed.
AhmedPlaymaker 83:329da564799a 94 Direction d = _pad->get_direction();
AhmedPlaymaker 30:461231877c89 95 wait(1/cs);
AhmedPlaymaker 83:329da564799a 96 _lcd->clear();
AhmedPlaymaker 63:205f0ca48473 97
AhmedPlaymaker 63:205f0ca48473 98 if((d==E)&&(st==4)) {
AhmedPlaymaker 63:205f0ca48473 99 st=1;
AhmedPlaymaker 63:205f0ca48473 100 }
AhmedPlaymaker 63:205f0ca48473 101
AhmedPlaymaker 63:205f0ca48473 102 else if((d==W)&&(st==1)) {
AhmedPlaymaker 63:205f0ca48473 103 st=4;
AhmedPlaymaker 63:205f0ca48473 104 }
AhmedPlaymaker 63:205f0ca48473 105
AhmedPlaymaker 63:205f0ca48473 106 else if((d==E)&&(1<=st<=3)) {
AhmedPlaymaker 63:205f0ca48473 107 st=st+1;
AhmedPlaymaker 63:205f0ca48473 108 }
AhmedPlaymaker 63:205f0ca48473 109
AhmedPlaymaker 63:205f0ca48473 110 else if((d==W)&&(2<=st<=4)) {
AhmedPlaymaker 63:205f0ca48473 111 st=st-1;
AhmedPlaymaker 63:205f0ca48473 112 }
AhmedPlaymaker 63:205f0ca48473 113
AhmedPlaymaker 83:329da564799a 114 Settings::CallFunctions(st);
AhmedPlaymaker 30:461231877c89 115 }
AhmedPlaymaker 83:329da564799a 116 _pad->tone(1000.0,0.1);
AhmedPlaymaker 30:461231877c89 117 return cs_sc;
AhmedPlaymaker 30:461231877c89 118 }
AhmedPlaymaker 30:461231877c89 119
AhmedPlaymaker 83:329da564799a 120 void Settings::info()
AhmedPlaymaker 5:e4df87957a5b 121 {
AhmedPlaymaker 83:329da564799a 122 _lcd->clear();
AhmedPlaymaker 83:329da564799a 123 _pad->leds_on();
AhmedPlaymaker 83:329da564799a 124 _lcd->printString("For selecting",0,0);//Function used to promt the user to how to use settings.
AhmedPlaymaker 83:329da564799a 125 _lcd->printString("from settings",0,1);
AhmedPlaymaker 83:329da564799a 126 _lcd->printString("available, use",0,2);
AhmedPlaymaker 83:329da564799a 127 _lcd->printString("Joystick in <>",0,3);
AhmedPlaymaker 83:329da564799a 128 _lcd->printString("directions",0,4);
AhmedPlaymaker 83:329da564799a 129 _lcd->refresh();
AhmedPlaymaker 5:e4df87957a5b 130 wait(2);
AhmedPlaymaker 83:329da564799a 131 _lcd->clear();
AhmedPlaymaker 83:329da564799a 132 _lcd->printString("For adjusting",0,0);
AhmedPlaymaker 83:329da564799a 133 _lcd->printString("the parameters,",0,1);
AhmedPlaymaker 83:329da564799a 134 _lcd->printString("use the pot",0,2);
AhmedPlaymaker 83:329da564799a 135 _lcd->printString("by rotating",0,3);
AhmedPlaymaker 83:329da564799a 136 _lcd->printString("Press Back",0,4);
AhmedPlaymaker 83:329da564799a 137 _lcd->printString("to confirm",0,5);
AhmedPlaymaker 83:329da564799a 138 _lcd->refresh();
AhmedPlaymaker 5:e4df87957a5b 139 wait(2);
AhmedPlaymaker 83:329da564799a 140 _pad->leds_off();
AhmedPlaymaker 5:e4df87957a5b 141 }
AhmedPlaymaker 5:e4df87957a5b 142
AhmedPlaymaker 83:329da564799a 143 void Settings::CallFunctions(int st)
AhmedPlaymaker 63:205f0ca48473 144 {
AhmedPlaymaker 83:329da564799a 145 _lcd->clear();
AhmedPlaymaker 83:329da564799a 146 _lcd->drawSprite(5,22,13,8,(int *)naviL); //Function used to draw the sprite.
AhmedPlaymaker 83:329da564799a 147 _lcd->drawSprite(71,22,13,8,(int *)naviR); //Function used to draw the sprite.
AhmedPlaymaker 63:205f0ca48473 148 switch (st) {
AhmedPlaymaker 63:205f0ca48473 149 case 1:
AhmedPlaymaker 83:329da564799a 150 Settings::controlSensitivity();
AhmedPlaymaker 63:205f0ca48473 151 break;
AhmedPlaymaker 63:205f0ca48473 152 case 2:
AhmedPlaymaker 83:329da564799a 153 Settings::brigntness();
AhmedPlaymaker 63:205f0ca48473 154 break;
AhmedPlaymaker 63:205f0ca48473 155 case 3:
AhmedPlaymaker 83:329da564799a 156 Settings::contrast();
AhmedPlaymaker 63:205f0ca48473 157 break;
AhmedPlaymaker 63:205f0ca48473 158 case 4:
AhmedPlaymaker 83:329da564799a 159 Settings::showCredits();
AhmedPlaymaker 63:205f0ca48473 160 break;
AhmedPlaymaker 63:205f0ca48473 161 }
AhmedPlaymaker 83:329da564799a 162 _lcd->refresh();
AhmedPlaymaker 63:205f0ca48473 163 }
AhmedPlaymaker 63:205f0ca48473 164
AhmedPlaymaker 83:329da564799a 165 void Settings::controlSensitivity()
AhmedPlaymaker 5:e4df87957a5b 166 {
AhmedPlaymaker 83:329da564799a 167 _lcd->printString("Control Speeds",0,0);
AhmedPlaymaker 83:329da564799a 168 cs_sc[0] = _pad->read_pot()*5+1;
AhmedPlaymaker 83:329da564799a 169 _lcd->drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 83:329da564799a 170 _lcd->drawRect(15,22,_pad->read_pot()*54,13,FILL_BLACK);
AhmedPlaymaker 83:329da564799a 171 _pad->leds_on();
AhmedPlaymaker 5:e4df87957a5b 172 }
AhmedPlaymaker 5:e4df87957a5b 173
AhmedPlaymaker 83:329da564799a 174 void Settings::brigntness()
AhmedPlaymaker 5:e4df87957a5b 175 {
AhmedPlaymaker 83:329da564799a 176 _lcd->drawSprite(35,2,15,15,(int *)brightness); //Function used to draw the sprite.
AhmedPlaymaker 5:e4df87957a5b 177 float pot;
AhmedPlaymaker 83:329da564799a 178 pot = _pad->read_pot();
AhmedPlaymaker 83:329da564799a 179 _lcd->drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 83:329da564799a 180 _lcd->drawRect(15,22,_pad->read_pot()*54,13,FILL_BLACK);
AhmedPlaymaker 83:329da564799a 181 _lcd->setBrightness(pot);
AhmedPlaymaker 83:329da564799a 182 _pad->leds_on();
AhmedPlaymaker 5:e4df87957a5b 183 }
AhmedPlaymaker 5:e4df87957a5b 184
AhmedPlaymaker 83:329da564799a 185 void Settings::contrast()
AhmedPlaymaker 5:e4df87957a5b 186 {
AhmedPlaymaker 83:329da564799a 187 _lcd->drawSprite(36,3,13,13,(int *)screenContrast); //Function used to draw the sprite.
AhmedPlaymaker 5:e4df87957a5b 188 float pot;
AhmedPlaymaker 83:329da564799a 189 pot = ((_pad->read_pot()+3.8)/8);
AhmedPlaymaker 83:329da564799a 190 _lcd->drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 83:329da564799a 191 _lcd->drawRect(15,22,_pad->read_pot()*54,13,FILL_BLACK);
AhmedPlaymaker 83:329da564799a 192 _lcd->setContrast(pot);
AhmedPlaymaker 83:329da564799a 193 _pad->leds_on();
AhmedPlaymaker 5:e4df87957a5b 194 }
AhmedPlaymaker 5:e4df87957a5b 195
AhmedPlaymaker 83:329da564799a 196 void Settings::showCredits()
AhmedPlaymaker 5:e4df87957a5b 197 {
AhmedPlaymaker 83:329da564799a 198 _lcd->printString("Show Credits?",5,0);
AhmedPlaymaker 5:e4df87957a5b 199 float pot;
AhmedPlaymaker 83:329da564799a 200 pot = _pad->read_pot();
AhmedPlaymaker 63:205f0ca48473 201
AhmedPlaymaker 6:3ffab44ed49c 202 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 83:329da564799a 203 _lcd->printString("NO",36,3);
AhmedPlaymaker 63:205f0ca48473 204 cs_sc[1] = 0;
AhmedPlaymaker 5:e4df87957a5b 205 }
AhmedPlaymaker 63:205f0ca48473 206
AhmedPlaymaker 6:3ffab44ed49c 207 else {
AhmedPlaymaker 83:329da564799a 208 _lcd->printString("YES",33,3);
AhmedPlaymaker 63:205f0ca48473 209 cs_sc[1] = 1;
AhmedPlaymaker 5:e4df87957a5b 210 }
AhmedPlaymaker 63:205f0ca48473 211
AhmedPlaymaker 83:329da564799a 212 _pad->leds_on();
AhmedPlaymaker 5:e4df87957a5b 213 }