Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Committer:
AhmedPlaymaker
Date:
Tue Apr 30 08:32:30 2019 +0000
Revision:
61:f3c402bc2ad0
Parent:
57:845781aea5ec
Child:
63:205f0ca48473
Fixed an issue with the gamepad library that made it remember the previous button pressed, also removed pad.init() because of this

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 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 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 49:441c32f6603e 79 float * Settings::Implement(N5110 &lcd, Gamepad &pad, float cs)
AhmedPlaymaker 30:461231877c89 80 {
AhmedPlaymaker 30:461231877c89 81 Settings::info(lcd, pad);
AhmedPlaymaker 49:441c32f6603e 82 int st = 1;
AhmedPlaymaker 61:f3c402bc2ad0 83 //pad.init();
AhmedPlaymaker 30:461231877c89 84 while (pad.check_event(Gamepad::BACK_PRESSED) == false) { //if button pressed.
AhmedPlaymaker 30:461231877c89 85 Direction d = pad.get_direction();
AhmedPlaymaker 30:461231877c89 86 wait(1/cs);
AhmedPlaymaker 30:461231877c89 87 lcd.clear();
AhmedPlaymaker 30:461231877c89 88
AhmedPlaymaker 57:845781aea5ec 89 if((d==E)&&(st==4)) { st=1; }
AhmedPlaymaker 55:df0825049171 90
AhmedPlaymaker 57:845781aea5ec 91 else if((d==W)&&(st==1)) { st=4; }
AhmedPlaymaker 55:df0825049171 92
AhmedPlaymaker 57:845781aea5ec 93 else if((d==E)&&(1<=st<=3)) { st=st+1; }
AhmedPlaymaker 55:df0825049171 94
AhmedPlaymaker 57:845781aea5ec 95 else if((d==W)&&(2<=st<=4)) { st=st-1; }
AhmedPlaymaker 55:df0825049171 96
AhmedPlaymaker 55:df0825049171 97 Settings::CallFunctions(lcd, pad, st);
AhmedPlaymaker 30:461231877c89 98 }
AhmedPlaymaker 55:df0825049171 99 pad.tone(1000.0,0.1);
AhmedPlaymaker 30:461231877c89 100 return cs_sc;
AhmedPlaymaker 30:461231877c89 101 }
AhmedPlaymaker 30:461231877c89 102
AhmedPlaymaker 55:df0825049171 103 void Settings::CallFunctions(N5110 &lcd, Gamepad &pad, int st)
AhmedPlaymaker 55:df0825049171 104 {
AhmedPlaymaker 55:df0825049171 105 lcd.drawSprite(5,22,13,8,(int *)naviL); //Function used to draw the sprite.
AhmedPlaymaker 55:df0825049171 106 lcd.drawSprite(71,22,13,8,(int *)naviR); //Function used to draw the sprite.
AhmedPlaymaker 55:df0825049171 107 switch (st) {
AhmedPlaymaker 55:df0825049171 108 case 1:
AhmedPlaymaker 55:df0825049171 109 Settings::controlSensitivity(lcd, pad);
AhmedPlaymaker 55:df0825049171 110 break;
AhmedPlaymaker 55:df0825049171 111 case 2:
AhmedPlaymaker 55:df0825049171 112 Settings::brigntness(lcd, pad);
AhmedPlaymaker 55:df0825049171 113 break;
AhmedPlaymaker 55:df0825049171 114 case 3:
AhmedPlaymaker 55:df0825049171 115 Settings::contrast(lcd, pad);
AhmedPlaymaker 55:df0825049171 116 break;
AhmedPlaymaker 55:df0825049171 117 case 4:
AhmedPlaymaker 55:df0825049171 118 Settings::showCredits(lcd, pad);
AhmedPlaymaker 55:df0825049171 119 break;
AhmedPlaymaker 55:df0825049171 120 }
AhmedPlaymaker 55:df0825049171 121 lcd.refresh();
AhmedPlaymaker 55:df0825049171 122 }
AhmedPlaymaker 55:df0825049171 123
AhmedPlaymaker 5:e4df87957a5b 124 void Settings::info(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 125 {
AhmedPlaymaker 5:e4df87957a5b 126 lcd.clear();
AhmedPlaymaker 5:e4df87957a5b 127 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 128 lcd.printString("For selecting",0,0);//Function used to promt the user to how to use settings.
AhmedPlaymaker 5:e4df87957a5b 129 lcd.printString("from settings",0,1);
AhmedPlaymaker 5:e4df87957a5b 130 lcd.printString("available, use",0,2);
AhmedPlaymaker 5:e4df87957a5b 131 lcd.printString("Joystick in <>",0,3);
AhmedPlaymaker 5:e4df87957a5b 132 lcd.printString("directions",0,4);
AhmedPlaymaker 5:e4df87957a5b 133 lcd.refresh();
AhmedPlaymaker 5:e4df87957a5b 134 wait(2);
AhmedPlaymaker 5:e4df87957a5b 135 lcd.clear();
AhmedPlaymaker 5:e4df87957a5b 136 lcd.printString("For adjusting",0,0);
AhmedPlaymaker 5:e4df87957a5b 137 lcd.printString("the parameters,",0,1);
AhmedPlaymaker 5:e4df87957a5b 138 lcd.printString("use the pot",0,2);
AhmedPlaymaker 5:e4df87957a5b 139 lcd.printString("by rotating",0,3);
AhmedPlaymaker 5:e4df87957a5b 140 lcd.printString("Press Back",0,4);
AhmedPlaymaker 5:e4df87957a5b 141 lcd.printString("to confirm",0,5);
AhmedPlaymaker 5:e4df87957a5b 142 lcd.refresh();
AhmedPlaymaker 5:e4df87957a5b 143 wait(2);
AhmedPlaymaker 5:e4df87957a5b 144 pad.leds_off();
AhmedPlaymaker 5:e4df87957a5b 145 lcd.clear();
AhmedPlaymaker 5:e4df87957a5b 146 }
AhmedPlaymaker 5:e4df87957a5b 147
AhmedPlaymaker 49:441c32f6603e 148 void Settings::controlSensitivity(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 149 {
AhmedPlaymaker 5:e4df87957a5b 150 lcd.printString("Control Speeds",0,0);
AhmedPlaymaker 49:441c32f6603e 151 cs_sc[0] = pad.read_pot()*5+1;
AhmedPlaymaker 5:e4df87957a5b 152 lcd.drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 5:e4df87957a5b 153 lcd.drawRect(15,22,pad.read_pot()*54,13,FILL_BLACK);
AhmedPlaymaker 5:e4df87957a5b 154 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 155 }
AhmedPlaymaker 5:e4df87957a5b 156
AhmedPlaymaker 5:e4df87957a5b 157 void Settings::brigntness(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 158 {
AhmedPlaymaker 57:845781aea5ec 159 lcd.drawSprite(35,2,15,15,(int *)brightness); //Function used to draw the sprite.
AhmedPlaymaker 5:e4df87957a5b 160 float pot;
AhmedPlaymaker 5:e4df87957a5b 161 pot = pad.read_pot();
AhmedPlaymaker 5:e4df87957a5b 162 lcd.drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 5:e4df87957a5b 163 lcd.drawRect(15,22,pad.read_pot()*54,13,FILL_BLACK);
AhmedPlaymaker 5:e4df87957a5b 164 lcd.setBrightness(pot);
AhmedPlaymaker 5:e4df87957a5b 165 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 166 }
AhmedPlaymaker 5:e4df87957a5b 167
AhmedPlaymaker 5:e4df87957a5b 168 void Settings::contrast(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 169 {
AhmedPlaymaker 57:845781aea5ec 170 lcd.drawSprite(36,3,13,13,(int *)screenContrast); //Function used to draw the sprite.
AhmedPlaymaker 5:e4df87957a5b 171 float pot;
AhmedPlaymaker 43:233f93860d08 172 pot = ((pad.read_pot()+3.8)/8);
AhmedPlaymaker 5:e4df87957a5b 173 lcd.drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 5:e4df87957a5b 174 lcd.drawRect(15,22,pad.read_pot()*54,13,FILL_BLACK);
AhmedPlaymaker 5:e4df87957a5b 175 lcd.setContrast(pot);
AhmedPlaymaker 5:e4df87957a5b 176 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 177 }
AhmedPlaymaker 5:e4df87957a5b 178
AhmedPlaymaker 49:441c32f6603e 179 void Settings::showCredits(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 180 {
AhmedPlaymaker 5:e4df87957a5b 181 lcd.printString("Show Credits?",5,0);
AhmedPlaymaker 5:e4df87957a5b 182 float pot;
AhmedPlaymaker 5:e4df87957a5b 183 pot = pad.read_pot();
AhmedPlaymaker 5:e4df87957a5b 184
AhmedPlaymaker 6:3ffab44ed49c 185 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 186 lcd.printString("NO",36,3);
AhmedPlaymaker 49:441c32f6603e 187 cs_sc[1] = 0;
AhmedPlaymaker 5:e4df87957a5b 188 }
AhmedPlaymaker 5:e4df87957a5b 189
AhmedPlaymaker 6:3ffab44ed49c 190 else {
AhmedPlaymaker 5:e4df87957a5b 191 lcd.printString("YES",33,3);
AhmedPlaymaker 49:441c32f6603e 192 cs_sc[1] = 1;
AhmedPlaymaker 5:e4df87957a5b 193 }
AhmedPlaymaker 6:3ffab44ed49c 194
AhmedPlaymaker 5:e4df87957a5b 195 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 196 }