#include #include #define LED_PIN 5 #define NUM_LEDS 9 #define LED_TYPE WS2812B #define COLOR_ORDER GRB #define BRIGHTNESS 250 CRGB leds[NUM_LEDS]; int player=1; int n,i,e=0,j=0; char a[9]={'1','2','3','4','5','6','7','8','9'}; char key; int w=0; const byte ROWS = 3; //four rows const byte COLS = 3; //four columns //define the cymbols on the buttons of the keypads char hexaKeys[ROWS][COLS] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'} }; byte rowPins[ROWS] = {A0,A1,A2}; //connect to the row pinouts of the keypad byte colPins[COLS] = {A3,A4,A5}; //connect to the column pinouts of the keypad Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600); LEDS.addLeds(leds, NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); for(int m=0;m<3;m++) { leds[0].setRGB(0, 204, 255); leds[1].setRGB(0, 204, 255); leds[2].setRGB(0, 204, 255); leds[3].setRGB(0, 204, 255); leds[4].setRGB(0, 204, 255); leds[5].setRGB(0, 204, 255); leds[6].setRGB(0, 204, 255); leds[7].setRGB(0, 204, 255); leds[8].setRGB(0, 204, 255); FastLED.show(); delay(500); leds[0].setRGB(255, 0, 225); leds[1].setRGB(255, 0, 225); leds[2].setRGB(255, 0, 225); leds[3].setRGB(255, 0, 225); leds[4].setRGB(255, 0, 225); leds[5].setRGB(255, 0, 225); leds[6].setRGB(255, 0, 225); leds[7].setRGB(255, 0, 225); leds[8].setRGB(255, 0, 225); FastLED.show(); delay(500); } FastLED.clear(); FastLED.show(); } void loop() { key = customKeypad.getKey(); if (key && player==1) { Serial.println("\nP1"); Serial.println(key); n=number(key); Serial.println(n); leds[n].setRGB(0, 204, 255); FastLED.show(); a[n]='X'; Serial.println(a[n]); w=check(a,n); if(w==1) { Serial.println("Player 1 Wins!"); while(1) { leds[0].setRGB(0, 204, 255); leds[1].setRGB(0, 204, 255); leds[2].setRGB(0, 204, 255); leds[3].setRGB(0, 204, 255); leds[4].setRGB(0, 204, 255); leds[5].setRGB(0, 204, 255); leds[6].setRGB(0, 204, 255); leds[7].setRGB(0, 204, 255); leds[8].setRGB(0, 204, 255); FastLED.show(); delay(500); FastLED.clear(); FastLED.show(); delay(500); } } e++; player++; delay(1000); } delay(20); key = customKeypad.getKey(); if (key && player==2) { Serial.println("\nP2"); Serial.println(key); n=number(key); Serial.println(n); leds[n].setRGB(255, 0, 225); FastLED.show(); a[n]='0'; Serial.println(a[n]); w=check(a,n); if(w==2) { Serial.println("Player 2 Wins!"); while(1) { leds[0].setRGB(255, 0, 225); leds[1].setRGB(255, 0, 225); leds[2].setRGB(255, 0, 225); leds[3].setRGB(255, 0, 225); leds[4].setRGB(255, 0, 225); leds[5].setRGB(255, 0, 225); leds[6].setRGB(255, 0, 225); leds[7].setRGB(255, 0, 225); leds[8].setRGB(255, 0, 225); FastLED.show(); delay(500); FastLED.clear(); FastLED.show(); delay(500); } } player--; delay(1000); } if(e==5) { Serial.println("Game Draw"); while(1) { leds[0].setRGB(255, 0, 0); leds[1].setRGB(255, 0, 0); leds[2].setRGB(255, 0, 0); leds[3].setRGB(255, 0, 0); leds[4].setRGB(255, 0, 0); leds[5].setRGB(255, 0, 0); leds[6].setRGB(255, 0, 0); leds[7].setRGB(255, 0, 0); leds[8].setRGB(255, 0, 0); FastLED.show(); delay(1000); FastLED.clear(); FastLED.show(); delay(500); } } delay(20); } int number(char keyn) { if(keyn == '1') return 0; if(keyn == '2') return 1; if(keyn == '3') return 2; if(key == '4') return 3; if(keyn == '5') return 4; if(keyn == '6') return 5; if(keyn == '7') return 6; if(keyn == '8') return 7; if(keyn == '9') return 8; } int check(char a[16],int n) { if(a[0]=='X' && a[1]=='X' && a[2]=='X') return 1; if(a[0]=='0' && a[1]=='0' && a[2]=='0') return 2; if(a[0]=='X' && a[3]=='X' && a[6]=='X') return 1; if(a[0]=='0' && a[3]=='0' && a[6]=='0') return 2; if(a[0]=='X' && a[4]=='X' && a[8]=='X') return 1; if(a[0]=='0' && a[4]=='0' && a[8]=='0') return 2; if(a[3]=='X' && a[4]=='X' && a[5]=='X') return 1; if(a[3]=='0' && a[4]=='0' && a[5]=='0') return 2; if(a[6]=='X' && a[7]=='X' && a[8]=='X') return 1; if(a[6]=='0' && a[7]=='0' && a[8]=='0') return 2; if(a[1]=='X' && a[4]=='X' && a[7]=='X') return 1; if(a[1]=='0' && a[4]=='0' && a[7]=='0') return 2; if(a[2]=='X' && a[5]=='X' && a[8]=='X') return 1; if(a[2]=='0' && a[5]=='0' && a[8]=='0') return 2; if(a[2]=='X' && a[4]=='X' && a[6]=='X') return 1; if(a[2]=='0' && a[4]=='0' && a[6]=='0') return 2; }