{"id":7014,"date":"2023-05-08T23:03:05","date_gmt":"2023-05-08T21:03:05","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=7014"},"modified":"2023-05-08T23:03:07","modified_gmt":"2023-05-08T21:03:07","slug":"tres-en-raya","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/","title":{"rendered":"Tres en raya"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"772\" height=\"592\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya-1.png\" alt=\"\" class=\"wp-image-7018\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya-1.png 772w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya-1-300x230.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya-1-768x589.png 768w\" sizes=\"auto, (max-width: 772px) 100vw, 772px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Autores:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Javier Vilches Colomb\u00e1s<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Diego Gonz\u00e1lez Rodr\u00edguez<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Bogdan Ionut Maran<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p>En esta memoria explicaremos todo lo necesario para saber c\u00f3mo hemos realizado nuestro proyecto, el cl\u00e1sico juego de 3 en raya. Nos decidimos por hacer este proyecto, porque nos pareci\u00f3 algo bastante interesante el hacer un juego interactivo al que pudieran jugar 2 personas. Nos topamos con distintos problemas y complicaciones tanto hardware como software al hacer el proyecto, pero esto es algo que explicaremos m\u00e1s adelante. El reparto de tareas ha sido m\u00e1s o menos equitativo, ya que hemos quedado los 3 integrantes del grupo siempre en alg\u00fan sitio y hemos avanzado en conjunto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Materiales utilizados<\/h2>\n\n\n\n<p>Los componentes y materiales que hemos empleado a la hora de hacer este proyecto han sido los siguientes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>9 LEDs RGB (6\u20ac)<\/li>\n\n\n\n<li>2 Pulsadores<\/li>\n\n\n\n<li>1 Protoboard<\/li>\n\n\n\n<li>1 Board del m\u00f3dulo de expansi\u00f3n<\/li>\n\n\n\n<li>1 Arduino UNO<\/li>\n\n\n\n<li>Cableado macho-macho<\/li>\n\n\n\n<li>Resistencias<\/li>\n\n\n\n<li>Caja de cart\u00f3n<\/li>\n\n\n\n<li>Spray de pintura (2\u20ac)<\/li>\n\n\n\n<li>Cinta aislante (2\u20ac)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"411\" height=\"367\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/circuit.png\" alt=\"\" class=\"wp-image-7016\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/circuit.png 411w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/circuit-300x268.png 300w\" sizes=\"auto, (max-width: 411px) 100vw, 411px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3digo<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>const int blanco    = 0;\r\nconst int azul     = 1;\r\nconst int rojo      = 2;\r\nconst int ultimoled   = 9;        \r\nconst int parpadeo      = 1;        \r\nconst int off       = 0;      \r\nconst int victoriasPosibles&#091;9]  = {8,123,456,789,147,258,369,159,357};    \r\n\r\n\r\n\r\n\r\nint tardar         = 200;  \r\nint pinled&#091;10]      = {0,12,2,3,4,5,6,7,8,9};\r\nint pinRojo     = 10;  \r\nint pinAzul    = 11;  \r\nint botonSelec    = 0;    \r\nint botonSig  = 1;    \r\nint color           = azul;  \r\nint ultcolor        = rojo;\r\nint led             = 1;      \r\nint L&#091;10]           = {0,0,0,0,0,0,0,0,0,0};  \r\nint B&#091;10]           = {0,0,0,0,0,0,0,0,0,0};  \r\nint P&#091;10]           = {0,0,0,0,0,0,0,0,0,0};    \r\nint ledjugada&#091;4]    = {0,0,0,0};    \r\nunsigned long tiempo;        \r\nboolean encendido   = true;      \r\nboolean victoria  = false;\r\n\r\n\r\n\r\n\r\nvoid resetearLeds() {  \r\n \r\n  for (int i=1;i&lt;=9;i++) {\r\n    pinMode(pinled&#091;i],OUTPUT);\r\n    digitalWrite(pinled&#091;i], HIGH);\r\n  }\r\n \r\n  pinMode(pinRojo,OUTPUT);\r\n  pinMode(pinAzul,OUTPUT);\r\n  digitalWrite(pinRojo,LOW);\r\n  digitalWrite(pinAzul,LOW);\r\n \r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nvoid corrienteLed(int color) {\r\n  if (color == azul) {\r\n    digitalWrite(pinRojo,LOW);\r\n    digitalWrite(pinAzul,HIGH);\r\n  }\r\n  if (color == rojo) {\r\n    digitalWrite(pinAzul,LOW);\r\n    digitalWrite(pinRojo,HIGH);\r\n  }\r\n}\r\n\r\n\r\nvoid encenderLed(int led,int color) {\r\n  corrienteLed(color);\r\n  digitalWrite(pinled&#091;led],LOW);      \r\n}\r\n\r\n\r\nvoid apagarLed(int led) {            \r\n  digitalWrite(pinled&#091;led],HIGH);    \r\n}\r\n\r\n\r\nvoid mostrarLeds(int arrayleds&#091;])  {\r\n  for (int i=1;i&lt;=9;i++) {\r\n    if (arrayleds&#091;i] != off) {\r\n      encenderLed(i,arrayleds&#091;i]);\r\n      delay(1);    \r\n      apagarLed(i);\r\n    }\r\n    else apagarLed(i);\r\n  }\r\n}\r\n\r\n\r\nvoid parpadearLeds(int intervalo) {  \r\n  if (millis() - tiempo &gt; intervalo) {        \r\n    if (encendido == true)  encendido = false;\r\n    else encendido = true;\r\n    tiempo = millis();\r\n  }\r\n  for (int i=1;i&lt;=9;i++) L&#091;i]=P&#091;i];    \r\n  for (int i=1;i&lt;=9;i++)          \r\n    if (B&#091;i] == parpadeo) {      \r\n      if (encendido)  L&#091;i] = P&#091;i];    \r\n      else L&#091;i] = off;\r\n    }\r\n  mostrarLeds(L);                      \r\n}\r\n\r\n\r\nint cambioDeColor(int param_color) {  \r\n  switch (param_color) {\r\n    case azul: return rojo;\r\n    case rojo:  return azul;\r\n    default:    return blanco;    \r\n  }\r\n}\r\n\r\n\r\nint avanzaLed(int index) {  \r\n  for (int i=index;i&lt;=9;i++)\r\n    if (P&#091;i] == off) return i;\r\n  for (int i=1;i&lt;=index;i++)\r\n    if (P&#091;i] == off) return i;\r\n  return 0;\r\n}\r\n\r\n\r\n\r\n\r\nvoid parpadeoVictoria(int numjugada) {\r\n    for (int i=0;i&lt;=9;i++) B&#091;i] = off;  \r\n    B&#091;ledjugada&#091;1]] = parpadeo;                                      \r\n    B&#091;ledjugada&#091;2]] = parpadeo;\r\n    B&#091;ledjugada&#091;3]] = parpadeo;\r\n}\r\n\r\n\r\nboolean hayVictoria(int numjugada, int turno, int arraycontrol&#091;]) {  \r\n  for (int i=0;i&lt;=3;i++) ledjugada&#091;i] = 0;                              \r\n  ledjugada&#091;1]  = numjugada\/100;                    \r\n  ledjugada&#091;2]  = (numjugada - 100*ledjugada&#091;1])\/10;  \r\n  ledjugada&#091;3]  = numjugada - 100*ledjugada&#091;1] - 10*ledjugada&#091;2];              \r\n  if (     (arraycontrol&#091;ledjugada&#091;1]] == turno)\r\n        &amp;&amp; (arraycontrol&#091;ledjugada&#091;2]] == turno)\r\n        &amp;&amp; (arraycontrol&#091;ledjugada&#091;3]] == turno)  )  return true;        \r\n  return false;  \r\n}\r\n\r\n\r\nboolean tresenraya(int turno, int arraycontrol&#091;]) {  \r\n  boolean tres = false;                        \r\n  for (int i=1;i&lt;=victoriasPosibles&#091;0];i++)                        \r\n    if (  hayVictoria(victoriasPosibles&#091;i],turno,arraycontrol) )  {      \r\n      parpadeoVictoria(victoriasPosibles&#091;i]);                                        \r\n      tres = true;                                                            \r\n    }\r\n  return tres;                                                              \r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvoid setup() {\r\n\r\n\r\n  Serial.begin(9600); \/\/\u00datil para la depuraci\u00f3n\r\n \r\n  resetearLeds();\r\n \r\n  for (int i=1;i&lt;=ultimoled;i++) L&#091;i] = 1;\r\n  tiempo = millis();    \r\n  while (millis() - tiempo &lt; tardar) {\r\n    mostrarLeds(L);\r\n  }\r\n  for (int i=1;i&lt;=ultimoled;i++) apagarLed(i);\r\n  delay(tardar);\r\n  for (int i=1;i&lt;=ultimoled;i++) L&#091;i] = 2;  \r\n  tiempo = millis();  \r\n  while (millis() - tiempo &lt; tardar) {\r\n    mostrarLeds(L);\r\n  }\r\n  for (int i=1;i&lt;=ultimoled;i++) apagarLed(i);\r\n  delay(tardar);\r\n}\r\n\r\n\r\n\r\n\r\nvoid loop() {\r\n \r\n  for (int i=0;i&lt;=3;i++) ledjugada&#091;i] = 0;\r\n  for (int i=0;i&lt;=9;i++) {\r\n    L&#091;i] = off;\r\n    B&#091;i] = off;  \r\n    P&#091;i] = blanco;\r\n  }  \r\n  tardar     = 200;\r\n  led         = 1;\r\n  encendido   = true;\r\n  victoria  = false;\r\n \r\n \r\n  while ( (victoria != true) &amp;&amp; (9-P&#091;0]!=0) ) {\r\n      P&#091;0] = P&#091;0] + 1;                                              \r\n      if (P&#091;0] != 1) color = cambioDeColor(color);                      \r\n      else {                                                    \r\n        color    = cambioDeColor(ultcolor);\r\n        ultcolor = color;\r\n      }\r\n      L&#091;led] = color;                                                    \r\n      while ( analogRead(botonSelec) == off )  {              \r\n          tiempo = millis();                                              \r\n          B&#091;led] = parpadeo;                                            \r\n          P&#091;led] = color;\r\n          while ( (analogRead(botonSig) == off) &amp;&amp; (analogRead(botonSelec) == off) )  parpadearLeds(2*tardar);\r\n          P&#091;led] = blanco;\r\n          for (int i=1;i&lt;=9;i++) {                                      \r\n            L&#091;i] = P&#091;i];                                                \r\n            B&#091;i] = off;                                                  \r\n          }\r\n          if (analogRead(botonSelec) != off) {                          \r\n            while ( analogRead(botonSelec) != off ) mostrarLeds(L);  \r\n            P&#091;led] = color;                                              \r\n            for (int i=1;i&lt;=9;i++) L&#091;i] = P&#091;i];                        \r\n            break;                                    \r\n          }\r\n          while ( analogRead(botonSig) != off ) mostrarLeds(L);  \r\n          for (int i=1;i&lt;=9;i++) L&#091;i] = P&#091;i];                            \r\n          if (led == 9) led = avanzaLed(1);                              \r\n          else led = avanzaLed(led+1);\r\n      }\r\n      led = avanzaLed(1);                                                \r\n      victoria = tresenraya(color,P);                                \r\n                                 \r\n  } \r\n \r\n \r\n                                 \r\n  tiempo = millis();                                                  \r\n  while ( (analogRead(botonSig) == off) &amp;&amp; (analogRead(botonSelec) == off) )  parpadearLeds(tardar\/2);  \r\n  while ( (analogRead(botonSig) != off) || (analogRead(botonSelec) != off) )  parpadearLeds(tardar\/2);  \r\n}  <\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Problemas y soluciones<\/h2>\n\n\n\n<p>Como hemos mencionado anteriormente, nos topamos con much\u00edsimos problemas a la hora de hacer el proyecto. Empezaremos por los problemas de hardware que tuvimos.&nbsp;<\/p>\n\n\n\n<p>Un problemas que tuvimos, fue que al ser un tres en raya, necesit\u00e1bamos cierta separaci\u00f3n entre los LEDs, para que fueran distinguibles f\u00e1cilmente, y no nos fue posible lograr esta distancia teniendo solamente 1 Protoboard, ya que entre los LEDs, el cableado y las resistencias, no quedaba bien. La soluci\u00f3n que encontramos a este problema estaba m\u00e1s cerca de lo que pens\u00e1bamos, de hecho, estaba en la propia caja con los materiales, en la que hab\u00eda una board de expansi\u00f3n, que aunque era muy peque\u00f1a, nos sirvi\u00f3 perfectamente para lograr la separaci\u00f3n m\u00ednima que quer\u00edamos.<\/p>\n\n\n\n<p>Otro problema bastante tedioso que realmente no supimos por qu\u00e9 ocurr\u00eda, fueron las resistencias. Las resistencias que pusimos a los pulsadores, nos daban problemas de vez en cuando y no sab\u00edamos la raz\u00f3n. A veces era como que dejaban de funcionar y nuestro circuito se volv\u00eda loco y los LEDs o se volv\u00edan locos y no segu\u00edan ning\u00fan tipo de patr\u00f3n o directamente se apagaban. Esto lo resolvimos intercambiando los pines de las resistencias, es decir, coloc\u00e1ndolas al rev\u00e9s, lo cual no tiene ning\u00fan sentido aparente, pero funcion\u00f3.<\/p>\n\n\n\n<p>Un problema bastante f\u00e1cil de resolver fue que conectamos mal algunos de los LEDs RGB, ya que no nos dimos cuenta de que hab\u00eda que conectarlos de una manera determinada porque sus pines correspond\u00eda cada uno con un color y con tierra. Simplemente miramos c\u00f3mo hab\u00eda que conectarlos bien y arreglamos el problema.<\/p>\n\n\n\n<p>Al principio, ten\u00edamos pensado hacer otro proyecto, que era un 4 en raya, y lo quer\u00edamos hacer con una matriz LED. Compramos varios materiales que \u00edbamos a necesitar y cuando nos fuimos a poner con el proyecto nos dimos cuenta de que iba a suponer un gasto muy elevado en cuanto a materiales, porque \u00edbamos a necesitar otra Protoboard, muchos m\u00e1s cables, etc. y aparte de todo esto, no nos alcanzaban los pines del Arduino UNO.<\/p>\n\n\n\n<p>En cuanto a problemas software, uno bastante grande que tuvimos fue como simular el algoritmo de victoria para el tres en raya. Buscando por internet y viendo varios v\u00eddeos, nos dimos cuenta de que era m\u00e1s sencillo de lo que cre\u00edamos, y simplemente escribimos las 8 combinaciones ganadoras, y cuando los 3 LEDs de cada combinaci\u00f3n se iluminaran del mismo color, daba victoria.<\/p>\n\n\n\n<p>Otro problema que tuvimos con respecto al c\u00f3digo fue que no pudimos simular el empate t\u00e9cnico en el 3 en raya. Lo que queremos decir con esto es que el propio juego detecte cu\u00e1ndo es imposible que ninguno de los 2 jugadores gane sin haber completado todas las posiciones del tablero. Esto supon\u00eda una complejidad muy grande, ya que no ten\u00edamos ni idea de c\u00f3mo hacerlo y al buscar tutoriales por internet nos dimos cuenta de que era algo muy complicado, que no entend\u00edamos muy bien y que adem\u00e1s no sab\u00edamos exactamente c\u00f3mo implementar en el c\u00f3digo que nosotros ten\u00edamos.<\/p>\n\n\n\n<p>Tambi\u00e9n tuvimos problemas con la funci\u00f3n \u201cdelay()\u201d, y decidimos usar \u201cmillis()\u201d. Esta nos dio tambi\u00e9n fallos pues hab\u00edamos definido una variable int para guardar su valor y el programa se nos cerraba o no funcionaba correctamente. Despu\u00e9s vimos que deb\u00edamos declarar esa variable tiempo como un unsigned long, y a partir de ah\u00ed no volvimos a tener problemas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Posibles mejoras<\/h2>\n\n\n\n<p>Algunas posibles mejoras que podr\u00edamos a\u00f1adir son las de implementar el algoritmo de empate, para que los jugadores no pierdan tiempo rellenando todas las casillas cuando va a ser imposible que ninguno de los 2 gane.<\/p>\n\n\n\n<p>Una mejora hardware que implementar\u00edamos para que el juego fuera m\u00e1s atractivo y llamativo visualmente ser\u00eda cambiar los LEDs RGB por una matriz LED RGB ya sea de 8&#215;8 o de 16&#215;16 y hacer cada posici\u00f3n del tablero m\u00e1s grande.<\/p>\n\n\n\n<p>Por \u00faltimo, podr\u00edamos hacer que el juego que hemos dise\u00f1ado fuera port\u00e1til, conect\u00e1ndolo a una pila, pero por razones de espacio en la caja que escogimos para montarlo, nos era imposible, aunque ser\u00eda algo bastante sencillo de implementar, ya que con la pila de 9V que ten\u00edamos hubiese funcionado correctamente.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"Video3EnRaya\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/ONGtrNN-iX8?feature=oembed&#038;wmode=opaque\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Autores: Introducci\u00f3n En esta memoria explicaremos todo lo necesario para saber c\u00f3mo hemos realizado nuestro proyecto, el cl\u00e1sico juego de 3 en raya. Nos decidimos por hacer este proyecto, porque nos pareci\u00f3 algo bastante&#46;&#46;&#46;<\/p>\n","protected":false},"author":8,"featured_media":7015,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-7014","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyectos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tres en raya - Proyectos con Arduino.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tres en raya - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Autores: Introducci\u00f3n En esta memoria explicaremos todo lo necesario para saber c\u00f3mo hemos realizado nuestro proyecto, el cl\u00e1sico juego de 3 en raya. Nos decidimos por hacer este proyecto, porque nos pareci\u00f3 algo bastante&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-08T21:03:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-08T21:03:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya.png\" \/>\n\t<meta property=\"og:image:width\" content=\"772\" \/>\n\t<meta property=\"og:image:height\" content=\"592\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"gdhwsw2\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"gdhwsw2\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/\"},\"author\":{\"name\":\"gdhwsw2\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/7491e54afbe5e7fd53467fccb9c7ce44\"},\"headline\":\"Tres en raya\",\"datePublished\":\"2023-05-08T21:03:05+00:00\",\"dateModified\":\"2023-05-08T21:03:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/\"},\"wordCount\":915,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/3raya.png\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/\",\"name\":\"Tres en raya - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/3raya.png\",\"datePublished\":\"2023-05-08T21:03:05+00:00\",\"dateModified\":\"2023-05-08T21:03:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/3raya.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/05\\\/3raya.png\",\"width\":772,\"height\":592},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/tres-en-raya\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tres en raya\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"name\":\"Proyectos con Arduino.\",\"description\":\"Blog de proyectos de Arduino de alumnos de la URJC\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\",\"name\":\"Universidad Rey Juan Carlos\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"width\":745,\"height\":288,\"caption\":\"Universidad Rey Juan Carlos\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/7491e54afbe5e7fd53467fccb9c7ce44\",\"name\":\"gdhwsw2\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g\",\"caption\":\"gdhwsw2\"},\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/gdhwsw2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tres en raya - Proyectos con Arduino.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/","og_locale":"es_ES","og_type":"article","og_title":"Tres en raya - Proyectos con Arduino.","og_description":"Autores: Introducci\u00f3n En esta memoria explicaremos todo lo necesario para saber c\u00f3mo hemos realizado nuestro proyecto, el cl\u00e1sico juego de 3 en raya. Nos decidimos por hacer este proyecto, porque nos pareci\u00f3 algo bastante&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2023-05-08T21:03:05+00:00","article_modified_time":"2023-05-08T21:03:07+00:00","og_image":[{"width":772,"height":592,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya.png","type":"image\/png"}],"author":"gdhwsw2","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"gdhwsw2","Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/"},"author":{"name":"gdhwsw2","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/7491e54afbe5e7fd53467fccb9c7ce44"},"headline":"Tres en raya","datePublished":"2023-05-08T21:03:05+00:00","dateModified":"2023-05-08T21:03:07+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/"},"wordCount":915,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya.png","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/","name":"Tres en raya - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya.png","datePublished":"2023-05-08T21:03:05+00:00","dateModified":"2023-05-08T21:03:07+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/05\/3raya.png","width":772,"height":592},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/tres-en-raya\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Tres en raya"}]},{"@type":"WebSite","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","name":"Proyectos con Arduino.","description":"Blog de proyectos de Arduino de alumnos de la URJC","publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization","name":"Universidad Rey Juan Carlos","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","width":745,"height":288,"caption":"Universidad Rey Juan Carlos"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/7491e54afbe5e7fd53467fccb9c7ce44","name":"gdhwsw2","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed762cea3155134adfbecf1780d8a40c0fe5e4b642859a56b3a2b3611a1ca73a?s=96&d=mm&r=g","caption":"gdhwsw2"},"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/gdhwsw2\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/7014","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=7014"}],"version-history":[{"count":1,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/7014\/revisions"}],"predecessor-version":[{"id":7019,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/7014\/revisions\/7019"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/7015"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=7014"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=7014"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=7014"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}