{"id":69512,"date":"2022-06-09T16:15:26","date_gmt":"2022-06-09T14:15:26","guid":{"rendered":"https:\/\/keepcoding.io\/?p=69512"},"modified":"2024-04-10T15:57:14","modified_gmt":"2024-04-10T13:57:14","slug":"sprites-y-spritegroups-en-pygame","status":"publish","type":"post","link":"https:\/\/keepcoding.io\/blog\/sprites-y-spritegroups-en-pygame\/","title":{"rendered":"Sprites y Spritegroups en Pygame"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Si ya sabes <a href=\"https:\/\/keepcoding.io\/blog\/que-es-pygame\/\">qu\u00e9 es Pygame<\/a> y por qu\u00e9 sus conceptos son tan interesantes en la <a href=\"https:\/\/keepcoding.io\/blog\/que-es-la-programacion-y-para-que-sirve\/\">programaci\u00f3n<\/a> de videojuegos, <strong>es el momento de hablar sobre los conceptos de Sprites y Spritegroups en Pygame.<\/strong> En este post, te explicaremos que es un sprites y Spritegroups, elementos que se consideran una parte fundamental del esqueleto de un programa de videojuegos. <\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_74 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u00bfQu\u00e9 encontrar\u00e1s en este post?<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Alternar tabla de contenidos\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/keepcoding.io\/blog\/sprites-y-spritegroups-en-pygame\/#Clase_Sprites_y_Spritegroups\" >Clase Sprites y Spritegroups<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/keepcoding.io\/blog\/sprites-y-spritegroups-en-pygame\/#Sprites\" >Sprites<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/keepcoding.io\/blog\/sprites-y-spritegroups-en-pygame\/#Spritegroups\" >Spritegroups<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/keepcoding.io\/blog\/sprites-y-spritegroups-en-pygame\/#Documentacion_de_Sprites_y_Spritegroups\" >Documentaci\u00f3n de Sprites y Spritegroups<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/keepcoding.io\/blog\/sprites-y-spritegroups-en-pygame\/#Animacion_con_Sprite_y_Spritegroups\" >Animaci\u00f3n con Sprite y Spritegroups<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/keepcoding.io\/blog\/sprites-y-spritegroups-en-pygame\/#%C2%BFQue_puedes_hacer_ahora\" >\u00bfQu\u00e9 puedes hacer ahora?<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Clase_Sprites_y_Spritegroups\"><\/span>Clase Sprites y Spritegroups<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Los Sprites y Spritegroups en Pygame son dos objetos de la librer\u00eda que le permiten al <a href=\"https:\/\/keepcoding.io\/blog\/que-es-un-programador-informatico\/\">programador<\/a> de videojuegos manejar y realizar movimientos de im\u00e1genes por la pantalla. <\/strong>Aqu\u00ed puede transformar su posici\u00f3n y tama\u00f1o, para animarlo como desees o como sea necesario para el desarrollo de la historia y las particularidades de tu videojuego. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sprites\"><\/span><strong><em>Sprites<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una clase Sprites en Pygame es una <strong>clase base <\/strong>para el movimiento de imagenes. <strong>Los sprites en videojuegos<\/strong> <strong>son rect\u00e1ngulos que representan los objetos m\u00f3viles o fijos de un juego<\/strong>. Los rect\u00e1ngulos pueden ser cualquier elemento de un juego, como son los personajes, los obst\u00e1culos, las herramientas o plataformas, entre otros objetos. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estos rect\u00e1ngulos se animan con la opci\u00f3n de <em>frame<\/em>, <strong>pueden modificarse por su tama\u00f1o o posici\u00f3n, entre otros aspectos gr\u00e1ficos inherentes del rect\u00e1ngulo.<\/strong> Otra caracter\u00edstica interesante, pensando en los videojuegos, es que los Sprites pueden detectar colisiones entre ellos. Es decir, gracias a esta opci\u00f3n, vemos c\u00f3mo, en un videojuego, un coche colisiona con un poste de luz, una persona o un edificio. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>El Sprite, por tanto, es un rect\u00e1ngulo donde se carga una imagen y que tiene un atributo llamado rect\u00e1ngulo<\/strong>. Este atributo est\u00e1 integrado por otros atributos rect\u00e1ngulos, como son las dimensiones (ancho y alto) o la posici\u00f3n (x &#8211; y). La imagen ser\u00e1 lo que rellenemos, que puede ser un color, una vi\u00f1eta o un <em>frame<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Spritegroups\"><\/span><strong><em>Spritegroups<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">De la mano del Sprite en Pygame, aparecen los Spritegroups. Si bien su intenci\u00f3n es la misma que la intenci\u00f3n de los Sprites,<strong> los Spritegroups funcionan para manejar cada uno de ellos por la conformaci\u00f3n de grupos.<\/strong> Por ejemplo, podemos crear un Spritegroup conformado de Sprites de obst\u00e1culos, personajes o <a href=\"https:\/\/keepcoding.io\/blog\/herramientas-clave-para-desarrolladores\/\">herramienta<\/a>. <strong>Hay m\u00e9todos particulares que podemos manejar en la interacci\u00f3n entre Sprites y Spritegroups para observar su integraci\u00f3n y desarrollar el videojuego. <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas son las herramientas para que un videojuego funcione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El <strong>m\u00e9todo <em>collide<\/em><\/strong> nos muestra con qu\u00e9 elementos colisiona. Otro m\u00e9todo es el m\u00e9todo <em><strong>collide <\/strong><\/em><strong><em>rect<\/em>,<\/strong> que nos permite saber c\u00f3mo se superponen dos rect\u00e1ngulos y, as\u00ed, permitir simular mec\u00e1nicas de rebote.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Documentacion_de_Sprites_y_Spritegroups\"><\/span><strong><em>Documentaci\u00f3n de Sprites y Spritegroups<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Las funcionalidades que te ofrecen los Sprites y Spritesgroups son variadas y muy interesantes en el pensamiento computacional de un videojuego. Por eso, si quieres revisar m\u00e1s documentaci\u00f3n acerca de Sprite y Spritegroups, <strong>puedes visitar la p\u00e1gina de <a href=\"https:\/\/www.pygame.org\/docs\/ref\/sprite.html\" target=\"_blank\" rel=\"noopener\">Pygame<\/a>, donde encontraras estos y m\u00e1s conceptos sobre la utilizaci\u00f3n o m\u00e9todos de estas dos instrucciones. <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunos de estas son las siguientes:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Para los Sprites<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>pygame.sprite.Sprite.update:<\/strong> este es un m\u00e9todo de Pygame que nos permite tener el control del rect\u00e1ngulo. A su vez, nos permite modificar la imagen o su posici\u00f3n.<\/li>\n\n\n\n<li><strong>pygame.sprite.Sprite.remove:<\/strong> es el m\u00e9todo que nos permitir\u00e1 quitar el Sprite de un grupo.<\/li>\n\n\n\n<li><strong>pygame.sprite.Sprite.kill:<\/strong> otro m\u00e9todo que funciona para eliminar un Sprite de todos los grupos. <\/li>\n\n\n\n<li><strong>pygame.sprite.Sprite.kill:<\/strong> la funcionalidad de este m\u00e9todo recae en que documenta, en una lista, los grupos que contienen una Sprite. <\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Para los SpriteGroups<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>pygame.sprite.Group.draw:<\/strong> nos permite crear un grupo a partir de los Sprite. Esto organizar\u00e1 los sprite 8 bit de una forma que funcione.<\/li>\n\n\n\n<li><strong>pygame.sprite.Group.remove<\/strong>: con este m\u00e9todo podremos eliminar los Sprites de un grupo.  <\/li>\n\n\n\n<li><strong>pygame.sprite.Group.add:<\/strong> este m\u00e9todo funciona para agregar Stripes a un SpriteGroups en espec\u00edfico. <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Estos y otros m\u00e9todos de Sprites y Spritegroups los encuentras en la documentaci\u00f3n que nos brinda la <strong>p\u00e1gina oficial de Pygame<\/strong>. As\u00ed como ejemplos que te facilitar\u00e1n el entendimiento de la utilidad de estas herramientas y ejercicios para hacer por tu parte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Animacion_con_Sprite_y_Spritegroups\"><\/span>Animaci\u00f3n con Sprite y Spritegroups<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes animar una serie de <em>frames<\/em> para un videojuego o cualquier otro proyecto con ayuda de los m\u00e9todos que te hemos mostrado anteriormente de los Sprites y Spritegroups. Este es un trabajo que no solo requiere saber qu\u00e9 tipo de m\u00e9todos necesitamos, sino tambi\u00e9n la historia que ser\u00e1 representada en nuestro programa o videojuego. <strong>Las herramientas de movilidad que nos brindan estas clases permiten la animaci\u00f3n de una imagen u objeto<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%C2%BFQue_puedes_hacer_ahora\"><\/span>\u00bfQu\u00e9 puedes hacer ahora?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora que entiendes el concepto de qu\u00e9 son las clases Sprites y Spritegroups en Pygame, puedes intentar plasmar estos conocimientos en un programa de prueba. Si quieres conocer c\u00f3mo hacerlo, en el <strong><a href=\"https:\/\/keepcoding.io\/nuestros-bootcamps\/bootcamp-aprende-a-programar\/\">Bootcamp Aprende a Programar desde Cero<\/a> <\/strong>hay ejercicios, guiados por un profesor altamente cualificado en programaci\u00f3n, que te permitir\u00e1n extrapolar estos conocimientos de <strong>Sprites y Spritegroups <\/strong>en un programa real. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El bootcamp cuenta con contenidos muy valiosos para empezar tu camino en la programaci\u00f3n desde cero, en lenguajes de programaci\u00f3n como <a href=\"https:\/\/keepcoding.io\/blog\/que-es-input-en-python-y-como-usarlo\/\">Python<\/a>. \u00a1<strong>Solicita informaci\u00f3n y no dudes en inscribirte!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si ya sabes qu\u00e9 es Pygame y por qu\u00e9 sus conceptos son tan interesantes en la programaci\u00f3n de videojuegos, es el momento de hablar sobre los conceptos de Sprites y Spritegroups en Pygame. En este post, te explicaremos que es un sprites y Spritegroups, elementos que se consideran una parte fundamental del esqueleto de un &#8230; <a title=\"Sprites y Spritegroups en Pygame\" class=\"read-more\" href=\"https:\/\/keepcoding.io\/blog\/sprites-y-spritegroups-en-pygame\/\" aria-label=\"Leer m\u00e1s sobre Sprites y Spritegroups en Pygame\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":4,"featured_media":69529,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,391],"tags":[499,404],"class_list":["post-69512","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-fundamentos-programacion","tag-conceptos-programacion","tag-pygame"],"_links":{"self":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/posts\/69512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/comments?post=69512"}],"version-history":[{"count":0,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/posts\/69512\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/media\/69529"}],"wp:attachment":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/media?parent=69512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/categories?post=69512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/tags?post=69512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}