{"id":7142,"date":"2023-12-15T10:19:56","date_gmt":"2023-12-15T09:19:56","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=7142"},"modified":"2024-01-25T13:40:57","modified_gmt":"2024-01-25T12:40:57","slug":"maquina-arcade","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/","title":{"rendered":"M\u00e1quina Arcade"},"content":{"rendered":"\n<p>Por:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Diego Gil Luengo<\/li>\n\n\n\n<li>Nerea Gonzalez Mogeda<\/li>\n\n\n\n<li>Daniel Briones Bruna<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p>El proyecto consiste en la creaci\u00f3n de una m\u00e1quina arcade sencilla como imitaci\u00f3n de una real.<br>El software consiste en un men\u00fa de selecci\u00f3n de juegos. Estos son: 2048, Minesweeper (Buscaminsas) y Match 3 (3 en raya).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Componentes<\/h2>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Nombre<\/strong><\/td><td><strong>Detalles<\/strong><\/td><td><strong>Unidades<\/strong><\/td><td><strong>Precio Individual<\/strong><\/td><td><strong>Precio Total<\/strong><\/td><\/tr><tr><td>Arduino UNO<\/td><td>&#8211;<\/td><td>1<\/td><td>&#8211;<\/td><td>&#8211;<\/td><\/tr><tr><td>Resistencias<\/td><td>&#8211;<\/td><td>17<\/td><td>&#8211;<\/td><td>&#8211;<\/td><\/tr><tr><td>Placa Protoboard<\/td><td>170 ptos<\/td><td>2<\/td><td>5 euros<\/td><td>5 euros<\/td><\/tr><tr><td>Pantalla HiLetgo 2.8&#8243; ILI9341 TFT LCD<\/td><td>ILI9341 240*320 p\u00edxeles<\/td><td>1<\/td><td>16 euros<\/td><td>16 euros<\/td><\/tr><tr><td>Botones RUNCCI-YUN <\/td><td>Botones m\u00e1s personalizados para m\u00e1s comodidadd<\/td><td>6<\/td><td>0.10 euros<\/td><td>0.60 euros<\/td><\/tr><tr><td>Cables M\/M M\/H<\/td><td>&#8211;<\/td><td>26<\/td><td>0.26<\/td><td>2.6 euros<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Desarollo y obst\u00e1culos de la pr\u00e1ctica<\/h2>\n\n\n\n<p>Para poder realizar este proyecto el obst\u00e1culo principal fue la pantalla y sus limitaciones. Esta actualiza los p\u00edxeles desde la esquina superior izquierda a la inferior derecha. Los juegos disponibles estaban limitados a juegos por turnos u otros m\u00e1s complejos de la generaci\u00f3n de las consolas de Atari.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"200\" data-id=\"7406\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/15997356-pac-man-atari-2600-a-game-in-progress.png\" alt=\"\" class=\"wp-image-7406\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/15997356-pac-man-atari-2600-a-game-in-progress.png 320w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/15997356-pac-man-atari-2600-a-game-in-progress-300x188.png 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"380\" data-id=\"7407\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/s_ET_4.png\" alt=\"\" class=\"wp-image-7407\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/s_ET_4.png 640w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/s_ET_4-300x178.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Sobre el control del dispositivo, sigue los patrones evolutivos de las m\u00e1quinas arcade. Las arcade tienen un contr\u00f3l \u00fanico por m\u00e1quina ya que solo deben reproducir un \u00fanico juego. Las consolas comerciales solventan este problema consolidando un control gen\u00e9rico que abarque la mayor cantidad de juegos. Este patr\u00f3n se aplica en el mando del proyecto con limitaciones en la disposici\u00f3n de los botones por la protoboard.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"450\" data-id=\"7408\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/049590fc7d9c12243f18e70eb0818fa2.jpg\" alt=\"\" class=\"wp-image-7408\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/049590fc7d9c12243f18e70eb0818fa2.jpg 600w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/049590fc7d9c12243f18e70eb0818fa2-300x225.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-id=\"7409\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/CP-Completed-Closeup-1024x576.jpg\" alt=\"\" class=\"wp-image-7409\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/CP-Completed-Closeup-1024x576.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/CP-Completed-Closeup-300x169.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/CP-Completed-Closeup-768x432.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/CP-Completed-Closeup-1536x864.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/CP-Completed-Closeup.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"894\" height=\"570\" data-id=\"7410\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/71HHaY4f6bL._AC_UF8941000_QL80_.jpg\" alt=\"\" class=\"wp-image-7410\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/71HHaY4f6bL._AC_UF8941000_QL80_.jpg 894w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/71HHaY4f6bL._AC_UF8941000_QL80_-300x191.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/71HHaY4f6bL._AC_UF8941000_QL80_-768x490.jpg 768w\" sizes=\"auto, (max-width: 894px) 100vw, 894px\" \/><\/figure>\n<\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1001\" height=\"1001\" data-id=\"7412\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/61kbZT52U1L.jpg\" alt=\"\" class=\"wp-image-7412\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/61kbZT52U1L.jpg 1001w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/61kbZT52U1L-300x300.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/61kbZT52U1L-150x150.jpg 150w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/61kbZT52U1L-768x768.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/61kbZT52U1L-80x80.jpg 80w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/61kbZT52U1L-320x320.jpg 320w\" sizes=\"auto, (max-width: 1001px) 100vw, 1001px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"743\" data-id=\"7411\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/817PDHqYaaL-1024x743.jpg\" alt=\"\" class=\"wp-image-7411\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/817PDHqYaaL-1024x743.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/817PDHqYaaL-300x218.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/817PDHqYaaL-768x557.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/817PDHqYaaL-1536x1115.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/817PDHqYaaL-2048x1486.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div><\/figure>\n\n\n\n<p>La memoria total de Arduino Uno es de 32KBytes. Se usa un 97% de la memoria total. Gracias a ciertos sacrificios de fidelidad y c\u00f3digo de menor eficiente en cuanto a su tama\u00f1o, se ha evitado incrementar el precio del prototipo con expansiones de memoria. Una de las propuestas para el proyecto una vez encontrado el problema de la memoria fue la posibilidad de cargar juegos al conectarlo a una memoria externa pero se descarto por temas de coste y complejidad.<br><br>En el 2048 al principio fue dificil definir c\u00f3mo \u00edbamos a implementar el programa ya que hubo varias ideas diferentes mucho m\u00e1s complejas de lo que este deb\u00eda de ser. Poco a poco, funci\u00f3n por funci\u00f3n fuimos definiendo qu\u00e9 funcionalidades ser\u00edan m\u00e1s importantes para el programa. Cuanto m\u00e1s desarrollamos estas, fuimos encontrando maneras m\u00e1s simplificadas hasta que desaparecieron los errores.<br><br>Al realizar el 3 en raya tuvimos que decidir como se iba a llevara cabo el cambio de turnos. En un principio pensamos hacerlo como un juego de un \u00fanico jugador de forma que deber\u00edamos implementar una inteligencia artificial. Al final decidimos hacerlo de dos jugadores ya que, por falta de espacio, la inteligencia artificial resultaba muy costosa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00eddeo de demostraci\u00f3n<\/h2>\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=\"Consola arcade\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/ZkoiCFYNv4c?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\n\n\n<h2 class=\"wp-block-heading\">Diagrama del circuito<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/circuito-4-1024x576.png\" alt=\"\" class=\"wp-image-7403\" style=\"width:1004px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/circuito-4-1024x576.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/circuito-4-300x169.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/circuito-4-768x432.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/circuito-4.png 1500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1440\" data-id=\"7382\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_184935-3-edited-1-scaled.jpg\" alt=\"\" class=\"wp-image-7382\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_184935-3-edited-1-scaled.jpg 2560w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_184935-3-edited-1-300x169.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_184935-3-edited-1-1024x576.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_184935-3-edited-1-768x432.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_184935-3-edited-1-1536x864.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_184935-3-edited-1-2048x1152.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-id=\"7379\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190208-1-1024x576.jpg\" alt=\"\" class=\"wp-image-7379\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190208-1-1024x576.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190208-1-300x169.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190208-1-768x432.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190208-1-1536x864.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190208-1-2048x1152.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"575\" data-id=\"7396\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.17-1024x575.jpeg\" alt=\"\" class=\"wp-image-7396\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.17-1024x575.jpeg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.17-300x169.jpeg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.17-768x432.jpeg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.17-1536x863.jpeg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.17.jpeg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"575\" data-id=\"7395\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.08-1024x575.jpeg\" alt=\"\" class=\"wp-image-7395\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.08-1024x575.jpeg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.08-300x169.jpeg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.08-768x432.jpeg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.08-1536x863.jpeg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/WhatsApp-Image-2023-12-03-at-11.39.08.jpeg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Adafruit<\/h2>\n\n\n\n<p>La pantalla usada es modelo ILI9341. Exsiste una libreria por Adafruit para este modelo de pantalla que se ha usado para comunicarse con la pantalla.<br><br>Se utiliza un sistema de coordenadas que inicia en la esquina superior derecha. Esta puede cambiar con la funci\u00f3n de orientaci\u00f3n de adafruit.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library1-1024x683.png\" alt=\"\" class=\"wp-image-7389\" style=\"width:637px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library1-1024x683.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library1-300x200.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library1-768x512.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library1-1536x1024.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library1-2048x1366.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>El sistema de color es RGB565 de 16 bits con preferencia al color verde.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"256\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library3-1024x256.png\" alt=\"\" class=\"wp-image-7390\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library3-1024x256.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library3-300x75.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library3-768x192.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library3-1536x385.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library3-2048x513.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Funciones de distintas formas:<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-6 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-id=\"7384\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library2-1024x683.png\" alt=\"\" class=\"wp-image-7384\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library2-1024x683.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library2-300x200.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library2-768x512.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library2-1536x1024.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library2-2048x1366.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-id=\"7388\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library4-1024x683.png\" alt=\"\" class=\"wp-image-7388\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library4-1024x683.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library4-300x200.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library4-768x512.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library4-1536x1024.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library4-2048x1365.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-id=\"7385\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library5-1024x683.png\" alt=\"\" class=\"wp-image-7385\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library5-1024x683.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library5-300x200.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library5-768x512.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library5-1536x1024.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library5-2048x1366.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-id=\"7383\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library6-1024x683.png\" alt=\"\" class=\"wp-image-7383\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library6-1024x683.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library6-300x200.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library6-768x512.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library6-1536x1024.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library6-2048x1366.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-id=\"7386\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library7-1024x683.png\" alt=\"\" class=\"wp-image-7386\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library7-1024x683.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library7-300x200.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library7-768x512.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library7-1536x1024.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library7-2048x1366.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-id=\"7387\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library8-1024x683.png\" alt=\"\" class=\"wp-image-7387\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library8-1024x683.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library8-300x200.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library8-768x512.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library8-1536x1024.png 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/adafruit-gfx-graphics-library8-2048x1366.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n de maqueta<\/h2>\n\n\n\n<p>Para este proyecto necesit\u00e1bamos crear la propia m\u00e1quina arcade d\u00f3nde se encuentra la pantalla y el mando que sale de la m\u00e1quina con los seis botones correspondientes.<\/p>\n\n\n\n<p>Lo primero que se hizo fue hacer un boceto de la idea que ten\u00edamos para la m\u00e1quina.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"657\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/Mesa-de-trabajo-1-1.png\" alt=\"\" class=\"wp-image-7261\" style=\"width:274px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/Mesa-de-trabajo-1-1.png 560w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/Mesa-de-trabajo-1-1-256x300.png 256w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/figure>\n<\/div>\n\n\n<p>Una vez establecida la idea general se crearon unos planos para ambas cajas. Estos planos no ten\u00edan los agujeros para los botones, la pantalla ni la salida de los cables. Estos huecos se recortar\u00eda directamente sobre el prototipo.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"674\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/plano-1024x674.jpg\" alt=\"\" class=\"wp-image-7398\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/plano-1024x674.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/plano-300x197.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/plano-768x506.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/plano-1536x1011.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/plano.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"857\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-16-1024x857.png\" alt=\"\" class=\"wp-image-7259\" style=\"width:479px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-16-1024x857.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-16-300x251.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-16-768x643.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-16.png 1098w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Finalmente se utiliz\u00f3 un cart\u00f3n m\u00e1s fino para el mando y uno m\u00e1s resistente y grueso para la caja. Ambas piezas se pintaron de negro y se le a\u00f1adieron el logo de la m\u00e1quina y etiquetas a los botones con el fin de que quedase m\u00e1s est\u00e9tico.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-7 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-id=\"7374\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-768x1024.jpg\" alt=\"\" class=\"wp-image-7374\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-1536x2048.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-8 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-id=\"7377\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_185947-1-1024x576.jpg\" alt=\"\" class=\"wp-image-7377\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_185947-1-1024x576.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_185947-1-300x169.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_185947-1-768x432.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_185947-1-1536x864.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_185947-1-2048x1152.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-id=\"7376\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190006-2-1024x576.jpg\" alt=\"\" class=\"wp-image-7376\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190006-2-1024x576.jpg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190006-2-300x169.jpg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190006-2-768x432.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190006-2-1536x864.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190006-2-2048x1152.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Explicaci\u00f3n de c\u00f3digo<\/h2>\n\n\n\n<p>Para agilizar el desarrollo del software se dividi\u00f3 la carga de trabajo por segmentos. Estos son los juegos y los menus que los conectan entre si.<br><br>La funci\u00f3n setup() inicializa la pantalla y loop() reproduce el selector de juegos de forma indefinida.<br><br>Para ahorrar memoria se generaron una serie de funciones comunes para todos los juegos relacionados con la generaci\u00f3n de texto y men\u00fas.<br><br>El programa se comunica entre sus distintos segmentos de la siguiente forma:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"932\" height=\"834\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/MenuDiagram-1.png\" alt=\"\" class=\"wp-image-7368\" style=\"width:736px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/MenuDiagram-1.png 932w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/MenuDiagram-1-300x268.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/MenuDiagram-1-768x687.png 768w\" sizes=\"auto, (max-width: 932px) 100vw, 932px\" \/><\/figure>\n<\/div>\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/Dogo314\/GameArcade\/blob\/main\/screenTest.ino\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a><\/div>\n<\/div>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Interfaz y men\u00fas &#8211; Diego<\/summary>\n<p>Para solventar el acceso entre los distintos juegos se prepar\u00f3 una interfaz con las funciones necesarias para navegar entre ellos. Al iniciar el programa, se muestra una pantalla inicial con el logotipo de la arcade para dar a entender que toda la circuiter\u00eda relacionada con la pantalla funciona correctamente.<br><br>Despu\u00e9s, se muestra una pantalla de selecci\u00f3n din\u00e1mica (ajusta su tama\u00f1o seg\u00fan el n\u00famero de juegos) de los juegos en memoria. Permite seleccionar entre ellos gracias a una flecha que indica donde permanece el enfoque.<br><br>Dentro de los juegos, el contenido de los mismos ocupa un espacio cuadrado en el centro de la pantalla. El margen superio se usa para titular el juego actual y mostrar los comandos de confirmaci\u00f3n de escape y terminaci\u00f3n de cada juego y el margen inferior se usa para mostrar informaci\u00f3n relacionada a cada juego.<br><br>La memoria ocupada supone un 95% de la memoria total. Para ahorrar al m\u00e1ximo los bytes disponibles, se crearon distintas funciones comunes gen\u00e9ricas a las que recurrir como text() o endGamePromt(). Como se trabaj\u00f3 de forma independiente en cada programa, si no se hubisen consolidad estas funciones acabar\u00edan triplicadas a lo largo del todo el programa.<br><br>Las funciones setup y loop son las siguientes<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void setup() {\n  Serial.begin(9600);\n  pinMode(TFT_LED, OUTPUT);\n  digitalWrite(TFT_LED, HIGH);\n  tft.begin();\n  tft.setRotation(0);  \/\/Vertical con los pines abajo\n  tft.fillScreen(ILI9341_BLACK);\n\n  pinMode(BUTTON_A, INPUT);\n  pinMode(BUTTON_B, INPUT);\n  pinMode(BUTTON_RIGHT, INPUT);\n  pinMode(BUTTON_LEFT, INPUT);\n\n  width = tft.width();\n  height = tft.height();\n\n  randomSeed(analogRead(A0));\n  startupScreen();\n}\n\nvoid loop() {\n\n  newScreen();\n  int chosenGame = 0;\n  String gameNames&#091;] = { \"ms\", \"2048\", \"match3\" };\n\n  chosenGame = startScreen(gameNames, 3);\n  Serial.println(chosenGame);\n  if(chosenGame == 1) {\n    newScreen();\n    headerText(\"Minesweeper\");\n    while(minesweeper()){\n\n    }\n\n  } else if(chosenGame == 2) {\n    newScreen();\n    headerText(\"2048\");\n    ini2048();\n  } else if(chosenGame == 3) {\n    newScreen();\n    headerText(\"Match 3\");\n    playGame3in3();\n  }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Las funciones comunes que usan todos los juegos son las siguientes:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>void text(String text, int16_t cursorX, int16_t cursorY, uint16_t color, uint8_t size, boolean textWrap) {\n  tft.setCursor(cursorX, cursorY);\n  tft.setTextColor(color);\n  tft.setTextSize(size);\n  tft.setTextWrap(textWrap);\n  tft.print(text);\n}\n\nvoid headerText(String text1) {\n  tft.fillRect(0, 0, width, YDISTANCE, ILI9341_BLACK);\n  text(text1, 10, 5, ILI9341_WHITE, 2, true);\n}\n\nvoid bottomText(String text1) {\n  tft.fillRect(0, YDISTANCE + width, width, YDISTANCE, ILI9341_BLACK);\n  text(text1, 10, 5 + YDISTANCE + width, ILI9341_WHITE, 2, true);\n}\n\nboolean endGamePrompt(String gameName) {\n  headerText(\"Finished!\");\n  delay(1000);\n  headerText(\"A-Retry\/\/B-Exit\");\n  return checkRetry(gameName);\n}\n\nboolean endGamePromptBoolean(bool win, String gameName) {\n  if(win){\n    headerText(\"You Won!\");\n  } else {\n    headerText(\"Game Over\");\n  }\n  delay(1000);\n  headerText(\"A-Retry\/\/B-Exit\");\n  return checkRetry(gameName);\n}\n\nboolean endGamePrompt2P(bool winP1, String gameName) {\n  if(winP1){\n    headerText(\"Player 1 wins!\");\n  } else {\n    headerText(\"Player 2 wins!\");\n  }\n  delay(1000);\n  headerText(\"A-Retry\/\/B-Exit\");\n  return checkRetry(gameName);\n}\n\nboolean exitGamePrompt(String gameName) {\n  headerText(\"A-Exit\/\/B-Back\");\n  boolean selected = false;\n  while(!selected) {\n    if (digitalRead(BUTTON_A) == HIGH) {\n      selected = true;\n      return true;\n    } else if (digitalRead(BUTTON_B) == HIGH) {\n      selected = true;\n      headerText(gameName);\n      return false;\n    }\n  }\n}\n\nboolean checkRetry(String gameName) {\n  boolean selected = false;\n  while(!selected) {\n    if (digitalRead(BUTTON_A) == HIGH) {\n      selected = true;\n      tft.fillRect(0, YDISTANCE, width, width + YDISTANCE, ILI9341_BLACK);\n      headerText(gameName);\n      return true;\n    } else if (digitalRead(BUTTON_B) == HIGH) {\n      selected = true;\n      return false;\n    }\n  }\n}<\/code><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"880\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/vlcsnap-2023-12-15-11h27m18s788.png\" alt=\"\" class=\"wp-image-7401\" style=\"width:298px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/vlcsnap-2023-12-15-11h27m18s788.png 480w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/vlcsnap-2023-12-15-11h27m18s788-164x300.png 164w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/figure>\n<\/div><\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Tres en raya &#8211; Nerea<\/summary>\n<p>La funci\u00f3n encargada de contener este juego es playGame3in3. Tiene como variables la matriz con las X o los O, el jugador que est\u00e1 jugando (1 o 2), la posici\u00f3n del cursor tanto en X como en Y y un boolean para controlar el cambio de turno entre los dos jugadores. Lo primero que har\u00e1 ser\u00e1 inicializar la matriz y pintar el tablero. <\/p>\n\n\n\n<p>Los turnos del juego se encierran en un bucle que se ejecutar\u00e1 hasta alcanzar la condici\u00f3n de gameOver. Para desplazarnos por el tablero se suman o restan a los contadores de la X y la Y dependiendo del bot\u00f3n pulsado y una vez seleccionamos la casilla con el bot\u00f3n A se comprueba si la osici\u00f3n es v\u00e1lida y en ese caso se a\u00f1adir\u00e1 a la matriz y se pintar\u00e1  la figura correspondiente al jugador. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"558\" height=\"864\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-3.png\" alt=\"\" class=\"wp-image-7242\" style=\"width:513px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-3.png 558w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-3-194x300.png 194w\" sizes=\"auto, (max-width: 558px) 100vw, 558px\" \/><\/figure>\n<\/div>\n\n\n<p>La funci\u00f3n encargada de contener este juego es playGame3in3. Tiene como variables la matriz con las X o los O, el jugador que est\u00e1 jugando (1 o 2), la posici\u00f3n del cursor tanto en X como en Y y un boolean para controlar el cambio de turno entre los dos jugadores. Lo primero que har\u00e1 ser\u00e1 inicializar la matriz y pintar el tablero. <\/p>\n\n\n\n<p>Los turnos del juego se encierran en un bucle que se ejecutar\u00e1 hasta alcanzar la condici\u00f3n de gameOver. Para desplazarnos por el tablero se suman o restan a los contadores de la X y la Y dependiendo del bot\u00f3n pulsado y una vez seleccionamos la casilla con el bot\u00f3n A se comprueba si la osici\u00f3n es v\u00e1lida y en ese caso se a\u00f1adir\u00e1 a la matriz y se pintar\u00e1  la figura correspondiente al jugador. <\/p>\n\n\n\n<p>La matriz se inicializa a valores vac\u00edos en la funci\u00f3n iniciarGRID. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"609\" height=\"155\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-4.png\" alt=\"\" class=\"wp-image-7243\" style=\"width:672px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-4.png 609w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-4-300x76.png 300w\" sizes=\"auto, (max-width: 609px) 100vw, 609px\" \/><\/figure>\n<\/div>\n\n\n<p>El tablero se pinta con drawGrid. Esta funci\u00f3n trabaja con los m\u00e1rgenes preestablecidos como variables constantes y dibuja l\u00edneas con la funci\u00f3n propia de la librer\u00eda <em>Adafruit_ILI9341<\/em> drawFast(H\/V)Line.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"817\" height=\"426\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-5.png\" alt=\"\" class=\"wp-image-7244\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-5.png 817w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-5-300x156.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-5-768x400.png 768w\" sizes=\"auto, (max-width: 817px) 100vw, 817px\" \/><\/figure>\n<\/div>\n\n\n<p>Para indicarle al jugador la casilla sobre la que se encuentra se llama a la funci\u00f3n drawCursor que pinta un recuadro interior en la celda correspondiente.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"942\" height=\"79\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-6.png\" alt=\"\" class=\"wp-image-7246\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-6.png 942w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-6-300x25.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-6-768x64.png 768w\" sizes=\"auto, (max-width: 942px) 100vw, 942px\" \/><\/figure>\n<\/div>\n\n\n<p>Cuando se selecciona una casilla se comprueba que la casilla est\u00e1 vac\u00eda y est\u00e1 dentro de los l\u00edmites de la cuadr\u00edcula con isValidMove. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"966\" height=\"77\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-1.png\" alt=\"\" class=\"wp-image-7240\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-1.png 966w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-1-300x24.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-1-768x61.png 768w\" sizes=\"auto, (max-width: 966px) 100vw, 966px\" \/><\/figure>\n\n\n\n<p>Cada vez que se a\u00f1ade a la matriz una ficha se llama a la funci\u00f3n updateSquare que es la encargada de pintar las figuras centradas en la casilla en la que se encuentra el cursor.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"978\" height=\"199\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-10.png\" alt=\"\" class=\"wp-image-7250\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-10.png 978w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-10-300x61.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-10-768x156.png 768w\" sizes=\"auto, (max-width: 978px) 100vw, 978px\" \/><\/figure>\n<\/div>\n\n\n<p>Constantemente se comprueba si el juego ha llegado a su fin mediante la funci\u00f3n gameOver que a su vez llama a checkWinner y boardFull.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"617\" height=\"150\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-7.png\" alt=\"\" class=\"wp-image-7247\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-7.png 617w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-7-300x73.png 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/figure>\n<\/div>\n\n\n<p>checkWinner comprueba si  alguno de los dos jugadores ha ganado. Esto ocurrir\u00e1 si hay una fila o una columna o  alguna de las dos diagonales con todo X o O. Devuelve 1 si gana el jugador 1 y 2 si gana el jugador dos. Si ninguno de los dos gana devuelve un 0.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"826\" height=\"706\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-8.png\" alt=\"\" class=\"wp-image-7248\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-8.png 826w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-8-300x256.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-8-768x656.png 768w\" sizes=\"auto, (max-width: 826px) 100vw, 826px\" \/><\/figure>\n<\/div>\n\n\n<p>boardFull comprueba si el tablero est\u00e1 lleno y para ello recorre toda la matriz comprobando los vac\u00edos.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"202\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-9.png\" alt=\"\" class=\"wp-image-7249\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-9.png 696w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-9-300x87.png 300w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_192114-1-768x1024.jpg\" alt=\"\" class=\"wp-image-7369\" style=\"width:635px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_192114-1-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_192114-1-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_192114-1-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_192114-1-1536x2048.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_192114-1-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/div><\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>2048 &#8211; Daniel<\/summary>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"951\" height=\"495\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-14_142526911.png\" alt=\"\" class=\"wp-image-7304\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-14_142526911.png 951w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-14_142526911-300x156.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-14_142526911-768x400.png 768w\" sizes=\"auto, (max-width: 951px) 100vw, 951px\" \/><\/figure>\n\n\n\n<p>La funci\u00f3n ini2048 es el setup de el 2048. En este se inicializa la pantalla con sus colores, se crea la matriz y se a\u00f1aden dos nuevos cuadrados iniciales en posiciones aleatorias  con la funci\u00f3n random (la semilla ya fue inicializada en el setup del menu). Adem\u00e1s, usaremos las funciones dibujarCuadrado e imprimirMatriz (que explicamos a continuaci\u00f3n) para mostrar la matriz inicial por pantalla.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"919\" height=\"165\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-18.png\" alt=\"\" class=\"wp-image-7305\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-18.png 919w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-18-300x54.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-18-768x138.png 768w\" sizes=\"auto, (max-width: 919px) 100vw, 919px\" \/><\/figure>\n\n\n\n<p>La funci\u00f3n imprimirMatriz simplemente se dedicar\u00e1 a hacer uso de la funci\u00f3n dibujarCuadrado para imprimir cada uno de los cuadrados de la matriz diferentes de 0.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"747\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-19-1024x747.png\" alt=\"\" class=\"wp-image-7306\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-19-1024x747.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-19-300x219.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-19-768x560.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-19.png 1145w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>La funci\u00f3n dibujarCuadrado anteriormente estaba implementada con if else pero supusimos que usar un switch har\u00eda la comprobaci\u00f3n m\u00e1s r\u00e1pida aunque supusiera hacer un c\u00f3digo m\u00e1s extenso. Como se puede ver, la funci\u00f3n usa tft.fillRect (una funci\u00f3n perteneciente a este tipo de pantallas) para dibujar el cuadrado con el color y tama\u00f1o correspondiente. Adem\u00e1s, se hace uso de la funci\u00f3n text explicada m\u00e1s arriba para escribir el n\u00famero de cada cuadrado. TAMANOCUAD es la variable global que utiliza el ancho y largo de la pantalla para calcular el tama\u00f1o de los cuadrados.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"678\" height=\"219\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-12_214644475.png\" alt=\"\" class=\"wp-image-7232\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-12_214644475.png 678w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-12_214644475-300x97.png 300w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/figure>\n\n\n\n<p>nuevoCuadAleatorio: la funci\u00f3n crea un nuevo cuadrado en uno de los huecos libres. Cada vez que se realiza un movimiento se llama a esta funci\u00f3n y crea un nuevo cuadrado si es posible. Este hace uso de la funci\u00f3n seleccionarHuecoLibre para encontrar donde puede crear uno nuevo. Si esta devuelve -1, significa que la matriz est\u00e1 llena y no se puede crear uno nuevo. En caso contrario rellena el hueco obtenido en la funci\u00f3n. Se ha hecho un random del 1 al 5 para que haya una peque\u00f1a probabilidad de que al crearlo sea un 4 en vez de un 2. La fila y columna es solo la traducci\u00f3n del valor obtenido en la funci\u00f3n que explicamos a continuaci\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"951\" height=\"483\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-12_214530350.png\" alt=\"\" class=\"wp-image-7231\" style=\"width:847px;height:auto\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-12_214530350.png 951w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-12_214530350-300x152.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/imagen_2023-12-12_214530350-768x390.png 768w\" sizes=\"auto, (max-width: 951px) 100vw, 951px\" \/><\/figure>\n\n\n\n<p>seleccionarHuecoLibre: recibe la matriz con los valores de los diferentes cuadrados. Mediante el bucle presentado se va comprobando cada posici\u00f3n de la matriz para descubrir si esta vac\u00eda, o de otra manera escrito, su valor es 0. Cada posici\u00f3n que guardemos lo haremos de la siguiente manera: multiplicaremos el valor de la fila por el numero de filas total y le sumaremos la colmuna para luego m\u00e1s tarde poder \u00abdesmenuzarlo\u00bb en la funci\u00f3n nuevoCuadAleatorio. Adem\u00e1s aumentaremos el valor de cantidadHuecosLibres para saber cuantos huecos hemos encontrado en total. Finalmente, el \u00faltimo if, sirve para elegir una posici\u00f3n aleatoria entre todas las que hemos encontrado (si hemos encontrado alguna).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"716\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-20-1024x716.png\" alt=\"\" class=\"wp-image-7308\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-20-1024x716.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-20-300x210.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-20-768x537.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-20.png 1185w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>A partir de aqu\u00ed tenemos el loop que hemos implementado con un while y una variable endGame para terminar el bucle cuando se llegue a 2048 o se quede el jugador sin movimientos. Por cada iteraci\u00f3n del bucle se har\u00e1 lo siguiente: Primero, comprobar si se puede realizar alg\u00fan movimiento hacia alg\u00fan lado usando la funci\u00f3n checkColsFils. Si no es posible ning\u00fan movimiento, el juego termina y volvemos al men\u00fa. En caso contrario, comprobamos si hay alg\u00fan bot\u00f3n siendo presionado (en este caso vamos a explicar si el bot\u00f3n de arriba es el presionado). Si es as\u00ed, comprobamos si era posible moverse en esa direcci\u00f3ny en caso afirmativo entramos en la condici\u00f3n. A partir de aqu\u00ed, con el bucle iremos columna por columna por cada fila comprobando primero si se pueden sumar dos cuadrados o si se puede mover un cuadrado porque hay un hueco. En caso de que haya un hueco y movamos los cuadrados, deberemos volver una iteraci\u00f3n atr\u00e1s para comprobar si podemos hacer algo con ese cuadrado. Finalmente despu\u00e9s de comprobar todo, a\u00f1adiremos un nuevo cuadrado e imprimiremos de nuevo la matriz. Las siguientes imagenes es para los dem\u00e1s botones que funcionan de la misma manera pero en diferentes direcciones:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"466\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-21-1024x466.png\" alt=\"\" class=\"wp-image-7309\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-21-1024x466.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-21-300x136.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-21-768x349.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-21.png 1405w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>&#8211;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"481\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-22-1024x481.png\" alt=\"\" class=\"wp-image-7310\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-22-1024x481.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-22-300x141.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-22-768x361.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-22-520x245.png 520w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-22.png 1344w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>&#8211;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-23-1024x429.png\" alt=\"\" class=\"wp-image-7311\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-23-1024x429.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-23-300x126.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-23-768x322.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-23.png 1444w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>&#8211;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"730\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-25-1024x730.png\" alt=\"\" class=\"wp-image-7315\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-25-1024x730.png 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-25-300x214.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-25-768x548.png 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-25.png 1099w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"121\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/image-24.png\" alt=\"\" class=\"wp-image-7314\" \/><\/figure>\n\n\n\n<p>checkColsFils: sirve para comprobar en cada turno si es posible hacer un movimiento cuando se pulsa un boton. Seg\u00fan el bot\u00f3n que se pulse se comprueba en una direcci\u00f3n u otra seg\u00fan los par\u00e1metros. Adem\u00e1s hay una funcionalidad a\u00f1adida para cuando los par\u00e1metros son 0, 0 que comprueba en la matriz si hemos conseguido llegar a 2048.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-9 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-id=\"7372\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191209-2-768x1024.jpg\" alt=\"\" class=\"wp-image-7372\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191209-2-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191209-2-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191209-2-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191209-2-1536x2048.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191209-2-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"794\" height=\"1024\" data-id=\"7371\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191740-1-794x1024.jpg\" alt=\"\" class=\"wp-image-7371\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191740-1-794x1024.jpg 794w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191740-1-233x300.jpg 233w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191740-1-768x990.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191740-1-1191x1536.jpg 1191w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191740-1-1588x2048.jpg 1588w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191740-1-scaled.jpg 1985w\" sizes=\"auto, (max-width: 794px) 100vw, 794px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"731\" height=\"924\" data-id=\"7370\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/20481-1.jpg\" alt=\"\" class=\"wp-image-7370\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/20481-1.jpg 731w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/20481-1-237x300.jpg 237w\" sizes=\"auto, (max-width: 731px) 100vw, 731px\" \/><\/figure>\n<\/figure>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Minesweeper &#8211; Diego<\/summary>\n<p>Minesweeper o buscaminas perminte seleccionar el n\u00famero de minas (1-9) en el tablero. Los visuales tienen el objetivo de replicar el dise\u00f1o del original y su comportamiento es casi igual.<br>La diferencia principal al original es el comportamiento al seleccionar una casilla vac\u00eda, que revela las adyacentes en vez de todas las vac\u00edas de su grupo por limitaciones de memoria.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-10 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-id=\"7365\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191039-1-768x1024.jpg\" alt=\"\" class=\"wp-image-7365\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191039-1-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191039-1-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191039-1-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191039-1-1536x2048.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191039-1-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-id=\"7367\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191138-1-768x1024.jpg\" alt=\"\" class=\"wp-image-7367\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191138-1-768x1024.jpg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191138-1-225x300.jpg 225w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191138-1-1152x1536.jpg 1152w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191138-1-1536x2048.jpg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_191138-1-scaled.jpg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"210\" height=\"261\" data-id=\"7366\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/MSbeginner-2.png\" alt=\"\" class=\"wp-image-7366\" \/><\/figure>\n<\/figure>\n\n\n\n<p>El juego inicializa el tablero y lo imprime por pantalla. Continua con el bucle del juego esperando los comandos hasta llegar a un estado de finalizaci\u00f3n.<br>El c\u00f3digo relacionado con la impresi\u00f3n es din\u00e1mico. Puede aplicarse a otras pantallas con otra resoluci\u00f3n y se imprimir\u00e1 de forma esperada. La actualizaci\u00f3n de la pantalla es r\u00e1pida al actualizar \u00fanicamente un peque\u00f1o cuadrado de p\u00edxeles cada vez.<\/p>\n<\/details>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Por: Introducci\u00f3n El proyecto consiste en la creaci\u00f3n de una m\u00e1quina arcade sencilla como imitaci\u00f3n de una real.El software consiste en un men\u00fa de selecci\u00f3n de juegos. Estos son: 2048, Minesweeper (Buscaminsas) y Match&#46;&#46;&#46;<\/p>\n","protected":false},"author":8,"featured_media":7374,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-7142","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>M\u00e1quina Arcade - 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\/maquina-arcade\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"M\u00e1quina Arcade - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Por: Introducci\u00f3n El proyecto consiste en la creaci\u00f3n de una m\u00e1quina arcade sencilla como imitaci\u00f3n de una real.El software consiste en un men\u00fa de selecci\u00f3n de juegos. Estos son: 2048, Minesweeper (Buscaminsas) y Match&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-15T09:19:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-25T12:40:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"2560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"13 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\\\/maquina-arcade\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/\"},\"author\":{\"name\":\"gdhwsw2\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/7491e54afbe5e7fd53467fccb9c7ce44\"},\"headline\":\"M\u00e1quina Arcade\",\"datePublished\":\"2023-12-15T09:19:56+00:00\",\"dateModified\":\"2024-01-25T12:40:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/\"},\"wordCount\":2369,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/12\\\/IMG_20231214_190403-1-scaled.jpg\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/\",\"name\":\"M\u00e1quina Arcade - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/12\\\/IMG_20231214_190403-1-scaled.jpg\",\"datePublished\":\"2023-12-15T09:19:56+00:00\",\"dateModified\":\"2024-01-25T12:40:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/12\\\/IMG_20231214_190403-1-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2023\\\/12\\\/IMG_20231214_190403-1-scaled.jpg\",\"width\":1920,\"height\":2560},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/maquina-arcade\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"M\u00e1quina Arcade\"}]},{\"@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":"M\u00e1quina Arcade - 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\/maquina-arcade\/","og_locale":"es_ES","og_type":"article","og_title":"M\u00e1quina Arcade - Proyectos con Arduino.","og_description":"Por: Introducci\u00f3n El proyecto consiste en la creaci\u00f3n de una m\u00e1quina arcade sencilla como imitaci\u00f3n de una real.El software consiste en un men\u00fa de selecci\u00f3n de juegos. Estos son: 2048, Minesweeper (Buscaminsas) y Match&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2023-12-15T09:19:56+00:00","article_modified_time":"2024-01-25T12:40:57+00:00","og_image":[{"width":1920,"height":2560,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-scaled.jpg","type":"image\/jpeg"}],"author":"gdhwsw2","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"gdhwsw2","Tiempo de lectura":"13 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/"},"author":{"name":"gdhwsw2","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/7491e54afbe5e7fd53467fccb9c7ce44"},"headline":"M\u00e1quina Arcade","datePublished":"2023-12-15T09:19:56+00:00","dateModified":"2024-01-25T12:40:57+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/"},"wordCount":2369,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-scaled.jpg","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/","name":"M\u00e1quina Arcade - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-scaled.jpg","datePublished":"2023-12-15T09:19:56+00:00","dateModified":"2024-01-25T12:40:57+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-scaled.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2023\/12\/IMG_20231214_190403-1-scaled.jpg","width":1920,"height":2560},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/maquina-arcade\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"M\u00e1quina Arcade"}]},{"@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\/7142","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=7142"}],"version-history":[{"count":47,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/7142\/revisions"}],"predecessor-version":[{"id":7417,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/7142\/revisions\/7417"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/7374"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=7142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=7142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=7142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}