BARUCH2K
Published © LGPL

TIC TAC DUINO

arduino tic-tac-toe. mini game

BeginnerShowcase (no instructions)4,737
TIC TAC DUINO

Things used in this project

Story

Read more

Code

TICTACDUINO

Arduino
//==============================================
//======= CODIGO X MAURICIO BARUCH CHAVEZ ======
//==============================================
//============ INCLUDES  =======================
#include "TFTLCD.h"
#include "TouchScreen.h"
//==============================================
//======= configuracion ========================
//==============================================
#define YP A2
#define XM A1
#define YM 6
#define XP 7
//==============================================
#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940
//==============================================
#define MINPRESSURE 10
#define MAXPRESSURE 1000
//============ COLORES =========================
#define BLACK           0x0000
#define BLUE            0x001F
#define RED             0xF800
#define GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0
#define WHITE           0xFFFF
#define MARINO          0x000F      /*   0,   0, 128 */
#define VERDE_O         0x03E0      /*   0, 128,   0 */
#define AZUL_O          0x03EF      /*   0, 128, 128 */
#define Maroon          0x7800      /* 128,   0,   0 */
#define MORADO          0x780F      /* 128,   0, 128 */
#define Olive           0x7BE0      /* 128, 128,   0 */
#define GRISCLARO       0xC618      /* 192, 192, 192 */
#define GRIS            0x7BEF      /* 128, 128, 128 */
#define NARANJA         0xFD20      /* 255, 165,   0 */
#define VERDE_AM        0xAFE5      /* 173, 255,  47 */
#define ROSA            0xF81F
//============ OBJETOS   =======================
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 600);
//==============================================
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

//==============================================

//=======================================
int currentcolor;
int x, y;
int turno = 0;
int RESET = 0;
int game  = 0;
int mensaje = 0;
int mensaje2 = 0;
int tablero = 0;
int juego   = 0;

