{"id":5278,"date":"2023-06-26T14:37:13","date_gmt":"2023-06-26T13:37:13","guid":{"rendered":"https:\/\/canaltic.com\/blog\/?p=5278"},"modified":"2023-06-26T17:07:51","modified_gmt":"2023-06-26T16:07:51","slug":"pensamiento-computacional-y-creacion-de-videojuegos","status":"publish","type":"post","link":"https:\/\/canaltic.com\/blog\/?p=5278","title":{"rendered":"Pensamiento Computacional y Creaci\u00f3n de Videojuegos"},"content":{"rendered":"<h2>El dise\u00f1o de videojuegos en el aula<\/h2>\n<p>En los \u00faltimos a\u00f1os los videojuegos se han convertido en una de las principales formas de ocupaci\u00f3n del tiempo de ocio de ni\u00f1os\/as, j\u00f3venes e incluso adultos. Su industria ha crecido enormemente superando en facturaci\u00f3n a la m\u00fasica y al cine. El impacto cultural de algunos t\u00edtulos de videojuegos resulta innegable hasta tal punto que algunas personas ya lo consideran el octavo arte.<\/p>\n<p>La motivaci\u00f3n del alumnado hacia el disfrute de estos recursos se puede aprovechar como motor para trabajar el Pensamiento Computacional en el aula. La iniciaci\u00f3n a la programaci\u00f3n de videojuegos puede resultar interesante para los estudiantes que se convierten en productores digitales superando su simple rol de consumidores.<\/p>\n<p>La experiencia educativa de fomentar el aprendizaje en Pensamiento Computacional bas\u00e1ndose en el dise\u00f1o de videojuegos puede hacerse desde Primaria utilizando herramientas visuales. La mayor\u00eda de alumnado se siente atra\u00eddo bien por el dise\u00f1o de escenarios y\/o personajes o bien por la programaci\u00f3n. Resulta muy atractiva la toma de decisiones sobre el aspecto del juego, sus escenarios y personajes, la narrativa, c\u00f3mo se consiguen los puntos, cu\u00e1ndo se pierde o se gana \u2026<\/p>\n<p>La pr\u00e1ctica cotidiana en esta l\u00ednea pone de manifiesto que al principio es habitual que el alumnado piense en dise\u00f1ar un juego con muchos requisitos emulando a los t\u00edtulos populares m\u00e1s conocidos. Sin embargo tambi\u00e9n es frecuente superar esta err\u00f3nea expectativa inicial recayendo en que los grandes videojuegos est\u00e1n creados por equipos multidisciplinares de numerosos profesionales y que al principio es una circunstancia que se escapa a nuestro alcance.<\/p>\n<p>Tras este inevitable aterrizaje el siguiente paso es convencerse de que con herramientas visuales, como por ejemplo <strong>Scratch<\/strong>, es posible el dise\u00f1o de interesantes y complejos videojuegos. Algunos piensan que Scratch es una herramienta muy sencilla para crear videojuegos de cierto nivel pero basta un breve recorrido por los <a href=\"https:\/\/scratch.mit.edu\/explore\/projects\/all\" target=\"_blank\" rel=\"noopener\"><strong>proyectos compartidos<\/strong><\/a> de la comunidad de scratchers para darse cuenta de su elevado potencial para la elaboraci\u00f3n de videojuegos muy sofisticados.<\/p>\n<p>Una vez superadas estas dos fases, se abre un mundo de posibilidades al aprendizaje del pensamiento computacional bas\u00e1ndose en el apasionante dise\u00f1o de videojuegos con Scratch. Durante este proceso se exponen conceptos y procedimientos relacionados con la creaci\u00f3n de juegos que les resultan familiares al alumnado porque los han disfrutado como usuarios y se trabajan algunos modelos b\u00e1sicos de juegos que les permiten adentrarse en este apasionante mundo del dise\u00f1o.<\/p>\n<p>En el dise\u00f1o y programaci\u00f3n de videojuegos ser\u00e1 necesario dominar y aplicar conocimientos de distintas \u00e1reas: matem\u00e1ticas, lengua castellana, ingl\u00e9s, m\u00fasica, ciencias, pl\u00e1stica \u2026 Precisamente explicitar estos aprendizajes constituir\u00e1 el anclaje curricular que justifica esta iniciativa en el entorno educativo.<\/p>\n<h2>Scratch para dise\u00f1ar videojuegos<\/h2>\n<p><a href=\"https:\/\/scratch.mit.edu\/\" target=\"_blank\" rel=\"noopener\"><strong>Scratch<\/strong><\/a> proporciona una herramienta de programaci\u00f3n visual muy potente para crear videojuegos. Sus caracter\u00edsticas permiten afrontar un ambicioso programa de aprendizaje de pensamiento computacional basado en el dise\u00f1o de distintos prototipos de videojuegos.<\/p>\n<p>En este art\u00edculo se expone una <strong>propuesta de contenidos<\/strong> centrada en la <strong>teor\u00eda del dise\u00f1o de videojuegos<\/strong> que se puede tomar como referencia para proponer distintos desaf\u00edos al alumnado as\u00ed como modelos de videojuegos susceptibles de customizaci\u00f3n.<\/p>\n<h2><strong>Sprites<\/strong><\/h2>\n<p>Son los personajes u objetos que situamos sobre el escenario. En Scratch es posible dibujar tus propios personajes o bien importarlos a partir de archivos gr\u00e1ficos en formato JPEG, GIF, PNG \u2026 Si se importa un GIF animado se crea un sprite con distintos disfraces, uno por cada estado del gif original.<\/p>\n<figure id=\"attachment_5319\" aria-describedby=\"caption-attachment-5319\" style=\"width: 640px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5319 size-large\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid001-1024x798.png\" alt=\"\" width=\"640\" height=\"499\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid001-1024x798.png 1024w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid001-300x234.png 300w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid001-768x598.png 768w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid001.png 1068w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption id=\"caption-attachment-5319\" class=\"wp-caption-text\">Imagen 01. Cat\u00e1logo de sprites de Scratch<\/figcaption><\/figure>\n<h2><strong>Animaci\u00f3n simple<\/strong><\/h2>\n<p>Una de las t\u00e9cnicas m\u00e1s utilizadas en los videojuegos es la animaci\u00f3n de sprites sobre el escenario. Se puede programar un movimiento simple de traslaci\u00f3n usando un bucle <strong>forever<\/strong> (por siempre) y un bloque <strong>move <\/strong>(mover) X pasos o p\u00edxeles.<\/p>\n<p><strong>\u00a0<\/strong>En ocasiones es necesario animar varios personajes u objetos a la vez y de forma independiente. Todos ellos pueden iniciar su movimiento al iniciarse el juego y cada uno ejecutar\u00e1 su propia secuencia de programaci\u00f3n y distintas del resto.<\/p>\n<figure id=\"attachment_5320\" aria-describedby=\"caption-attachment-5320\" style=\"width: 680px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5320 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid002.jpg\" alt=\"\" width=\"680\" height=\"212\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid002.jpg 680w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid002-300x94.jpg 300w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><figcaption id=\"caption-attachment-5320\" class=\"wp-caption-text\">Imagen 02. Animaci\u00f3n m\u00faltiple de sprites<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/317980114\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/317980114<\/a><\/u><\/p>\n<p>Los personajes que disponen de una secuencia animada de disfraces se pueden mostrar mediante una animaci\u00f3n en bucle usando el bloque <strong>next custome <\/strong>(siguiente disfraz). Esto transmite la sensaci\u00f3n de realidad consiguiendo que el avatar camine o vuele.<\/p>\n<figure id=\"attachment_5321\" aria-describedby=\"caption-attachment-5321\" style=\"width: 508px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5321 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid003.jpg\" alt=\"\" width=\"508\" height=\"153\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid003.jpg 508w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid003-300x90.jpg 300w\" sizes=\"auto, (max-width: 508px) 100vw, 508px\" \/><figcaption id=\"caption-attachment-5321\" class=\"wp-caption-text\">Imagen 03. Disfraces en secuencia animada del sprite bat<\/figcaption><\/figure>\n<h2><strong>Botones<\/strong><\/h2>\n<p>Un bot\u00f3n es un sprite sobre el cual es posible realizar un clic o un tap para desencadenar una acci\u00f3n. La acci\u00f3n puede ser mostrar iniciar una animaci\u00f3n, saltar a otra escena, aparecer\/desaparecer un objeto, reproducir un sonido, etc. Es posible dise\u00f1ar un bot\u00f3n que muestre distintos aspectos o estados gr\u00e1ficos en funci\u00f3n del evento que recibe: normal (reposo), over (sobre) y press (presionado).<\/p>\n<h2><strong>Audios<\/strong><\/h2>\n<p>Scratch contempla la posibilidad de integrar audios en un videojuego. MP3 es el formato de archivo de audio recomendado. Los bloques b\u00e1sicos que permiten controlar la reproducci\u00f3n del audio son:<strong> play sound \u2026 until done<\/strong> (reproducir sonido \u2026 hasta terminar), <strong>start sound \u2026 <\/strong>(iniciar sonido \u2026) y <strong>stop all sounds <\/strong>(detener todos los sonidos).<\/p>\n<p>El audio se puede reproducir como m\u00fasica de fondo o bien como sonido asociado a un evento (pulsaci\u00f3n de bot\u00f3n, colisi\u00f3n de sprites, di\u00e1logos \u2026)<\/p>\n<figure id=\"attachment_5322\" aria-describedby=\"caption-attachment-5322\" style=\"width: 611px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5322 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid004.jpg\" alt=\"\" width=\"611\" height=\"268\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid004.jpg 611w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid004-300x132.jpg 300w\" sizes=\"auto, (max-width: 611px) 100vw, 611px\" \/><figcaption id=\"caption-attachment-5322\" class=\"wp-caption-text\">Imagen 04.\u00a0 Script que reproduce un audio cuando se pulsa en el sprite \u201ccow\u201d<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318130720\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318130720<\/a><\/u><\/p>\n<h2><strong>Control del avatar<\/strong><\/h2>\n<p>Para controlar el movimiento del avatar en el escenario se pueden utilizar distintos medios:<\/p>\n<p><strong>Teclado<\/strong><\/p>\n<p>Se utiliza cuando el juego se juega en un ordenador PC usando las teclas de flechas. Se utilizan los bloques <strong>when \u2026 key pressed <\/strong>(al presionar tecla \u2026) para capturar los eventos de pulsaci\u00f3n de las teclas y programar el comportamiento del sprite en cada caso.<\/p>\n<figure id=\"attachment_5323\" aria-describedby=\"caption-attachment-5323\" style=\"width: 672px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5323 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid005.jpg\" alt=\"\" width=\"672\" height=\"284\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid005.jpg 672w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid005-300x127.jpg 300w\" sizes=\"auto, (max-width: 672px) 100vw, 672px\" \/><figcaption id=\"caption-attachment-5323\" class=\"wp-caption-text\">Imagen 05. Control de sprite mediante teclado<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318136520\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318136520<\/a><\/u><\/p>\n<p><strong>Rat\u00f3n<\/strong><\/p>\n<p>Al mover el puntero del rat\u00f3n sobre el escenario, el sprite lo seguir\u00e1 hasta acercarse a su posici\u00f3n. Es un medio que se puede utilizar en todo tipo de dispositivos. Se utiliza el bloque <strong>point towards mouse-pointer <\/strong>(apuntar en direcci\u00f3n puntero del rat\u00f3n) para orientar al sprite en la direcci\u00f3n del puntero del rat\u00f3n para moverse en su direcci\u00f3n X pasos.<\/p>\n<figure id=\"attachment_5324\" aria-describedby=\"caption-attachment-5324\" style=\"width: 544px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5324 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid006.jpg\" alt=\"\" width=\"544\" height=\"404\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid006.jpg 544w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid006-300x223.jpg 300w\" sizes=\"auto, (max-width: 544px) 100vw, 544px\" \/><figcaption id=\"caption-attachment-5324\" class=\"wp-caption-text\">Imagen 06. Control de sprite mediante rat\u00f3n<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318176221\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318176221<\/a><\/u><\/p>\n<p><strong>Botones en pantalla<\/strong><\/p>\n<p>El control del avatar mediante la pulsaci\u00f3n de sprites-botones situados en pantalla se utiliza cuando el videojuego se va a utilizar en un dispositivo m\u00f3vil que carece de teclado f\u00edsico. Para implementarlo en el bot\u00f3n se utiliza el bloque <strong>broadcast identificador <\/strong>(enviar identificador) que env\u00eda una se\u00f1al y en el avatar se utiliza el bloque <strong>when i received identificador <\/strong>(cuando recibo identificador) para ejecutar las acciones correspondientes cuando se recibe esa se\u00f1al.<\/p>\n<figure id=\"attachment_5325\" aria-describedby=\"caption-attachment-5325\" style=\"width: 694px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5325 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid007.jpg\" alt=\"\" width=\"694\" height=\"393\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid007.jpg 694w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid007-300x170.jpg 300w\" sizes=\"auto, (max-width: 694px) 100vw, 694px\" \/><figcaption id=\"caption-attachment-5325\" class=\"wp-caption-text\">Imagen 07. Control de avatar mediante botones en pantalla<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/327811840\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/327811840<\/a><\/u><\/p>\n<h2><strong>Escenas<\/strong><\/h2>\n<p>Las escenas son las pantallas en que se divide y organiza un videojuego. En Scratch cada escena tiene una imagen de fondo distinta.\u00a0 La secuencia de aparici\u00f3n de las escenas se programa desde la l\u00f3gica del juego permitiendo al usuario una navegaci\u00f3n secuencial entre ellas o bien saltar de una a otra en funci\u00f3n de sus logros.\u00a0 Los bloques b\u00e1sicos que permiten cambiar la imagen de fondo son: <strong>switch backdrop to ..<\/strong>. (cambiar fondo a \u2026) y <strong>next backdrop<\/strong> ( siguiente fondo)<\/p>\n<h2><strong>Variables<\/strong><\/h2>\n<p>Una variable es un espacio de memoria donde se almacena un valor (num\u00e9rico, cadena de texto, verdadero\/falso &#8230;). Consta de un identificador que permite referenciarla y utilizarlo para recuperar el valor que tiene almacenado.<\/p>\n<p>Las variables se suelen utilizar en los videojuegos para almacenar el n\u00famero de tentativas o de vidas, el marcador de puntos, etc.<\/p>\n<p>Para crear una variable:<\/p>\n<ol>\n<li>En el panel de bloques selecciona <strong>Variables<\/strong>.<\/li>\n<li>Clic en el bot\u00f3n Make a variable (Crear una variable)<\/li>\n<li>Introduce el nombre o identificador de la variable y pulsa en el bot\u00f3n Ok.<\/li>\n<\/ol>\n<p>Para eliminar una variable:<\/p>\n<ol>\n<li>Clic derecho sobre el bloque que muestra el nombre de la variable en el panel <strong>Variables<\/strong>.<\/li>\n<li>Elige Delete &#8230; variable (Borra la variable &#8230;)<\/li>\n<\/ol>\n<p>Los bloques b\u00e1sicos que permiten trabajar con las variables son: <strong>set variable to valor<\/strong> (define el valor de la variable a ..) y <strong>change variable by 1<\/strong> (incrementa el valor de la variable en 1).<\/p>\n<h2><strong>Clonaci\u00f3n de sprites<\/strong><\/h2>\n<p>La clonaci\u00f3n de sprites permite crear y configurar un sprite para luego generar tantas copias como sean necesario sobre el escenario mediante programaci\u00f3n en tiempo de ejecuci\u00f3n del programa. Este sistema facilita la creaci\u00f3n de una colecci\u00f3n de obst\u00e1culos, enemigos \u2026 en tiempo real.\u00a0 Los bloques que permiten gestionar los clones son:<\/p>\n<ul>\n<li><strong>when I start as a clone<\/strong> (cuando yo comienzo como clon). Se utiliza para programar el comportamiento aut\u00f3nomo de ese clon creado.<\/li>\n<li><strong>create clone of \u2026 <\/strong>(crear un clon de \u2026): permite crear un clon mediante programaci\u00f3n del sprite actual o de otro.<\/li>\n<li><strong>delete this clone<\/strong> (elimina este clon).<\/li>\n<\/ul>\n<figure id=\"attachment_5326\" aria-describedby=\"caption-attachment-5326\" style=\"width: 423px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5326 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid008.jpg\" alt=\"\" width=\"423\" height=\"323\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid008.jpg 423w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid008-300x229.jpg 300w\" sizes=\"auto, (max-width: 423px) 100vw, 423px\" \/><figcaption id=\"caption-attachment-5326\" class=\"wp-caption-text\">Imagen 08. Gesti\u00f3n de clones en un programa Scratch<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318219370\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318219370<\/a><\/u><\/p>\n<h2><strong>Aleatoriedad<\/strong><\/h2>\n<p>El bloque <strong>pick random<\/strong> (n\u00famero aleatorio) es un bloque que devuelve un valor num\u00e9rico de forma aleatoria dentro de un intervalo que se define. Es muy \u00fatil para introducir en el videojuego el principio de incertidumbre permitiendo comportamientos no predecibles de los sprites sobre el escenario: posiciones iniciales, trayectorias &#8230;<\/p>\n<figure id=\"attachment_5327\" aria-describedby=\"caption-attachment-5327\" style=\"width: 247px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-5327\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid009.jpg\" alt=\"\" width=\"247\" height=\"71\" \/><figcaption id=\"caption-attachment-5327\" class=\"wp-caption-text\">Imagen 09. Bloque aleatorio en Scratch<\/figcaption><\/figure>\n<p>Para programar la ubicaci\u00f3n aleatoria de un sprite sobre el escenario se puede utilizar el bloque <strong>go to random position <\/strong>(ir a posici\u00f3n aleatoria).<\/p>\n<figure id=\"attachment_5328\" aria-describedby=\"caption-attachment-5328\" style=\"width: 486px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5328 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid010.jpg\" alt=\"\" width=\"486\" height=\"223\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid010.jpg 486w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid010-300x138.jpg 300w\" sizes=\"auto, (max-width: 486px) 100vw, 486px\" \/><figcaption id=\"caption-attachment-5328\" class=\"wp-caption-text\">Imagen 10. Bloque go to random position<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318364653\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318364653<\/a><\/u><\/p>\n<p>Si deseamos implementar un movimiento aleatorio de un sprite \u201cpez\u201d a un lado y otro del escenario se puede utilizar la secuencia recogida en la imagen. El bloque <strong>pick random \u2026 to \u2026 <\/strong>es igual a un valor entonces genera un cambio de direcci\u00f3n de 180 grados.<\/p>\n<figure id=\"attachment_5329\" aria-describedby=\"caption-attachment-5329\" style=\"width: 539px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5329 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid011.jpg\" alt=\"\" width=\"539\" height=\"221\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid011.jpg 539w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid011-300x123.jpg 300w\" sizes=\"auto, (max-width: 539px) 100vw, 539px\" \/><figcaption id=\"caption-attachment-5329\" class=\"wp-caption-text\">Imagen 11. Secuencia de movimiento aleatorio de \u201cpez\u201d<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318355499\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318355499<\/a><\/u><\/p>\n<h2><strong>Funciones<\/strong><\/h2>\n<p>En Scratch las rutinas o secuencias de programaci\u00f3n que se repiten a menudo se pueden modularizar creando los <strong>bloques personalizados <\/strong>en la pesta\u00f1a <strong>My Blocks <\/strong>(Mis bloques). Cada bloque personalizado consta de un identificador o nombre, uno o varios par\u00e1metros opcionales que permiten introducir valores dentro de la ejecuci\u00f3n del bloque y una secuencia de bloques que componen el bloque personalizado y que se ejecutan de arriba hacia abajo. De esta forma es posible ejecutar esa secuencia de bloques simplemente con situar el bloque personalizado con su correspondiente identificador. Esta t\u00e9cnica simplifica la codificaci\u00f3n.<\/p>\n<figure id=\"attachment_5330\" aria-describedby=\"caption-attachment-5330\" style=\"width: 351px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5330 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid012.jpg\" alt=\"\" width=\"351\" height=\"194\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid012.jpg 351w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid012-300x166.jpg 300w\" sizes=\"auto, (max-width: 351px) 100vw, 351px\" \/><figcaption id=\"caption-attachment-5330\" class=\"wp-caption-text\">Imagen 12. Bloque personalizado en Scratch<\/figcaption><\/figure>\n<h2><strong>Perspectivas<\/strong><\/h2>\n<p>En los videojuegos 2D se suelen utilizar distintas perspectivas o puntos de vista. Cada una condiciona el tipo de movimientos que pueden realizar los personajes dentro del escenario.<\/p>\n<p><strong>Vista cenital<\/strong><\/p>\n<p>Es la vista desde arriba. El avatar se puede mover a la izquierda, derecha, arriba y abajo.<\/p>\n<figure id=\"attachment_5331\" aria-describedby=\"caption-attachment-5331\" style=\"width: 390px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5331 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid013.jpg\" alt=\"\" width=\"390\" height=\"293\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid013.jpg 390w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid013-300x225.jpg 300w\" sizes=\"auto, (max-width: 390px) 100vw, 390px\" \/><figcaption id=\"caption-attachment-5331\" class=\"wp-caption-text\">Imagen 13. Juego con perspectiva cenital<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318298154\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318298154<\/a><\/u><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>Vista lateral<\/strong><\/p>\n<p>Es la vista de perfil. Es la perspectiva t\u00edpica de los juegos de plataforma como por ejemplo Super Mario Bros.<\/p>\n<figure id=\"attachment_5332\" aria-describedby=\"caption-attachment-5332\" style=\"width: 408px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5332 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid014.jpg\" alt=\"\" width=\"408\" height=\"310\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid014.jpg 408w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid014-300x228.jpg 300w\" sizes=\"auto, (max-width: 408px) 100vw, 408px\" \/><figcaption id=\"caption-attachment-5332\" class=\"wp-caption-text\">Imagen 14. Juego con perspectiva lateral<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/319380670\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/319380670<\/a><\/u><\/p>\n<p><strong>Vista isom\u00e9trica<\/strong><\/p>\n<p>La perspectiva isom\u00e9trica permite crear la sensaci\u00f3n de un juego 3D cuando en realidad el escenario y los sprites son entidades 2D o bidimensionales. Est\u00e1 formada por tres ejes (XYZ) que arrancan de un punto origen central. El escenario se estructura en cuadr\u00edculas que se van distribuyendo sobre este sistema de ejes. El movimiento de los personajes se puede realizar en 8 direcciones: N, NE, E, SE, S, SW, W y NW. Es el punto de vista m\u00e1s realista pero m\u00e1s dif\u00edcil de programar.<\/p>\n<figure id=\"attachment_5333\" aria-describedby=\"caption-attachment-5333\" style=\"width: 472px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5333 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid015.jpg\" alt=\"\" width=\"472\" height=\"238\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid015.jpg 472w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid015-300x151.jpg 300w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><figcaption id=\"caption-attachment-5333\" class=\"wp-caption-text\">Imagen 15. Perspectiva isom\u00e9trica de un videojuego<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318219370\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318219370<\/a><\/u><\/p>\n<h2><strong>Scroll de fondo<\/strong><\/h2>\n<p>Se denomina <strong>scroll de fondo<\/strong> al movimiento en 2D del fondo de escenario de un videojuego. Este efecto proporciona la sensaci\u00f3n de que el personaje o el m\u00f3vil se est\u00e1 desplazando en una direcci\u00f3n cuando en realidad es el fondo de escenario junto con sus objetos el que lo hace en sentido contrario. El personaje corre sobre el sitio sin desplazarse. El scroll puede ser horizontal o vertical o incluso multidireccional en juegos con vista a\u00e9rea.<\/p>\n<p>Una pr\u00e1ctica habitual en el dise\u00f1o de videojuegos es crear un scroll infinito y autom\u00e1tico usando una sola imagen. Esto permite disponer de un fondo de escenario din\u00e1mico que se muestra en desplazamiento continuo durante la ejecuci\u00f3n del juego. Se puede construir animando dos instancias de una misma imagen.<\/p>\n<figure id=\"attachment_5334\" aria-describedby=\"caption-attachment-5334\" style=\"width: 414px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5334 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid016.jpg\" alt=\"\" width=\"414\" height=\"315\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid016.jpg 414w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid016-300x228.jpg 300w\" sizes=\"auto, (max-width: 414px) 100vw, 414px\" \/><figcaption id=\"caption-attachment-5334\" class=\"wp-caption-text\">Imagen 16. Escenario con scroll de fondo en Scratch<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318222256\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318222256<\/a><\/u><\/p>\n<h2><strong>Colisiones<\/strong><\/h2>\n<p>La detecci\u00f3n de colisiones es una tarea habitual en la programaci\u00f3n de videojuegos. Consiste en comprobar si dos o m\u00e1s objetos se llegan a tocar, superponer o intersectar en su movimiento sobre el escenario. La detecci\u00f3n de una colisi\u00f3n se utiliza para desencadenar acciones: explosiones o desapariciones de objetos, incremento de puntos, finalizaci\u00f3n de partida, etc. Se suele aplicar a situaciones del juego como por ejemplo comprobar si un personaje o veh\u00edculo m\u00f3vil choca contra un obst\u00e1culo, si el disparo de nuestro avatar alcanza a un enemigo, si un proyectil impacta en el personaje que se mueve, etc.<\/p>\n<p>En el videojuego de control de un veh\u00edculo por una carretera en perspectiva a\u00e9rea cuando el m\u00f3vil colisiona con el \u201cgreen\u201d verde se detiene el juego. Para detectar la colisi\u00f3n, en el interior de un bucle <strong>forever <\/strong>(por siempre) que est\u00e1 escuchando en todo momento, cuando se detecta que el m\u00f3vil est\u00e1 tocando ese color, el bloque <strong>touching color \u2026 <\/strong>(tocando color \u2026)\u00a0 devuelve <strong>true <\/strong>y entonces se ejecuta la rutina <strong>\u201cgame over\u201d: <\/strong>suena el audio de error, se muestra el mensaje y se detiene el programa.<\/p>\n<figure id=\"attachment_5335\" aria-describedby=\"caption-attachment-5335\" style=\"width: 553px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5335 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid017.jpg\" alt=\"\" width=\"553\" height=\"256\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid017.jpg 553w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid017-300x139.jpg 300w\" sizes=\"auto, (max-width: 553px) 100vw, 553px\" \/><figcaption id=\"caption-attachment-5335\" class=\"wp-caption-text\">Imagen 17. Detecci\u00f3n de colisi\u00f3n con un color en Scratch<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/599766411\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/599766411<\/a><\/u><\/p>\n<h2><strong>Rebotes<\/strong><\/h2>\n<p>Uno de los principales desaf\u00edos en la programaci\u00f3n de videojuegos es la simulaci\u00f3n del mundo f\u00edsico en fen\u00f3menos como por ejemplo el rebote de una pelota contra una pared. Para controlar la colisi\u00f3n se utiliza un bucle <strong>forever <\/strong>y dentro el control de colisi\u00f3n que ofrece el bloque <strong>touching \u2026? <\/strong>(tocando el sprite \u2026) que devolver\u00e1 <strong>true <\/strong>cuando detecte que ese sprite est\u00e1 tocando el sprite indicado.<\/p>\n<p>El cambio de direcci\u00f3n se logra con el bloque <strong>point in direction (180-direction)<\/strong> (apuntar en direcci\u00f3n) que modifica la direcci\u00f3n de desplazamiento usando la ley de reflexi\u00f3n siendo <strong>direction <\/strong>la direcci\u00f3n del m\u00f3vil en el instante en que se produce el choque. Para generar un efecto m\u00e1s cre\u00edble gira la pelota sobre s\u00ed misma un \u00e1ngulo aleatorio entre -20 y +20 grados.<\/p>\n<figure id=\"attachment_5336\" aria-describedby=\"caption-attachment-5336\" style=\"width: 610px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5336 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid018.jpg\" alt=\"\" width=\"610\" height=\"255\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid018.jpg 610w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid018-300x125.jpg 300w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><figcaption id=\"caption-attachment-5336\" class=\"wp-caption-text\">Imagen 18. Simulaci\u00f3n de rebote de pelota en Scratch<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318259976\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318259976<\/a><\/u><\/p>\n<p>En el dise\u00f1o del cl\u00e1sico juego <strong>Pong <\/strong>cuando la pelota colisiona con la pala entonces se simula el rebote.<\/p>\n<h2><strong>Click destructivo<\/strong><\/h2>\n<p>Una de las acciones habituales en algunos videojuegos es pulsar sobre objetos o personajes situados sobre el escenario para hacerlos desaparecer. Estos objetos pueden estar en reposo o en movimiento aleatorio. El bloque que controla el evento de pulsar sobre un sprite es <strong>when this sprite clicked <\/strong>(al hacer clic en este objeto). Se le a\u00f1ade el bloque <strong>change puntos by 1 <\/strong>para incrementar el marcador en un punto y a continuaci\u00f3n el bloque <strong>hide <\/strong>(para ocultarlo).<\/p>\n<figure id=\"attachment_5337\" aria-describedby=\"caption-attachment-5337\" style=\"width: 502px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5337 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid019.jpg\" alt=\"\" width=\"502\" height=\"215\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid019.jpg 502w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid019-300x128.jpg 300w\" sizes=\"auto, (max-width: 502px) 100vw, 502px\" \/><figcaption id=\"caption-attachment-5337\" class=\"wp-caption-text\">Imagen 19. Control de clic sobre sprite<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/318355499\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/318355499<\/a><\/u><\/p>\n<h2><strong>Drag&amp;Drop<\/strong><\/h2>\n<p>Una acci\u00f3n habitual en los videojuegos es la posibilidad de arrastrar y colocar sprites sobre el escenario. Se pueden utilizar los bloques <strong>set drag mode draggable \/ undraggable <\/strong>(fija modo de arrastre a arrastrable \/ no arrastrable) para activar o desactivar la posibilidad de que un sprite se puede pinchar y arrastrar sobre el escenario.<\/p>\n<figure id=\"attachment_5338\" aria-describedby=\"caption-attachment-5338\" style=\"width: 499px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5338 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid020.jpg\" alt=\"\" width=\"499\" height=\"223\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid020.jpg 499w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid020-300x134.jpg 300w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><figcaption id=\"caption-attachment-5338\" class=\"wp-caption-text\">Imagen 20. Control del modo arrastrable de un sprite<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/337688336\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/337688336<\/a><\/u><\/p>\n<h2><strong>Shooting<\/strong><\/h2>\n<p>La acci\u00f3n de disparar se suele utilizar en algunos videojuegos. En t\u00e9rminos de programaci\u00f3n el disparo se codifica como una caso avanzado de colisi\u00f3n:\u00a0 un sprite que se activa al presionar una tecla, se muestra en una posici\u00f3n concreta, describe una trayectoria definida y que puede impactar con una diana o bien perderse por\u00a0 un lado del escenario.<\/p>\n<figure id=\"attachment_5339\" aria-describedby=\"caption-attachment-5339\" style=\"width: 529px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5339 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid021.jpg\" alt=\"\" width=\"529\" height=\"306\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid021.jpg 529w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid021-300x174.jpg 300w\" sizes=\"auto, (max-width: 529px) 100vw, 529px\" \/><figcaption id=\"caption-attachment-5339\" class=\"wp-caption-text\">Imagen 21. Codificaci\u00f3n de un disparo<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/337700407\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/337700407<\/a><\/u><\/p>\n<h2><strong>Efecto de gravedad<\/strong><\/h2>\n<p>Otro de los tips interesantes en los videojuegos es la simulaci\u00f3n del efecto de la gravedad. Se manifiesta en los saltos y ca\u00eddas sobre el eje Y de los avatares en los juegos de plataformas.<\/p>\n<figure id=\"attachment_5340\" aria-describedby=\"caption-attachment-5340\" style=\"width: 592px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-5340 size-full\" src=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid022.jpg\" alt=\"\" width=\"592\" height=\"277\" srcset=\"https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid022.jpg 592w, https:\/\/canaltic.com\/blog\/wp-content\/uploads\/2023\/06\/vid022-300x140.jpg 300w\" sizes=\"auto, (max-width: 592px) 100vw, 592px\" \/><figcaption id=\"caption-attachment-5340\" class=\"wp-caption-text\">Imagen 22. Funci\u00f3n gravedad en Scratch<\/figcaption><\/figure>\n<p>Fuente: <u><a href=\"https:\/\/scratch.mit.edu\/projects\/320076101\" target=\"_blank\" rel=\"noopener\">https:\/\/scratch.mit.edu\/projects\/320076101<\/a><\/u><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El dise\u00f1o de videojuegos en el aula En los \u00faltimos a\u00f1os los videojuegos se han convertido en una de las principales formas de ocupaci\u00f3n del tiempo de ocio de ni\u00f1os\/as, j\u00f3venes e incluso adultos. Su industria ha crecido enormemente superando en facturaci\u00f3n a la m\u00fasica y al cine. El impacto cultural de algunos t\u00edtulos de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5296,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[74],"tags":[75,144],"class_list":["post-5278","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computing","tag-computing","tag-videojuegos"],"_links":{"self":[{"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/5278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5278"}],"version-history":[{"count":8,"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/5278\/revisions"}],"predecessor-version":[{"id":5347,"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/5278\/revisions\/5347"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/5296"}],"wp:attachment":[{"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/canaltic.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}