Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Committer:
AhmedPlaymaker
Date:
Thu Apr 25 18:12:17 2019 +0000
Revision:
43:233f93860d08
Parent:
Settings/Settings.cpp@31:6566026b4c6a
Child:
49:441c32f6603e
fixed a problem relating to snake not detecting blocks when it has just increased in length.

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 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 30:461231877c89 45 float * Settings::Implement(N5110 &lcd, Gamepad &pad, int st, float cs)
AhmedPlaymaker 30:461231877c89 46 {
AhmedPlaymaker 30:461231877c89 47 Settings::info(lcd, pad);
AhmedPlaymaker 31:6566026b4c6a 48 pad.init();
AhmedPlaymaker 30:461231877c89 49 while (pad.check_event(Gamepad::BACK_PRESSED) == false) { //if button pressed.
AhmedPlaymaker 30:461231877c89 50 Direction d = pad.get_direction();
AhmedPlaymaker 30:461231877c89 51 wait(1/cs);
AhmedPlaymaker 30:461231877c89 52 lcd.clear();
AhmedPlaymaker 30:461231877c89 53
AhmedPlaymaker 30:461231877c89 54 if((d==E)&&(st==5)) {
AhmedPlaymaker 30:461231877c89 55 st=1;
AhmedPlaymaker 30:461231877c89 56 }
AhmedPlaymaker 30:461231877c89 57 else if((d==W)&&(st==1)) {
AhmedPlaymaker 30:461231877c89 58 st=5;
AhmedPlaymaker 30:461231877c89 59 }
AhmedPlaymaker 30:461231877c89 60 else if((d==E)&&(1<=st<=4)) {
AhmedPlaymaker 30:461231877c89 61 st=st+1;
AhmedPlaymaker 30:461231877c89 62 }
AhmedPlaymaker 30:461231877c89 63 else if((d==W)&&(2<=st<=5)) {
AhmedPlaymaker 30:461231877c89 64 st=st-1;
AhmedPlaymaker 30:461231877c89 65 }
AhmedPlaymaker 30:461231877c89 66 lcd.drawSprite(5,22,13,8,(int *)naviL); //Function used to draw the sprite.
AhmedPlaymaker 30:461231877c89 67 lcd.drawSprite(71,22,13,8,(int *)naviR); //Function used to draw the sprite.
AhmedPlaymaker 30:461231877c89 68 if(st==1) {
AhmedPlaymaker 30:461231877c89 69 cs = Settings::controlSensitivity(lcd, pad);
AhmedPlaymaker 30:461231877c89 70 }
AhmedPlaymaker 30:461231877c89 71 if(st==2) {
AhmedPlaymaker 30:461231877c89 72 Settings::brigntness(lcd, pad);
AhmedPlaymaker 30:461231877c89 73 }
AhmedPlaymaker 30:461231877c89 74 if(st==3) {
AhmedPlaymaker 30:461231877c89 75 Settings::contrast(lcd, pad);
AhmedPlaymaker 30:461231877c89 76 }
AhmedPlaymaker 30:461231877c89 77 if(st==4) {
AhmedPlaymaker 30:461231877c89 78 Settings::volume(lcd, pad);
AhmedPlaymaker 30:461231877c89 79 }
AhmedPlaymaker 30:461231877c89 80 if(st==5) {
AhmedPlaymaker 30:461231877c89 81 cs_sc[1] = Settings::showCredits(lcd, pad);
AhmedPlaymaker 30:461231877c89 82 }
AhmedPlaymaker 30:461231877c89 83 lcd.refresh();
AhmedPlaymaker 30:461231877c89 84 }
AhmedPlaymaker 30:461231877c89 85 cs_sc[0] = cs;
AhmedPlaymaker 30:461231877c89 86 return cs_sc;
AhmedPlaymaker 30:461231877c89 87 }
AhmedPlaymaker 30:461231877c89 88
AhmedPlaymaker 5:e4df87957a5b 89 void Settings::info(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 90 {
AhmedPlaymaker 5:e4df87957a5b 91 lcd.clear();
AhmedPlaymaker 5:e4df87957a5b 92 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 93 lcd.printString("For selecting",0,0);//Function used to promt the user to how to use settings.
AhmedPlaymaker 5:e4df87957a5b 94 lcd.printString("from settings",0,1);
AhmedPlaymaker 5:e4df87957a5b 95 lcd.printString("available, use",0,2);
AhmedPlaymaker 5:e4df87957a5b 96 lcd.printString("Joystick in <>",0,3);
AhmedPlaymaker 5:e4df87957a5b 97 lcd.printString("directions",0,4);
AhmedPlaymaker 5:e4df87957a5b 98 lcd.refresh();
AhmedPlaymaker 5:e4df87957a5b 99 wait(2);
AhmedPlaymaker 5:e4df87957a5b 100 lcd.clear();
AhmedPlaymaker 5:e4df87957a5b 101 lcd.printString("For adjusting",0,0);
AhmedPlaymaker 5:e4df87957a5b 102 lcd.printString("the parameters,",0,1);
AhmedPlaymaker 5:e4df87957a5b 103 lcd.printString("use the pot",0,2);
AhmedPlaymaker 5:e4df87957a5b 104 lcd.printString("by rotating",0,3);
AhmedPlaymaker 5:e4df87957a5b 105 lcd.printString("Press Back",0,4);
AhmedPlaymaker 5:e4df87957a5b 106 lcd.printString("to confirm",0,5);
AhmedPlaymaker 5:e4df87957a5b 107 lcd.refresh();
AhmedPlaymaker 5:e4df87957a5b 108 wait(2);
AhmedPlaymaker 5:e4df87957a5b 109 pad.leds_off();
AhmedPlaymaker 5:e4df87957a5b 110 lcd.clear();
AhmedPlaymaker 5:e4df87957a5b 111 }
AhmedPlaymaker 5:e4df87957a5b 112
AhmedPlaymaker 5:e4df87957a5b 113 float Settings::controlSensitivity(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 114 {
AhmedPlaymaker 5:e4df87957a5b 115 lcd.printString("Control Speeds",0,0);
AhmedPlaymaker 5:e4df87957a5b 116 float cs;
AhmedPlaymaker 6:3ffab44ed49c 117 cs = pad.read_pot()*5+1;
AhmedPlaymaker 5:e4df87957a5b 118 lcd.drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 5:e4df87957a5b 119 lcd.drawRect(15,22,pad.read_pot()*54,13,FILL_BLACK);
AhmedPlaymaker 5:e4df87957a5b 120 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 121 return cs;
AhmedPlaymaker 5:e4df87957a5b 122 }
AhmedPlaymaker 5:e4df87957a5b 123
AhmedPlaymaker 5:e4df87957a5b 124 void Settings::brigntness(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 125 {
AhmedPlaymaker 5:e4df87957a5b 126 lcd.printString("Brigntness",9,0);
AhmedPlaymaker 5:e4df87957a5b 127 float pot;
AhmedPlaymaker 5:e4df87957a5b 128 pot = pad.read_pot();
AhmedPlaymaker 5:e4df87957a5b 129 lcd.drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 5:e4df87957a5b 130 lcd.drawRect(15,22,pad.read_pot()*54,13,FILL_BLACK);
AhmedPlaymaker 5:e4df87957a5b 131 lcd.setBrightness(pot);
AhmedPlaymaker 5:e4df87957a5b 132 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 133 }
AhmedPlaymaker 5:e4df87957a5b 134
AhmedPlaymaker 5:e4df87957a5b 135 void Settings::contrast(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 136 {
AhmedPlaymaker 5:e4df87957a5b 137 lcd.printString("Contrast",16,0);
AhmedPlaymaker 5:e4df87957a5b 138 float pot;
AhmedPlaymaker 43:233f93860d08 139 pot = ((pad.read_pot()+3.8)/8);
AhmedPlaymaker 5:e4df87957a5b 140 lcd.drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 5:e4df87957a5b 141 lcd.drawRect(15,22,pad.read_pot()*54,13,FILL_BLACK);
AhmedPlaymaker 5:e4df87957a5b 142 lcd.setContrast(pot);
AhmedPlaymaker 5:e4df87957a5b 143 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 144 }
AhmedPlaymaker 5:e4df87957a5b 145
AhmedPlaymaker 5:e4df87957a5b 146 void Settings::volume(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 147 {
AhmedPlaymaker 5:e4df87957a5b 148 lcd.printString("Volume",20,0);
AhmedPlaymaker 5:e4df87957a5b 149 float pot;
AhmedPlaymaker 5:e4df87957a5b 150 pot = pad.read_pot();
AhmedPlaymaker 5:e4df87957a5b 151 lcd.drawRect(15,22,54,13,FILL_TRANSPARENT);
AhmedPlaymaker 5:e4df87957a5b 152 lcd.drawRect(15,22,pot*54,13,FILL_BLACK);
AhmedPlaymaker 5:e4df87957a5b 153 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 154 }
AhmedPlaymaker 5:e4df87957a5b 155
AhmedPlaymaker 5:e4df87957a5b 156 int Settings::showCredits(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 5:e4df87957a5b 157 {
AhmedPlaymaker 5:e4df87957a5b 158 lcd.printString("Show Credits?",5,0);
AhmedPlaymaker 5:e4df87957a5b 159 float pot;
AhmedPlaymaker 5:e4df87957a5b 160 int show = 1;
AhmedPlaymaker 5:e4df87957a5b 161 pot = pad.read_pot();
AhmedPlaymaker 5:e4df87957a5b 162
AhmedPlaymaker 6:3ffab44ed49c 163 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 164 lcd.printString("NO",36,3);
AhmedPlaymaker 5:e4df87957a5b 165 show = 0;
AhmedPlaymaker 5:e4df87957a5b 166 }
AhmedPlaymaker 5:e4df87957a5b 167
AhmedPlaymaker 6:3ffab44ed49c 168 else {
AhmedPlaymaker 5:e4df87957a5b 169 lcd.printString("YES",33,3);
AhmedPlaymaker 5:e4df87957a5b 170 show = 1;
AhmedPlaymaker 5:e4df87957a5b 171 }
AhmedPlaymaker 6:3ffab44ed49c 172
AhmedPlaymaker 5:e4df87957a5b 173 pad.leds_on();
AhmedPlaymaker 5:e4df87957a5b 174 return show;
AhmedPlaymaker 5:e4df87957a5b 175 }