{"id":73968,"date":"2022-06-29T16:59:21","date_gmt":"2022-06-29T14:59:21","guid":{"rendered":"https:\/\/keepcoding.io\/?p=73968"},"modified":"2024-04-10T15:54:52","modified_gmt":"2024-04-10T13:54:52","slug":"crear-una-pelota-en-python","status":"publish","type":"post","link":"https:\/\/keepcoding.io\/blog\/crear-una-pelota-en-python\/","title":{"rendered":"\u00bfC\u00f3mo crear una pelota en Python?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Seguramente has escuchado hablar de uno de los primeros videojuegos creados por la empresa Atari en el siglo pasado, en la d\u00e9cada de los 70. Este es el videojuego Pong. Por otros posts de Keepcoding, ya conoces c\u00f3mo crear una clase de paleta o una clase pong, entre otras muchas cosas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero <strong>\u00bfsabes c\u00f3mo crear una pelota en <a href=\"https:\/\/keepcoding.io\/blog\/que-es-input-en-python-y-como-usarlo\/\">Python<\/a>? Este es uno de los elementos m\u00e1s importantes de este juego<\/strong>, pues es es el que le da movilidad al videojuego. Por tanto, hoy te contaremos c\u00f3mo crear una pelota en Python.<\/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\/crear-una-pelota-en-python\/#Elementos_para_un_videojuego_de_Pong\" >Elementos para un videojuego de Pong<\/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\/crear-una-pelota-en-python\/#Clase_paleta\" >Clase paleta<\/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\/crear-una-pelota-en-python\/#Pelota\" >Pelota<\/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\/crear-una-pelota-en-python\/#Clase_Pong\" >Clase Pong<\/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\/crear-una-pelota-en-python\/#Pasos_para_crear_una_pelota_en_Python\" >Pasos para crear una pelota en Python<\/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\/crear-una-pelota-en-python\/#Sigue_practicando_con_Pygame\" >Sigue practicando con Pygame<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Elementos_para_un_videojuego_de_Pong\"><\/span>Elementos para un videojuego de Pong<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de continuar con los pasos para crear una pelota en Python, deber\u00e1s recordar los elementos principales del juego de Pong. Esto te servir\u00e1 para entender de qu\u00e9 forma se va a presentar la pelota y, adem\u00e1s, por qu\u00e9 tipo de clases pasar\u00e1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para hablar de <strong>los 3 elementos para un videojuego de Pong es necesario recordar que la definici\u00f3n de cada uno de ellos se realiza en conjunto,<\/strong> es decir, algunos atributos que tenga el elemento paleta deber\u00e1n encontrarse en la clase Pong, que es la clase general del programa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Clase_paleta\"><\/span><strong><em>Clase paleta<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El primer elemento que debes realizar es la clase paleta, este es el elemento con el que se juega. <strong>Este es el elemento que utilizas para golpear la pelota y pasarlas al otro lado de la pantalla<\/strong>. Para hacer la clase paleta puedes visitar el post sobre <a href=\"https:\/\/keepcoding.io\/blog\/como-hacer-una-clase-paleta-en-python\/\" data-type=\"URL\" data-id=\"https:\/\/keepcoding.io\/blog\/como-hacer-una-clase-paleta-en-python\/\">c\u00f3mo hacer una clase paleta en Python<\/a>, para seguir construyendo tu juego de Pong. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pelota\"><\/span><strong><em>Pelota<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El segundo de los elementos fundamentales es la pelota, que ser\u00e1<strong> el objeto que pasar\u00e1 de un lugar a otro,<\/strong> motivada por el toque con cada una de las paletas por parte de los jugadores. Para crear la pelota para tu juego, deber\u00e1s cumplir con los pasos que te presentamos a continuaci\u00f3n en este mismo art\u00edculo. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Clase_Pong\"><\/span><strong><em>Clase Pong<\/em><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Por \u00faltimo, encontramos la <a href=\"https:\/\/keepcoding.io\/blog\/como-hacer-una-clase-pong-en-python\/\">clase Pong<\/a> que es, de alguna manera, <strong>la que contendr\u00e1 casi todos los elementos que se necesitan para construir el juego<\/strong>. En este espacio tambi\u00e9n encontrar\u00e1s el bucle necesario para el programa. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pasos_para_crear_una_pelota_en_Python\"><\/span>Pasos para crear una pelota en Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ol class=\"wp-block-list\"><li>Como primer paso, deber\u00e1s estar seguro de que tienes la librer\u00eda de <a href=\"https:\/\/www.pygame.org\/docs\/\" data-type=\"URL\" data-id=\"https:\/\/www.pygame.org\/docs\/\" target=\"_blank\" rel=\"noopener\">Pygame<\/a> a\u00f1adida a tu programa de Pong. Es decir, debes importar la librer\u00eda.<\/li><li>En segundo lugar, debes definir la clase Bola, con el nombre que sea necesario. Aqu\u00ed entendemos a nuestra bola como un cuadrado en el juego,<strong> por eso deber\u00e1s buscar la forma de construirla desde los m\u00f3dulos de la librer\u00eda Pygame. <\/strong>Esto quiere decir que debemos hacer que la bola sea de un tipo espec\u00edfico de cuadrado, por lo que es necesario que utilicemos un tipo de herencia. Por lo tanto, deber\u00e1s instanciar a la bola con los m\u00e9todos de tipo <strong>pygame.React <\/strong>y otros objetos que necesites programar. <\/li><li>Ahora deber\u00e1s realizar un cuadrado <strong>con el constructor del cuadrado dentro de la clase bola. <\/strong>Esto lo haces llamando a una clase por encima de este para poder definirlo con la funci\u00f3n <em>supper<\/em>. A este se le pasar\u00e1n dos par\u00e1metros. <br>Es importante saber recalcar que cuando se pintan objetos en una pantalla de un juego,<strong> la cordenada 0,0 <\/strong>es en la esquina superior izquierda, hacia abajo y hacia el lado derecho se va sumando en positivo. Aqu\u00ed puedes utilizar el formato <strong>(*args, **kwargs) <\/strong>para que sea la clase Pong quien decida en qu\u00e9 lugar se pinta la clase bola. <\/li><li>El siguiente paso es dibujar la bola de tu juego. <strong>Para ello deber\u00e1s dirigirte a la clase Pong y all\u00ed la dibujar\u00e1s con dimensiones espec\u00edficas<\/strong>, de acuerdo a los tama\u00f1os que hayas escogido para los dem\u00e1s elementos y para la misma pantalla del juego. <\/li><li>Una vez establecidas las dimensiones de la pelota, deber\u00e1s instanciarlas en la parte del constructor de la clase de Pong. <\/li><li>El \u00faltimo paso es<strong> dibujar la pelota en el bucle del programa<\/strong>.<\/li><\/ol>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"wp-block-paragraph\">import Pygame<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class Bola (pygame.React)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">    def __init__ (self, *args, **kwargs) <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">            supper (Bola, self).__init__ (*args, **kwargs)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>#deber\u00e1s pintar la bola en la clase Pong, anteriormente establecida<\/em>, es decir,<em> bajo class Pong<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">_BOLA_DIMEN = 5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>#en la clase Pong, donde est\u00e1 creada la pantalla, deber\u00e1s crear e instanciar la<\/em> <em>bola del juego. Esto le haces debajo de donde has creado la instancia de la pantall<\/em>a y<em> las paletas<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">self.bola = Bola (<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       self._ANCHO \/ 2 &#8211; self._BOLA_DIMEN \/ 2,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       self._ALTO \/ 2 &#8211; self._BOLA_DIMEN \/ 2,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       self._BOLA_DIMEN,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">       self._BOLA_DIMEN<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#debajo de los proceso de dibujos de la pantallas y las paletas en el bucle del programa<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">pygame.draw.rect (self.pantalla (255, 255, 255), self.bola)<\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">De esta manera, ya sabes c\u00f3mo crear una pelota en Python para tu programa y puedes empezar a jugar con ella <strong>para que se mueva e interact\u00fae con los dem\u00e1s elementos que constituyen el videojuego Pong.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sigue_practicando_con_Pygame\"><\/span>Sigue practicando con Pygame <span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora que ya sabes como crear una pelota en Python con Pygame, est\u00e1s m\u00e1s cerca de crear tu primer videojuego en 2D con esta librer\u00eda. Si quieres saber c\u00f3mo hacer los distintos elementos, <strong>puedes visitar los dem\u00e1s art\u00edculos de KeepCoding acerca de Pong. <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si, adem\u00e1s, quieres seguir practicando con Pygame, con la compa\u00f1\u00eda de un <a href=\"https:\/\/keepcoding.io\/blog\/que-es-un-programador-informatico\/\">programador<\/a> profesional, y al mismo tiempo, perfeccionar tus habilidades en el mundo del c\u00f3digo, te recomendamos matricularte en nuestro Bootcamp<strong> <a href=\"https:\/\/keepcoding.io\/nuestros-bootcamps\/bootcamp-aprende-a-programar\/\">Aprende a Programar desde Cero Full Stack Jr. Bootcamp<\/a><\/strong>. <strong>\u00a1Es el mejor momento para seguir aprendiendo a programar y convertirte en un experto en el mundo del c\u00f3digo!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Seguramente has escuchado hablar de uno de los primeros videojuegos creados por la empresa Atari en el siglo pasado, en la d\u00e9cada de los 70. Este es el videojuego Pong. Por otros posts de Keepcoding, ya conoces c\u00f3mo crear una clase de paleta o una clase pong, entre otras muchas cosas. Pero \u00bfsabes c\u00f3mo crear &#8230; <a title=\"\u00bfC\u00f3mo crear una pelota en Python?\" class=\"read-more\" href=\"https:\/\/keepcoding.io\/blog\/crear-una-pelota-en-python\/\" aria-label=\"Leer m\u00e1s sobre \u00bfC\u00f3mo crear una pelota en Python?\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":4,"featured_media":74036,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,391],"tags":[499,404,405],"class_list":["post-73968","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-fundamentos-programacion","tag-conceptos-programacion","tag-pygame","tag-python"],"_links":{"self":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/posts\/73968","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=73968"}],"version-history":[{"count":0,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/posts\/73968\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/media\/74036"}],"wp:attachment":[{"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/media?parent=73968"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/categories?post=73968"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/keepcoding.io\/wp-json\/wp\/v2\/tags?post=73968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}