//=======================================
int L11 = 0, L12 = 0, L13 = 0;
int L21 = 0, L22 = 0, L23 = 0;
int L31 = 0, L32 = 0, L33 = 0;
//=======================================
#define LIN1 55
#define LIN2 120
#define LIN3 185
#define UNO 130
#define DOS 196
#define TRES 265
#define DIAM 24
#define BOTON 66
#define TEXTCOLOR WHITE
#define colorP1  GREEN
#define colorP2  VERDE_O
//==============================================
//============ SUB_RUTINAS VOID ================
//==============================================
void softReset(){
//asm volatile ("  jmp 100");
turno = 0;
RESET = 0;
game  = 0;
mensaje = 0;
mensaje2 = 0;
tablero = 0;
juego   = 0;
//=======================================
L11 = 0, L12 = 0, L13 = 0;
L21 = 0, L22 = 0, L23 = 0;
L31 = 0, L32 = 0, L33 = 0;

   tft.fillRoundRect(86,10,230,228,14,BLACK);
   tft.drawRoundRect(86,10,224,218,14,VERDE_O); 
     tft.drawString(95,40,"<- 2 PLAYER",WHITE,2);
  tft.drawString(95,110,"<- 1 PLAYER",WHITE,2);
RESET=0;

 loop();
}
//== 1 =========================================
void turno2() 
{
 if (juego==2){
    if (turno == 1){delay(10);turno = 0;
  
  tft.drawString(25,180,"TURNO",VERDE_O,1);
  tft.drawString(20,200,"AZUL",VERDE_O,1);
  delay(300);
  tft.drawString(25,180,"TURNO",WHITE,1);
  tft.drawString(20,200,"ARDUINO",WHITE,1);}
 
  else if (turno == 0){delay(10); turno = 1;
  tft.drawString(25,180,"TURNO",VERDE_O,1);
  tft.drawString(20,200,"ARDUINO",VERDE_O,1);
  delay(300);
  tft.drawString(25,180,"TURNO",WHITE,1);
  tft.drawString(20,200,"AZUL",WHITE,1);}
  
  }
if (juego==1){
  
  if (turno == 0){delay(10);turno = 1;
  
  tft.drawString(15,180,"TURNO",VERDE_O,1);
  tft.drawString(15,200,"AZUL",VERDE_O,1);
  delay(300);
  tft.drawString(15,180,"TURNO",WHITE,1);
  tft.drawString(15,200,"ROJO",WHITE,1);}
 
  else if (turno == 1){delay(10); turno = 0;
  tft.drawString(15,180,"TURNO",VERDE_O,1);
  tft.drawString(15,200,"ROJO",VERDE_O,1);
  delay(300);
  tft.drawString(15,180,"TURNO",WHITE,1);
  tft.drawString(15,200,"AZUL",WHITE,1);}
}
}
//== 2 =========================================
void ganaRojo () 
{
delay(4000);
tft.drawHorizontalLine(98,88,200,BLACK);
tft.drawHorizontalLine(98,154,200,BLACK);
tft.drawVerticalLine(164,18,200,BLACK);
tft.drawVerticalLine(230,18,200,BLACK);
tft.fillRoundRect(86,10,224,218,14,BLACK);
tft.drawRoundRect(86,10,224,218,14,VERDE_O);  
tft.drawString(120,50,"  GANA",WHITE,3);
tft.drawString(120,100,"ARDUINO",WHITE,3);
L11 = 1; 
L12 = 1; 
L13 = 1;
L21 = 1; 
L22 = 1; 
L23 = 1;
L31 = 1; 
L32 = 1; 
L33 = 1;
delay(3000);
RESET=1;
softReset();
}
//== 3 =========================================
void ganaVerde () { 
delay(4000);
tft.drawHorizontalLine(98,88,200,BLACK);
tft.drawHorizontalLine(98,154,200,BLACK);
tft.drawVerticalLine(164,18,200,BLACK);
tft.drawVerticalLine(230,18,200,BLACK);
tft.fillRoundRect(86,10,224,218,14,BLACK);
tft.drawRoundRect(86,10,224,218,14,VERDE_O);  
tft.drawString(120,50,"  GANA",WHITE,3);
tft.drawString(120,100,"PLAYER 2",WHITE,3);
L11 = 1; 
L12 = 1; 
L13 = 1;
L21 = 1; 
L22 = 1; 
L23 = 1;
L31 = 1; 
L32 = 1; 
L33 = 1;
delay(3000);
RESET=1;
softReset();
}
//== 3 =========================================
//== 4 =========================================
//=========RUTINA DIBUJA ARDUINO===============

void ARDU11(){ tft.fillCircle(UNO,LIN1,DIAM,VERDE_O); L11=4; turno2();
tft.drawString(UNO-17,LIN1-4,"- +",WHITE,2);
tft.drawCircle(UNO-11,LIN1+2,11,WHITE);
tft.drawCircle(UNO-11,LIN1+2,10,WHITE);
tft.drawCircle(UNO+11,LIN1+2,11,WHITE);
tft.drawCircle(UNO+11,LIN1+2,10,WHITE); 

}
void ARDU12(){ tft.fillCircle(DOS,LIN1,DIAM,VERDE_O); L12=4; turno2();
tft.drawString(DOS-17,LIN1-4,"- +",WHITE,2);
tft.drawCircle(DOS-11,LIN1+2,11,WHITE);
tft.drawCircle(DOS-11,LIN1+2,10,WHITE);
tft.drawCircle(DOS+11,LIN1+2,11,WHITE);
tft.drawCircle(DOS+11,LIN1+2,10,WHITE); 

}

void ARDU13(){ tft.fillCircle(TRES,LIN1,DIAM,VERDE_O); L13=4; turno2();
tft.drawString(TRES-17,LIN1-4,"- +",WHITE,2);
tft.drawCircle(TRES-11,LIN1+2,11,WHITE);
tft.drawCircle(TRES-11,LIN1+2,10,WHITE);
tft.drawCircle(TRES+11,LIN1+2,11,WHITE);
tft.drawCircle(TRES+11,LIN1+2,10,WHITE); 
}

