Add local solo mode
This commit is contained in:
parent
15f5d46b55
commit
08de0a245c
@ -10,13 +10,13 @@
|
||||
#include <Adafruit_NeoPixel.h>
|
||||
|
||||
// --- Capteur capacitif ---
|
||||
// Attention : Une SEULE instance globale !
|
||||
Adafruit_MPR121 cap = Adafruit_MPR121();
|
||||
uint16_t lasttouched = 0;
|
||||
uint16_t currtouched = 0;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
randomSeed(analogRead(0));
|
||||
|
||||
if (!cap.begin(0x5B)) {
|
||||
Serial.println("MPR121 not found, check wiring?");
|
||||
@ -40,8 +40,12 @@ void loop() {
|
||||
loopWeb();
|
||||
}
|
||||
} else {
|
||||
// Passe cap, lasttouched, currtouched par référence !
|
||||
localMode(cap, lasttouched, currtouched);
|
||||
if(solo) {
|
||||
localModeSolo(cap, lasttouched, currtouched);
|
||||
}
|
||||
else {
|
||||
localModeDuo(cap, lasttouched, currtouched);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
61
localMode.h
61
localMode.h
@ -49,8 +49,10 @@ bool joueur1 = true;
|
||||
Coord getCo(int key);
|
||||
bool victoire(int grille[3][3], int joueur);
|
||||
bool allInit();
|
||||
void afficheGrille();
|
||||
|
||||
void localMode(Adafruit_MPR121& cap, uint16_t& lasttouched, uint16_t& currtouched);
|
||||
void localModeDuo(Adafruit_MPR121& cap, uint16_t& lasttouched, uint16_t& currtouched);
|
||||
void localModeSolo(Adafruit_MPR121& cap, uint16_t& lasttouched, uint16_t& currtouched);
|
||||
|
||||
#endif // LOCALMODE_H
|
||||
|
||||
@ -97,7 +99,17 @@ bool allInit() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void localMode(Adafruit_MPR121& cap, uint16_t& lasttouched, uint16_t& currtouched) {
|
||||
void afficheGrille() {
|
||||
Serial.println("==============");
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 3; j++) {
|
||||
Serial.print(grille[i][j]);
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
}
|
||||
|
||||
void localModeDuo(Adafruit_MPR121& cap, uint16_t& lasttouched, uint16_t& currtouched) {
|
||||
currtouched = cap.touched();
|
||||
|
||||
for (int i = 0; i < numKeys; i++) {
|
||||
@ -114,23 +126,60 @@ void localMode(Adafruit_MPR121& cap, uint16_t& lasttouched, uint16_t& currtouche
|
||||
if(grille[c.y][c.x] == 0) {
|
||||
if(joueur1) {
|
||||
grille[c.y][c.x] = 1;
|
||||
afficheGrille();
|
||||
if(victoire(grille, 1)) {
|
||||
Serial.println("Joueur 1 a gagne");
|
||||
}
|
||||
} else {
|
||||
grille[c.y][c.x] = 2;
|
||||
afficheGrille();
|
||||
if(victoire(grille, 2)) {
|
||||
Serial.println("Joueur 2 a gagne");
|
||||
}
|
||||
}
|
||||
joueur1 = !joueur1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
lasttouched = currtouched;
|
||||
}
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 3; j++) {
|
||||
Serial.print(grille[i][j]);
|
||||
void localModeSolo(Adafruit_MPR121& cap, uint16_t& lasttouched, uint16_t& currtouched) {
|
||||
|
||||
//Serial.println("Mode Solo Local");
|
||||
|
||||
currtouched = cap.touched();
|
||||
|
||||
for (int i = 0; i < numKeys; i++) {
|
||||
uint8_t t = keys[i].touchID;
|
||||
keys[i].led.setPixelColor(0, 255); // Bleu
|
||||
keys[i].led.show();
|
||||
|
||||
if ((currtouched & _BV(t)) && !(lasttouched & _BV(t))) {
|
||||
Serial.print("Touch "); Serial.print(t); Serial.println(" pressed");
|
||||
btns[i] = true;
|
||||
|
||||
if(allInit()) {
|
||||
Coord c = getCo(i);
|
||||
if(grille[c.y][c.x] == 0) {
|
||||
grille[c.y][c.x] = 1;
|
||||
afficheGrille();
|
||||
if(victoire(grille, 1)) {
|
||||
Serial.println("Joueur 1 a gagne");
|
||||
}
|
||||
|
||||
int x, y;
|
||||
do {
|
||||
x = random(0, 3);
|
||||
y = random(0, 3);
|
||||
} while(grille[y][x] != 0);
|
||||
|
||||
grille[y][x] = 2;
|
||||
afficheGrille();
|
||||
if(victoire(grille, 2)) {
|
||||
Serial.println("Joueur 2 a gagne");
|
||||
}
|
||||
Serial.println();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user