Desarrollo de vídeo juegos con Python (Parte 1)
Hola comunidad, hace unos meses atrás hice una publicación (Por si les gustaría echarle un vistazo:
(https://steemit.com/programacion/@juanpabloperez/por-que-realizar-video-juegos-con-python-y-no-con-c ).
Esto es sobre el porque realizar vídeo juegos con python y no con c++. Pues bueno, el día de hoy empezare con un pequeño tutorial de como empezar a desarrollar vídeo juegos con python. Cabe aclarar que para poder desarrollar vídeo juegos con python debes tener una librería llamada pygame (Y por supuesto tener python instalado). Los tutoriales de como descargar esta librería se encuentran en youtube, así que pues no tiene mucha gracia que haga un tutorial de como descargar la librería e implementarla con python, mas sin embargo en estos días estaré haciendo una publicación de como descargar e implementar pygame.
Bueno lo primero que debemos realizar es abrir nuestro editor de texto preferido (Atom, Sublime text, visual studio code), en este caso yo utilizare el visual studio code.
Una vez abierto el editor de texto crearemos(guardaremos) un archivo py, en este caso lo llamare ejemplo.py
Y listo empezaremos a codificar...
En esta lección empezare con algo básico, sencillo, pero importante, vamos a crear una pantalla y después dibujaremos 2 figuras geométricas en ella.
Lo primero que debemos hacer es empezar con la primera linea, importando la libreria de pygame:
import pygame
Lo primero que debes tener en cuenta a la hora de desarrollar en python es que no necesitas declarar el tipo de variable que vas a usar para después asignarle un valor, solo con asignarle el valor, el mismo lenguaje se encargara de asignarle el tipo de variable que es, ejemplo:
en un lenguaje como c++ debías hacer algo mas o menos así:
#inlcude <stdlib.h>
int main(){
int var;
var = 12;
cout <<"Su numero es:"<<var<<enld;
}
en python seria algo mas o menos asi:
import pygame
if name == 'main':
var = 12
print (var)
NOTA: No es necesario crear un main para ejecutar esa linea de código, para un mayor entendimiento lo hice asi, pero no es necesario.
Entonces teniendo esto en cuenta lo segundo que haremos después de importar la librería de pygame sera declarar unas variables globales... (globales porque no van a estar dentro del main):
Ancho = 1000
Alto = 600
Estas variables me van a definir el alto y ancho de la pantalla que vamos a crear, ahora declararemos las siguientes variables:
Negro = 0x000000
Blanco = 0xFFFFFF
Ustedes se estarán preguntando... Que carajos!. Bueno estas variables simplemente se definen como colores (los códigos de los colores los puedes buscar por Internet, como códigos de colores HTML). Estos colores nos servirán para mas adelante, por el momento solo los dejaremos inicializados.
Bueno ahora crearemos el main donde, empezaremos a realizar nuestra linea de código:
def main():
pygame.init()
if name == 'main':
main()
NOTA: tenga en cuenta que puede declarar el main de esta manera o simplemente, en vez de declarar una función main y llamarla en el main principal (If name == 'main':) puede poner:
if name == 'main':
pygame.init()
Ahora pondremos la siguiente linea de código:
pantalla = pygame.display.set_mode([Ancho,Alto])
A pantalla le asignamos el valor de me arroja pygame.display.set_mode([Ancho,Alto]). (Como esta función necesita unos parámetros para establecer la medidas de la pantalla, es por eso que le mandamos el Ancho y Alto que habíamos definido anteriormente). Este tipo de dato que devuelve pygame.display.set_mode([Ancho,Alto]) se le conoce como un tipo de dato Surface (No estoy seguro si así se escribe y me perdonaran si no es así) y en el es que podemos dibujar diferentes figuras.
Bueno hasta el momento seria algo mas o menos así:
Vamos a declarar una variable llamada fin y la vamos a iniciar con el valor de False:
fin = False
Luego vamos a crear un pequeño código que me va a permitir visualizar la pantalla sin que cierre a excepción de que nosotros queramos:
while not fin:
for event in pygame.event.get():
if event.type == pygame.QUIT:
fin = True
Explicación:
- Decimos que mientras fin no sea verdadero siga en del ciclo
- Después viene un for que me va a recorrer todos los eventos que hayan en pygame.event.get() (Basica POO)
- Verifica si uno de esos eventos es de de tipo SALIR (Me valida si el usuario le dio click en la x de salir, esquina superior derecha)
- Si la condición 3 se cumple entonces fin se va a volver verdadero y saldrá del ciclo while
De esta manera aseguramos de que cuando ejecutamos el programa, no se nos va a cerrar la pantalla hasta que no le demos click en la x.
Bueno nuestro código se vería mas o menos así:
Y ejecutándolo se vería así:
Excelente! :D Ya tenemos nuestra ventana creada y funcionando perfectamente... Ahora vamos a dibujar 2 figuras trigonométricas sencillas (cuadrado,circulo)
Vamos con el cuadrado. Lo primero que tenemos que hacer es ir antes del while (También podrías dibujarlo dentro del while, pero si te das cuenta, es un ciclo que se estará repitiendo hasta que no le demos salir, entonces se dibujara varias veces el cuadrado, mas adelante les explicare como podríamos hacerlo dentro del while).
Bueno ya ubicados en donde les dije:
Vamos a proceder a dibujar un cuadrado, lo primero que debemos hacer colocar la siguiente linea de código :
pygame.draw.rect(pantalla,Blanco,([0,0],[200,200]),2)
Con esta linea de código lo que hacemos llamar a la librería Pygame la cual llama a una clase que es draw, y a su vez esta llama a una función llamada rect la cual recibe como parámetros: La superficie en la que se va a dibujar (pantalla), el color con el que queremos dibujar (Blanco), la posición en pantalla donde queremos que empiece y termine nuestro cuadrado. Véase que esta organizado de esta manera ([Posición_inicio_x,Posición_inicio_y],[Posición_final_x,Posición_final_y]), este par ordenado(x,y) tanto el de posición_inicio como el de posicion_final, son las coordenadas en la pantalla que para este ejemplo estamos poniendo, inicio(0,0) final(200,200) o sea que el cuadrado se dibujara desde la posición (0,0) hasta la posición (200,200). Y luego sigue el grosor con el que quiero que se vea el cuadrado (Si pones en esta posición el numero 0, lo que harás es que el cuadro sea llenado completamente, ya veras el ejemplo).
NOTA: Pusimos Blanco en la posición donde va el color porque si lo recuerdan ya habíamos declarado Blanco al comienzo, pero si ustedes quiere podrían haber puesto 0xFFFFFF en la posición del color y hubiera sido totalmente valido.
Ahora, así se vería mas o menos así en nuestro editor de texto:
Y en pantalla se vería así:
A continuación podrán ver el ejemplo que les decía si ponían un cero en el campo del grosor del cuadrado.
pygame.draw.rect(pantalla,Blanco,([0,0],[200,200]),0)
Excelente! :D ahora hagamos el circulo... De la misma manera que el cuadrado vamos a dibujarlo antes de while, abajo de la linea de código del cuadrado si quiere, y vamos a colocar:
pygame.draw.circle(pantalla,Blanco,[400,200],200,0)
La explicación de esta es prácticamente lo mismo que la del cuadrado, solo que aquí en la posición donde queremos dibujar nuestro circulo no vamos a dar dos coordenadas como lo hacíamos anteriormente, sino que vamos a poner solo una, que sera la posición donde quiero que este mi circulo, en este caso seria en la coordenada [400,200], después de esto viene el radio del circulo, que en el ejemplo tenemos que es 200, pues siendo lógicos este determina el radio que va a tener el circulo, y por ultimo sera el grosor del circulo, como es 0 pues ya sabemos que el circulo cera totalmente blanco.
A continuación como se vería:
Y en nuestra pantalla:
Esta hecho! Excelente! hemos completado esta primera parte del desarrollo de vídeo juegos con python, No olviden votar si les gusto, y si no les gusto, también voten...
NOTA: Se me olvidaba, las coordenadas se manejas como:
Las coordenadas en x positivas son a la derecha (O sea si pones un numero mayor a 0 tu figura aparecerá a la derecha de la pantalla, dependiendo del valor que le hayas dado) y las negativas son a la izquierda (O sea no se visualizaran si están muy corridas a la izquierda, eso dependiendo del valor que le des, si le das un -1000 a la coordenada en x ten por seguro que no se podrá visualizar
De la misma manera las coordenadas en Y si son positivas son hacia abajo, y si son negativas son hacia arriba.
Mas adelante estaré mostrando esto, en el caso que no hayan entendido muy bien
JUAN PABLO PEREZ SANTOS
Estudiante de ingenieria de sistemas - Universidad Tecnológica De Pereira
Programador de software
Excelente!!
Es interesante lo que planteas aqui, para ser un primer tutorial para crear videojuegos en Python se me ha hecho interesante, espero ver futuros tutoriales tuyos de crear un videojuego en Python
Muchas gracias. :D