void ARDU21(){ tft.fillCircle(UNO,LIN2,DIAM,VERDE_O); L21=4; turno2();
tft.drawString(UNO-17,LIN2-4,"- +",WHITE,2);
tft.drawCircle(UNO-11,LIN2+2,11,WHITE);
tft.drawCircle(UNO-11,LIN2+2,10,WHITE);
tft.drawCircle(UNO+11,LIN2+2,11,WHITE);
tft.drawCircle(UNO+11,LIN2+2,10,WHITE); 
}
void ARDU22(){ tft.fillCircle(DOS,LIN2,DIAM,VERDE_O); L22=4; turno2();
tft.drawString(DOS-17,LIN2-4,"- +",WHITE,2);
tft.drawCircle(DOS-11,LIN2+2,11,WHITE);
tft.drawCircle(DOS-11,LIN2+2,10,WHITE);
tft.drawCircle(DOS+11,LIN2+2,11,WHITE);
tft.drawCircle(DOS+11,LIN2+2,10,WHITE); 
}
void ARDU23(){ tft.fillCircle(TRES,LIN2,DIAM,VERDE_O);L23=4; turno2();
tft.drawString(TRES-17,LIN2-4,"- +",WHITE,2);
tft.drawCircle(TRES-11,LIN2+2,11,WHITE);
tft.drawCircle(TRES-11,LIN2+2,10,WHITE);
tft.drawCircle(TRES+11,LIN2+2,11,WHITE);
tft.drawCircle(TRES+11,LIN2+2,10,WHITE);
}

void ARDU31(){ tft.fillCircle(UNO,LIN3,DIAM,VERDE_O); L31=4; turno2();
tft.drawString(UNO-17,LIN3-4,"- +",WHITE,2);
tft.drawCircle(UNO-11,LIN3+2,11,WHITE);
tft.drawCircle(UNO-11,LIN3+2,10,WHITE);
tft.drawCircle(UNO+11,LIN3+2,11,WHITE);
tft.drawCircle(UNO+11,LIN3+2,10,WHITE);
}


void ARDU32(){ tft.fillCircle(DOS,LIN3,DIAM,VERDE_O); L32=4; turno2();
tft.drawString(DOS-17,LIN3-4,"- +",WHITE,2);
tft.drawCircle(DOS-11,LIN3+2,11,WHITE);
tft.drawCircle(DOS-11,LIN3+2,10,WHITE);
tft.drawCircle(DOS+11,LIN3+2,11,WHITE);
tft.drawCircle(DOS+11,LIN3+2,10,WHITE); }

void ARDU33(){tft.fillCircle(TRES,LIN3,DIAM,VERDE_O); L33=4; turno2();
tft.drawString(TRES-17,LIN3-4,"- +",WHITE,2);
tft.drawCircle(TRES-11,LIN3+2,11,WHITE);
tft.drawCircle(TRES-11,LIN3+2,10,WHITE);
tft.drawCircle(TRES+11,LIN3+2,11,WHITE);
tft.drawCircle(TRES+11,LIN3+2,10,WHITE);
}

//== 5 ====RUTINA DIBUJA CIRCULOS===============

void RL11(){ tft.fillCircle(UNO,LIN1,DIAM,RED); L11=4; turno2();}
void RL12(){ tft.fillCircle(DOS,LIN1,DIAM,RED); L12=4; turno2();}
void RL13(){ tft.fillCircle(TRES,LIN1,DIAM,RED); L13=4; turno2();}

void RL21(){ tft.fillCircle(UNO,LIN2,DIAM,RED); L21=4; turno2();}
void RL22(){ tft.fillCircle(DOS,LIN2,DIAM,RED); L22=4; turno2();}
void RL23(){ tft.fillCircle(TRES,LIN2,DIAM,RED);L23=4; turno2();}

void RL31(){ tft.fillCircle(UNO,LIN3,DIAM,RED); L31=4; turno2();}
void RL32(){ tft.fillCircle(DOS,LIN3,DIAM,RED); L32=4; turno2();}
void RL33(){tft.fillCircle(TRES,LIN3,DIAM,RED); L33=4; turno2();}
//---------------------------------------------------------------------------
void VL11(){ tft.fillCircle(UNO,LIN1,DIAM,BLUE); L11=3; turno2();}
void VL12(){ tft.fillCircle(DOS,LIN1,DIAM,BLUE); L12=3; turno2();}
void VL13(){ tft.fillCircle(TRES,LIN1,DIAM,BLUE); L13=3; turno2();}

