addedMastermind
This commit is contained in:
parent
b76067d67a
commit
f9272cea90
246
Mastermind/Mastermind.ino
Normal file
246
Mastermind/Mastermind.ino
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
#define RIP (inp > 570 && inp < 580)
|
||||||
|
#define YIP (inp > 780 && inp < 790)
|
||||||
|
#define GIP (inp > 840 && inp < 850)
|
||||||
|
#define BIP (inp > 928 && inp < 938)
|
||||||
|
static const int CCCP = 11;
|
||||||
|
static const int CCIP = 12;
|
||||||
|
static const int ICIP = 13;
|
||||||
|
static const int BI = 4;
|
||||||
|
static const int GI = 5;
|
||||||
|
static const int YI = 6;
|
||||||
|
static const int RI = 7;
|
||||||
|
int v1 = 0;
|
||||||
|
int v2 = 0;
|
||||||
|
int v3 = 0;
|
||||||
|
int v4 = 0;
|
||||||
|
int diff = 2;
|
||||||
|
int turnsRemaining = 0;
|
||||||
|
int master = 0;
|
||||||
|
int incorrect = 0;
|
||||||
|
int correct = 0;
|
||||||
|
int partial = 0;
|
||||||
|
bool win = false;
|
||||||
|
void setup() {
|
||||||
|
pinMode(CCCP, OUTPUT);
|
||||||
|
pinMode(CCIP, OUTPUT);
|
||||||
|
pinMode(ICIP, OUTPUT);
|
||||||
|
pinMode(BI, OUTPUT);
|
||||||
|
pinMode(GI, OUTPUT);
|
||||||
|
pinMode(YI, OUTPUT);
|
||||||
|
pinMode(RI, OUTPUT);
|
||||||
|
pinMode (A1, INPUT_PULLUP);
|
||||||
|
Serial.begin(9600);
|
||||||
|
randomSeed(analogRead(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// put your main code here, to run repeatedly:
|
||||||
|
int inp = analogRead(A1);
|
||||||
|
generateRandomValues();
|
||||||
|
Serial.println(master);
|
||||||
|
correct = 0;
|
||||||
|
for (int d = 0; d<diff; d++){
|
||||||
|
correct = 0;
|
||||||
|
incorrect = 0;
|
||||||
|
partial = 0;
|
||||||
|
inputValues();
|
||||||
|
checkValues();
|
||||||
|
showFeedback();
|
||||||
|
if(correct == 4){
|
||||||
|
d = diff;
|
||||||
|
win = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (win){
|
||||||
|
for (int w = 0; w< 10; w++){
|
||||||
|
digitalWrite(GI, HIGH);
|
||||||
|
digitalWrite(CCCP, LOW);
|
||||||
|
delay (500);
|
||||||
|
digitalWrite(GI, LOW);
|
||||||
|
digitalWrite(CCCP, HIGH);
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
digitalWrite(CCCP, LOW);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
for (int l = 0; l< 10; l++){
|
||||||
|
digitalWrite(RI, HIGH);
|
||||||
|
digitalWrite(ICIP, LOW);
|
||||||
|
delay (500);
|
||||||
|
digitalWrite(RI, LOW);
|
||||||
|
digitalWrite(ICIP, HIGH);
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
digitalWrite(ICIP, LOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SETS THE GAME DIFFICULTY */
|
||||||
|
void difficultyState() {
|
||||||
|
diff = readPins();
|
||||||
|
turnsRemaining = (diff * 4) + 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int readPins() {
|
||||||
|
int inp = analogRead(A1);
|
||||||
|
if (RIP) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if (YIP) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else if (GIP) {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
else if (BIP) {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void generateRandomValues() {
|
||||||
|
master = random(0, 256);
|
||||||
|
master = 228;
|
||||||
|
}
|
||||||
|
void checkValues() {
|
||||||
|
bool v1p = false, v2p = false, v3p = false , v4p = false;
|
||||||
|
int masterProc[] {0, 0, 0, 0};
|
||||||
|
for (int i = 0; i < 8; i += 2) {
|
||||||
|
bool succrun = false;
|
||||||
|
byte b1 = bitRead(master, i);
|
||||||
|
byte b2 = bitRead(master, i + 1);
|
||||||
|
if (bitRead(b1, 0) == bitRead(v1, 0 ) && bitRead(b2, 0) == bitRead(v1, 1)) {
|
||||||
|
if (i == 0) {
|
||||||
|
correct ++;
|
||||||
|
Serial.println("First Correct");
|
||||||
|
v1p = true;
|
||||||
|
succrun = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bitRead(b1, 0) == bitRead(v2, 0) && bitRead(b2, 0) == bitRead(v2, 1)) {
|
||||||
|
if (i == 2) {
|
||||||
|
correct ++;
|
||||||
|
Serial.println("2nd Correct");
|
||||||
|
v2p = true;
|
||||||
|
succrun = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bitRead(b1, 0) == bitRead(v3, 0 ) && bitRead(b2, 0) == bitRead(v3, 1)) {
|
||||||
|
if (i == 4) {
|
||||||
|
correct ++;
|
||||||
|
Serial.println("3rd Correct");
|
||||||
|
v3p = true;
|
||||||
|
succrun = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bitRead(b1, 0) == bitRead(v4, 0) && bitRead(b2, 0) == bitRead(v4, 1)) {
|
||||||
|
if (i == 6) {
|
||||||
|
correct ++;
|
||||||
|
Serial.println("4 Correct");
|
||||||
|
v4p = true;
|
||||||
|
succrun = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (succrun) {
|
||||||
|
masterProc[i / 2] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int j = 0; j < 4; j++) {
|
||||||
|
if (masterProc[j] == 0) {
|
||||||
|
byte b1 = bitRead(master, j * 2);
|
||||||
|
byte b2 = bitRead(master, (j * 2) + 1);
|
||||||
|
bool runFail = false;
|
||||||
|
if (!v1p && runFail == false) {
|
||||||
|
if (bitRead(b1, 0) == bitRead(v1, 0 ) && bitRead(b2, 0) == bitRead(v1, 1)) {
|
||||||
|
partial++;
|
||||||
|
v1p = true;
|
||||||
|
masterProc[j] = 1;
|
||||||
|
runFail = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!v2p && runFail == false) {
|
||||||
|
if (bitRead(b1, 0) == bitRead(v2, 0 ) && bitRead(b2, 0) == bitRead(v2, 1)) {
|
||||||
|
v2p = true;
|
||||||
|
masterProc[j] = 1;
|
||||||
|
partial++;
|
||||||
|
runFail = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!v3p && runFail == false) {
|
||||||
|
if (bitRead(b1, 0) == bitRead(v3, 0 ) && bitRead(b2, 0) == bitRead(v3, 1)) {
|
||||||
|
v3p = true;
|
||||||
|
partial++;
|
||||||
|
masterProc[j] = 1;
|
||||||
|
runFail = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!v4p && runFail == false) {
|
||||||
|
if (bitRead(b1, 0) == bitRead(v4, 0 ) && bitRead(b2, 0) == bitRead(v4, 1)) {
|
||||||
|
v4p = true;
|
||||||
|
masterProc[j] = 1;
|
||||||
|
partial++;
|
||||||
|
runFail = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
if (masterProc[i] == 0) {
|
||||||
|
incorrect++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void showFeedback() {
|
||||||
|
for (int i = 0; i < correct; i++) {
|
||||||
|
digitalWrite(CCCP, HIGH);
|
||||||
|
delay (500);
|
||||||
|
digitalWrite(CCCP, LOW);
|
||||||
|
delay (500);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < partial; i++) {
|
||||||
|
digitalWrite(CCIP, HIGH);
|
||||||
|
delay (500);
|
||||||
|
digitalWrite(CCIP, LOW);
|
||||||
|
delay (500);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < incorrect; i++) {
|
||||||
|
digitalWrite(ICIP, HIGH);
|
||||||
|
delay (500);
|
||||||
|
digitalWrite(ICIP, LOW);
|
||||||
|
delay (500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void inputValues() {
|
||||||
|
|
||||||
|
byte input = 0;
|
||||||
|
digitalWrite(RI, HIGH);
|
||||||
|
while (readPins() == 5) {
|
||||||
|
}
|
||||||
|
v1 = readPins();
|
||||||
|
digitalWrite(RI, LOW);
|
||||||
|
delay(250);
|
||||||
|
digitalWrite(YI, HIGH);
|
||||||
|
while (readPins() == 5) {
|
||||||
|
}
|
||||||
|
v2 = readPins();
|
||||||
|
digitalWrite(YI, LOW);
|
||||||
|
delay(250);
|
||||||
|
digitalWrite(GI, HIGH);
|
||||||
|
while (readPins() == 5) {
|
||||||
|
}
|
||||||
|
v3 = readPins();
|
||||||
|
digitalWrite(GI, LOW);
|
||||||
|
delay(250);
|
||||||
|
digitalWrite(BI, HIGH);
|
||||||
|
while (readPins() == 5) {
|
||||||
|
}
|
||||||
|
v4 = readPins();
|
||||||
|
digitalWrite(BI, LOW);
|
||||||
|
delay(250);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user