void VL21(){ tft.fillCircle(UNO,LIN2,DIAM,BLUE); L21=3; turno2();}
void VL22(){ tft.fillCircle(DOS,LIN2,DIAM,BLUE); L22=3; turno2();}
void VL23(){ tft.fillCircle(TRES,LIN2,DIAM,BLUE);L23=3; turno2();}

void VL31(){ tft.fillCircle(UNO,LIN3,DIAM,BLUE); L31=3; turno2();}
void VL32(){ tft.fillCircle(DOS,LIN3,DIAM,BLUE); L32=3; turno2();}
void VL33(){tft.fillCircle(TRES,LIN3,DIAM,BLUE); L33=3; turno2();}

//== 6 ============ SELECTOR =============================
void selector(){

if (x > 10 && x < 66 && y >  10 && y < 66)     //H
{game=1;mensaje=1;}

if (x > 76 && x < 142 && y >  10 && y < 66)     //H
{ game=1;mensaje=2;}

//if (x > 152 && x < 218 && y >  10 && y < 66)     //H
//{ tft.drawString(200,100,"H1",YELLOW,5);}
 
  }
void juego1(){
//=========================================================================================  
//==========  BOTONERIA OK =================================================================  
//=========================================================================================   

  
if (turno== 1){
  
      if (x > 0 && x < 88 && y >  98 && y < 164)     // BOTON 11 //OK
      { if (L11 == 0) {RL11(); tft.drawString(UNO-10,LIN1-5,"P2",TEXTCOLOR,2);} }

     else if (x > 0 && x < 88 && y > 164 && y < 230)     // BOTON 11 //OK
      { if (L12 == 0) {RL12(); tft.drawString(DOS-10,LIN1-5,"P2",TEXTCOLOR,2);}}

        else if (x > 0 && x < 88 && y > 230 && y < 296)     // BOTON 11 //OK
      { if (L13 == 0) {RL13(); tft.drawString(TRES-10,LIN1-5,"P2",TEXTCOLOR,2);}}
//-----------------------------------------------------------------------------------------

     else if (x > 88 && x < 154 && y >  98 && y < 164)     // BOTON 11 //OK
      { if (L21 == 0) {RL21(); tft.drawString(UNO-10,LIN2-5,"P2",TEXTCOLOR,2);}}

     else if (x > 88 && x < 154 && y > 164 && y < 230)     // BOTON 11 //OK
      { if (L22 == 0) {RL22(); tft.drawString(DOS-10,LIN2-5,"P2",TEXTCOLOR,2);}}

      else if (x > 88 && x < 154 && y > 230 && y < 296)     // BOTON 11 //OK
      { if (L23 == 0) {RL23(); tft.drawString(TRES-10,LIN2-5,"P2",TEXTCOLOR,2);}}

//-----------------------------------------------------------------------------------------

      else if (x > 154 && x < 220 && y >  98 && y < 164)     // BOTON 11 //OK
      { if (L31 == 0) {RL31(); tft.drawString(UNO-10,LIN3-5,"P2",TEXTCOLOR,2);}}

      else if (x > 154 && x < 220 && y > 164 && y < 230)     // BOTON 11 //OK
      { if (L32 == 0) {RL32(); tft.drawString(DOS-10,LIN3-5,"P2",TEXTCOLOR,2);}}

      else if (x > 154 && x < 220 && y > 230 && y < 296)     // BOTON 11 //OK
      { if (L33 == 0) {RL33(); tft.drawString(TRES-10,LIN3-5,"P2",TEXTCOLOR,2);}}
}

//=========================================================================================  
//==========  BOTONERIA OK =================================================================  
//=========================================================================================     
if (turno== 0){
  
    if (x > 0 && x < 88 && y >  98 && y < 164)     // BOTON 11 //OK
      { if (L11 == 0) {VL11(); tft.drawString(UNO-10,LIN1-5,"P1",TEXTCOLOR,2);}}

      else if (x > 0 && x < 88 && y > 164 && y < 230)     // BOTON 11 //OK
      { if (L12 == 0) {VL12(); tft.drawString(DOS-10,LIN1-5,"P1",TEXTCOLOR,2);}}

       else if (x > 0 && x < 88 && y > 230 && y < 296)     // BOTON 11 //OK
      { if (L13 == 0) {VL13(); tft.drawString(TRES-10,LIN1-5,"P1",TEXTCOLOR,2);}}
//-----------------------------------------------------------------------------------------

      else if (x > 88 && x < 154 && y >  98 && y < 164)     // BOTON 11 //OK
      { if (L21 == 0) {VL21(); tft.drawString(UNO-10,LIN2-5,"P1",TEXTCOLOR,2);}}

      else if (x > 88 && x < 154 && y > 164 && y < 230)     // BOTON 11 //OK
      { if (L22 == 0) {VL22(); tft.drawString(DOS-10,LIN2-5,"P1",TEXTCOLOR,2);}}

      else if (x > 88 && x < 154 && y > 230 && y < 296)     // BOTON 11 //OK
      { if (L23 == 0) {VL23(); tft.drawString(TRES-10,LIN2-5,"P1",TEXTCOLOR,2);}}

//-----------------------------------------------------------------------------------------

     else if (x > 154 && x < 220 && y >  98 && y < 164)     // BOTON 11 //OK
      { if (L31 == 0) {VL31(); tft.drawString(UNO-10,LIN3-5,"P1",TEXTCOLOR,2);}}

     else if (x > 154 && x < 220 && y > 164 && y < 230)     // BOTON 11 //OK
      { if (L32 == 0) {VL32(); tft.drawString(DOS-10,LIN3-5,"P1",TEXTCOLOR,2);}}

    else  if (x > 154 && x < 220 && y > 230 && y < 296)     // BOTON 11 //OK
      { if (L33 == 0) {VL33(); tft.drawString(TRES-10,LIN3-5,"P1",TEXTCOLOR,2);}}
}
  }
void borrar(){

   tft.fillRoundRect(86,10,230,228,14,BLACK);
   tft.drawRoundRect(86,10,224,218,14,VERDE_O); 
     tft.drawString(95,40,"<- 2 PLAYER",WHITE,2);
  tft.drawString(95,110,"<- 1 PLAYER",WHITE,2);
RESET=0;
  }
void gato(){
tft.fillRoundRect(86,10,230,228,14,BLACK);
tft.drawRoundRect(86,10,224,218,14,VERDE_O);
tft.drawString(100,100,"!!GATOOO!!",YELLOW,3);
}
void gana(){

//===================== LINEA 1 ==================================
if (L11+L12+L13 == 12){
//tft.fillRect(95,50,200,6,YELLOW);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(DOS, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  ganaRojo();}
  
else if (L11+L12+L13 == 9){
  //tft.fillRect(96,50,200,4,YELLOW);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(DOS, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  ganaVerde();}
//====================== LINEA 2 =================================
else if (L21+L22+L23 == 12){
  //tft.fillRect(95,120,200,4,BLUE);
  tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  ganaRojo();}
else if (L21+L22+L23 == 9){
  //tft.fillRect(95,120,200,4,YELLOW);
    tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  ganaVerde();}
//======================= LINEA 3 =================================  
else if (L31+L32+L33 == 12){
  //tft.fillRect(95,190,200,4,YELLOW);
    tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(DOS, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  ganaRojo();}
else if (L31+L32+L33 == 9){
  //tft.fillRect(95,190,200,4,YELLOW);
  tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(DOS, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  ganaVerde();}

//=======================HORIZONTAL 1================================  

else if (L11+L21+L31 == 12){
  //tft.fillRect(125,20,4,200,MAGENTA);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(DOS, LIN2, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  ganaRojo();}
else if (L11+L21+L31 == 9){
  //tft.fillRect(125,20,4,200,MAGENTA);
    tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(DOS, LIN2, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  ganaVerde();}
  //=======================HORIZONTAL 2================================
  else if (L12+L22+L32 == 12){
  //tft.fillRect(120,20,4,200,YELLOW);
  tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  ganaRojo();}
  else if (L12+L22+L32 == 9){
  //tft.fillRect(195,20,4,200,YELLOW);
    tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  ganaVerde();}
//=======================HORIZONTAL 3================================
  else if (L13+L23+L33 == 12){
  //tft.fillRect(265,20,200,4,YELLOW);
  tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(DOS, LIN2, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  ganaRojo();}
  else if (L13+L23+L33 == 9){
  //tft.fillRect(265,20,4,200,YELLOW);
  tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(DOS, LIN2, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  ganaVerde();}
//=======================X 2================================  
  
//-----------------------------
else if (L11+L22+L33 == 12){
  //tft.drawLine(10,100,20,100,YELLOW);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  ganaRojo();}
  else if (L11+L22+L33 == 9){
  //tft.drawLine(10,100,20,100,YELLOW);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(TRES, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(UNO, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  ganaVerde();}

else if (L31+L22+L13 == 12){
  //tft.drawLine(10,100,20,100,YELLOW);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  ganaRojo();}
else if (L31+L22+L13 == 9){
  //            L   a  l   a
  //tft.drawVerticalLine(125,190,200,RED);
  tft.fillCircle(DOS, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN1, DIAM, BLACK);
  tft.fillCircle(UNO, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN2, DIAM, BLACK);
  tft.fillCircle(TRES, LIN3, DIAM, BLACK);
  tft.fillCircle(DOS, LIN3, DIAM, BLACK);
  ganaVerde();}
//======================================

if (L11+L12+L13+L21+L22+L23+L31+L32+L33>31) {delay(500); gato(); delay(5000); softReset();}

  }
  void mensajes(){
  tft.drawString(95,40,"<- 2 PLAYER",BLACK,2);
  tft.drawString(95,110,"<- 1 PLAYER",BLACK,2);
  
  tft.drawString(120,50,"JUGADOR 1",WHITE,3);
  tft.drawString(120,100,"   VS",WHITE,3);
  tft.drawString(120,150,"JUGADOR 2",WHITE,3);
  delay(4000);
  tft.drawString(120,50,"JUGADOR 1",BLACK,3);
  tft.drawString(120,100,"   VS",BLACK,3);
  tft.drawString(120,150,"JUGADOR 2",BLACK,3);
  delay(1000);
  game=1;mensaje=0;tablero=1;juego=1;
  }
  void mensajes2(){
  tft.drawString(95,40,"<- 2 PLAYER",BLACK,2);
  tft.drawString(95,110,"<- 1 PLAYER",BLACK,2);
  
  tft.drawString(140,50,"JUGADOR",WHITE,3);
  tft.drawString(140,100,"  VS",WHITE,3);
  tft.drawString(140,150,"ARDUINO",WHITE,3);
  delay(4000);
  tft.drawString(140,50,"JUGADOR 1",BLACK,3);
  tft.drawString(140,100,"  VS",BLACK,3);
  tft.drawString(140,150,"ARDUINO",BLACK,3);
  delay(1000);
  game=1;mensaje=0;tablero=1;juego=2;
  }
void tablero1(){
  delay(1000);
tft.drawHorizontalLine(98,88,200,WHITE);
tft.drawHorizontalLine(98,154,200,WHITE);
tft.drawVerticalLine(164,18,200,WHITE);
tft.drawVerticalLine(230,18,200,WHITE);
game=1;mensaje=0;tablero=0;

  }
  void juego2(){
  //=========================================================================================  
//==========  BOTONERIA OK =================================================================  
//=========================================================================================    
tablero=0; 
if (turno==1){
  
    if (x > 0 && x < 88 && y >  98 && y < 164)     // BOTON 11 //OK
      { if (L11 == 0) {VL11();} tft.drawString(UNO-10,LIN1-5,"P2",TEXTCOLOR,2);}

      else if (x > 0 && x < 88 && y > 164 && y < 230)     // BOTON 11 //OK
      { if (L12 == 0) {VL12();} tft.drawString(DOS-10,LIN1-5,"P2",TEXTCOLOR,2);}

       else if (x > 0 && x < 88 && y > 230 && y < 296)     // BOTON 11 //OK
      { if (L13 == 0) {VL13();} tft.drawString(TRES-10,LIN1-5,"P2",TEXTCOLOR,2);}
//-----------------------------------------------------------------------------------------

      else if (x > 88 && x < 154 && y >  98 && y < 164)     // BOTON 11 //OK
      { if (L21 == 0) {VL21();} tft.drawString(UNO-10,LIN2-5,"P2",TEXTCOLOR,2);}

      else if (x > 88 && x < 154 && y > 164 && y < 230)     // BOTON 11 //OK
      { if (L22 == 0) {VL22();} tft.drawString(DOS-10,LIN2-5,"P2",TEXTCOLOR,2);}

      else if (x > 88 && x < 154 && y > 230 && y < 296)     // BOTON 11 //OK
      { if (L23 == 0) {VL23();} tft.drawString(TRES-10,LIN2-5,"P2",TEXTCOLOR,2);}

//-----------------------------------------------------------------------------------------

     else if (x > 154 && x < 220 && y >  98 && y < 164)     // BOTON 11 //OK
      { if (L31 == 0) {VL31();} tft.drawString(UNO-10,LIN3-5,"P2",TEXTCOLOR,2);}

     else if (x > 154 && x < 220 && y > 164 && y < 230)     // BOTON 11 //OK
      { if (L32 == 0) {VL32();} tft.drawString(DOS-10,LIN3-5,"P2",TEXTCOLOR,2);}

    else  if (x > 154 && x < 220 && y > 230 && y < 296)     // BOTON 11 //OK
      { if (L33 == 0) {VL33();} tft.drawString(TRES-10,LIN3-5,"P2",TEXTCOLOR,2);}
} 
  }
void inteligencia(){
 
if (turno==0){   
        
        if (L12 == 3 && L22 == 3 ){if (L32==0) {ARDU32();}}
        if (L22 == 3 && L23 == 3 ){if (L21==0) {ARDU21();}}
//-----------------------------------  
    
        if (L11 == 4 && L13 == 4 ){if (L12==0) {ARDU12();}}

        if (L13 == 4 && L33 == 4 ){if (L23==0) {ARDU23();}}
    
        if (L33 == 4 && L31 == 4 ){if (L32==0) {ARDU32();}}  

        if (L31 == 4 && L11 == 4 ){if (L21==0) {ARDU21();}}

        if (L11 == 4 && L33 == 4 ){if (L22==0) {ARDU22();}}
        
        if (L31 == 4 && L13 == 4 ){if (L22==0) {ARDU22();}}

//------------------------------------
        

        if (L13 == 3 && L33 == 3 ){if (L23==0) {ARDU23();}}
    
        if (L33 == 3 && L31 == 3 ){if (L32==0) {ARDU32();}}  

        if (L31 == 3 && L11 == 3 ){if (L21==0) {ARDU21();}}

        if (L11 == 3 && L33 == 3 ){if (L22==0) {ARDU22();}}
        
        if (L31 == 3 && L13 == 3 ){if (L22==0) {ARDU22();}}





//-----------------------------------  
    
     if (turno+L11 == 0){ARDU11();} 
else if (turno+L13 == 0){ARDU13();} 
else if (turno+L33 == 0){ARDU33();} 
else if (turno+L31 == 0){ARDU31();}

else if (turno+L21 == 0){ARDU21();}
else if (turno+L22 == 0){ARDU22();}
else if (turno+L32 == 0){ARDU32();}
else if (turno+L23 == 0){ARDU23();}
else if (turno+L12 == 0){ARDU12();}


//-----------------------------------
else if (turno+L11 == 0){ARDU11();}   
else if (turno+L12 == 0){ARDU12();}
else if (turno+L13 == 0){ARDU13();}
//-----------------------------------
else if (turno+L21 == 0){ARDU21();}   
else if (turno+L22 == 0){ARDU22();}
else if (turno+L23 == 0){ARDU23();}
//-----------------------------------
else if (turno+L31 == 0){ARDU31();}   
else if (turno+L32 == 0){ARDU32();}
else if (turno+L33 == 0){ARDU33();}
//-----------------------------------
}
  }
//==============================================
//================== SETUP =====================
//==============================================

void setup() 
{ 
  Serial.begin(9600);
  tft.reset();
  tft.initDisplay();
  tft.setRotation(1);
  tft.fillScreen(BLACK);
 tft.drawRoundRect(0,0,320,240,14,VERDE_O);
//--------------------------------------
tft.fillRoundRect(10,162,BOTON,BOTON,12,VERDE_O);
tft.fillRoundRect(10,86,BOTON,BOTON,12,VERDE_O);
tft.fillRoundRect(10,10,BOTON,BOTON,12,VERDE_O);
//--------------------------------------
tft.drawRoundRect(10,162,BOTON,BOTON,13,GRISCLARO );
tft.drawRoundRect(10,86,BOTON,BOTON,13,GRISCLARO);
tft.drawRoundRect(10,10,BOTON,BOTON,13,GRISCLARO);
//--------------------------------------
tft.drawRoundRect(86,10,224,218,14,VERDE_O);
//--------------------------------------
//tft.drawHorizontalLine(98,88,200,GRIS );
//tft.drawHorizontalLine(98,154,200,GRIS_O );
//tft.drawVerticalLine(164,18,200,GRIS );
//tft.drawVerticalLine(230,18,200,GRIS );


  tft.drawString(35,25,"2",TEXTCOLOR,3);
  tft.drawString(25,55,"PLAYER",TEXTCOLOR,1);

  tft.drawString(35,101,"1",TEXTCOLOR,3);
  tft.drawString(25,131,"PLAYER",TEXTCOLOR,1);

  tft.drawString(95,30,"GATO, TIC TAC TOE",VERDE_O,2);
  tft.drawString(95,60,"CODIGO DE MAURICIO BARUCH CHAVEZ",VERDE_O,1);
  tft.drawString(95,80,"PARA ARDUINO UNO",VERDE_O,1);
  tft.drawString(95,100,"TFT DRIVER 7783",VERDE_O,1);
  tft.drawString(95,120," ",VERDE_O,1);
  tft.drawString(95,140," ",VERDE_O,1);
  tft.drawString(95,160,"mbaru2k@hotmail.com",VERDE_O,1);
  tft.drawString(95,180,"MEXICO 19 DE SEPTIEMBRE 2017",VERDE_O,1);
  delay(5000);
  tft.drawString(95,30,"GATO, TIC TAC TOE",BLACK,2);
  tft.drawString(95,60,"CODIGO DE MAURICIO BARUCH CHAVEZ",BLACK,1);
  tft.drawString(95,80,"PARA ARDUINO UNO",BLACK,1);
  tft.drawString(95,100,"TFT DRIVER 7783",BLACK,1);
  tft.drawString(95,120," ",BLACK,1);
  tft.drawString(95,140," ",BLACK,1);
  tft.drawString(95,160,"mbaru2k@hotmail.com",BLACK,1);
  tft.drawString(95,180,"MEXICO 19 DE SEPTIEMBRE 2017",BLACK,1);

  tft.drawString(95,40,"<- 2 PLAYER",WHITE,2);
  tft.drawString(95,110,"<- 1 PLAYER",WHITE,2);
 

  
}
//==============================================
//================== LOOP ======================
//==============================================
void loop() 
{ 
    Point p = ts.getPoint();
    pinMode(XM, OUTPUT);
    pinMode(YP, OUTPUT);
    if (p.z > MINPRESSURE && p.z < MAXPRESSURE) 
    {
    x = map(p.x, TS_MAXX,TS_MINX, 0, 240);
    y = map(p.y, TS_MINY,TS_MAXY, 0, 320);
    }
  if (turno == 0) {currentcolor = RED;}
  if (turno == 1){currentcolor = GREEN;}
  
  if (game==0){selector();}
  if (mensaje ==1){mensajes();}
  if (mensaje ==2){mensajes2();}
  if (tablero ==1){tablero1();}
  if (juego ==1){tft.drawRoundRect(10,10,BOTON,BOTON,13,WHITE);juego1();}
  if (juego ==2){tft.drawRoundRect(10,10,BOTON,BOTON,13,WHITE);juego2();inteligencia();}

  
gana();
}
//==============================================
//================== FIN =======================
//==============================================

Credits

BARUCH2K
0 projects • 0 followers

Comments