Uma pequena introdução ao pygame - 00
Fala Dev🖖 Neste post, vou fornecer uma breve introdução ao PyGame e mostrar como podemos aprender algoritmos e Design Patterns através de jogos em futuros posts. No entanto, hoje vamos focar nos conceitos básicos do PyGame. Você está pronto para embarcar nessa jornada??
Introdução
Bem, para ser breve e direto ao ponto, o principal objetivo do PyGame é permitir o desenvolvimento de games utilizando a linguagem Python. Mas o foco do Pygame é apenas jogos em 2D e não 3D. Neste artigo vamos aprender o básico sobre o PyGame e alguns comandos legais.
Instalando o PyGame
⚠️ Antes de começar a codar e ver as funções, vamos precisar instalar o PyGame.
Para poder usar o PyGame vai ser preciso instalar o Python. Caso você não tenha o Python instalado na sua máquina basta acessar esse link: https://www.python.org/downloads e instalar a versão mais recente.
se você estiver no Linux basta usar esse comando no seu terminal:
sudo apt-get update
sudo apt-get install python3
Agora com o Python instalado, vamos instalar o PyGame. Basta executar esses comandos abaixo no seu cmd/terminal.
- para instalar basta usar este comando:
pip install pygame
- se você estiver no Linux basta usar este comando:
pip3 install pygame
Para testar se o PyGame foi instalado corretamente, basta importar a biblioteca e executar o Script.
import pygame
Se não aparecer nenhuma mensagem de erro, show, está tudo pronto para poder começar a codar e criar seu primeiro jogo com Python.
Criando a primeira janela com PyGame
para criar uma janela onde sera renderizado o jogo com PyGame é bem simples:
import pygame, sys
from pygame.locals import *
pygame.init()
SURFACE = pygame.display.set_mode((300,300))
pygame.display.set_caption("caption")
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
Vamos aprender o que cada função serve.
import pygame, sys
A primeira linha do código estamos um import
que importa o pygame
e o sys
que nos permite usar as diversas funções como gráfico, sons e entre outras features disponíveis.
from pygame.locals import *
Neste trecho de código, estamos importando todos os nomes (funções, classes, constantes etc.) do módulo pygame.locals
. Assim nos permitindo usar funções, classes, constantes só pelo nome, sem a necessidade de usar prefixo para chamar uma função pygame.locals.funcao_x()
.
pygame.init()
O init()
é a função inicial do projeto, você não precisa saber o que ela faz, mas esta função tem que esta presente para que outras funções do PyGame possa funcionar.
SURFACE = pygame.display.set_mode((tamanho_eixo_X, tamanho_eixo_Y))
Já a função pygame.display.set_mode((tamanho, tamanho))
é utilizada para definir o tamanho da janela do jogo. Observe que a função recebe dois valores em uma tuple onde será definido o tamanho. O primeiro valor da tupla está relacionada ao tamanho do eixo X (Horizontal) e o segundo valor corresponde ao tamanho do eixo Y (vertical). A constante SURFACE
vai ser explicado em outro post fututo, mas para não deixar dúvida ela vai armazenar o objeto pygame.Surface para fazer algumas configurações/alterações.
pygame.display.set_caption("caption")
Não vou falar muito sobre esta função. Mas de forma direta, ela vai servir para adicionar um título a sua janela.
while True:
for event in pygame.event.get():
Nesta parte vamos precisar de um loop
para que o programa não feche na primeira vez que executar. Esse loop
vai ser importante porque nele vamos gerenciar todos os eventos, ações e atualizações que precisamos fazer no jogo.
Observe que dentro do while
utilizamos um segundo loop for
, para percorrer sobre uma lista de eventos retornada pela função pygame.event.get()
. Essa função é responsável por pegar todos os eventos/ações do jogo. Nela podemos verificar se alguma tecla do teclado foi pressionada, se existe alguma ação do mouse ou se o usuário deseja fechar a janela do jogo.
if event.type == QUIT:
pygame.quit()
sys.exit()
Não vou me aprofundar neste trecho do código. Mas basicamente, esse trecho vai verificar se exite algum evento de fechamento da janela. A função pygame.quit()
vai ser importante, pois, com ela vamos desativar a biblioteca corretamente, liberando todos os recursos associados a ela como a limpeza da memória o fechamento da janela e a liberação de outros recursos do sistema que foram alocados durante a execução do programa. E o sys.exit()
vai encerrar o programa imediatamente.
pygame.display.update()
A função pygame.display.update()
desempenha o papel de atualizar toda a área da tela. Porém, neste post, não nos aprofundaremos nela.
Desenhado figuras com pygame
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((500,500))
pygame.display.set_caption("caption")
# configurando cores
BLACK = ( 0,0,0)
WHITE = (255, 255, 255)
RED = (255,0,0)
GREEN = ( 0, 255,0)
BLUE = ( 0,0, 255)
# mudar a cor de fundo
DISPLAYSURF.fill((255, 255, 255))
#desenhando figuras
pygame.draw.rect(DISPLAYSURF, RED, (200, 150, 100, 50))
pygame.draw.ellipse(DISPLAYSURF, RED, (300, 250, 40, 80), 1)
pygame.draw.circle(DISPLAYSURF, BLUE, (300, 50), 20, 0)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
Antes de mostrar as funções de desenho, vamos ver algumas observações no código!
1. A função fill()
vai ser responsável por mudar a cor do Background da janela. No exemplo que fiz, eu mudei a cor de fundo para branco. Observe que as cores recebe três valores em uma tuple onde a primeira posição é responsável pela cor vermelha
a segunda pela cor verde
e a última pela cor azul
, RGB
.
2. As constantes RED
, BLACK
, WHITE
, GREEN
e BLUE
são responsáveis pelas cores. Observe o seguinte que elas recebem três valores em uma tuple.
Agora vamos ver as funções:
-
pygame.draw.rect(DISPLAYSURF, Cor, Retângulo, Espessura)
função utilizada para desenhae retângulo.- Retângulo define a posição e o tamanho do retângulo. A tupla consiste em (x, y, largura, altura).
- Espessura é responsavel por definir a espessura da linha de contorno do retângulo. Se não for especificado, a espessura padrão é 0, o que significa que o retângulo será preenchido com a cor definida.
- Cor é uma tupla de três valores que representa a cor do retângulo no formato RGB (vermelho, verde e azul).
-
pygame.draw.ellipse(DISPLAYSURF, Cor, Elipse, Espessura)
função utilizada para desenhar uma elipse.- Elipse define a posição e o tamanho do retângulo. A tupla consiste em (x, y, largura, altura).
- Espessura é responsável por definir a espessura da linha de contorno do retângulo. Se não for especificado, a espessura padrão é 0, o que significa que o retângulo será preenchido com a cor definida.
- Cor é uma tupla de três valores que representa a cor do retângulo no formato RGB (vermelho, verde e azul).
-
pygame.draw.circle(DISPLAYSURF, Cor, Centro, Raio, Espessura)
função utilizada para desenhar círculos.- Centro define a posição e o tamanho do retângulo. A tupla recebe (x, y) posição onde o círculo vai ser desenhado.
- Raio parâmetro que define o raio do círculo.
- Espessura é responsável por definir a espessura da linha de contorno do retângulo. Se não for especificado, a espessura padrão é 0, o que significa que o retângulo será preenchido com a cor definida.
- Cor é uma tupla de três valores que representa a cor do retângulo no formato RGB (vermelho, verde e azul).
Existem outras função, mas não vou abordar neste post. Porém, na documentação do PyGame explica com mais detalhe sobre cada funções.
Conclusão
Obrigado a você que leu até aqui!
Espero que tenha gostado do post, pois é a minha primeira postagem com foco em um tutorial. Espero que tenha sido mais simples e direto nas minhas explicações. Se você quiser compartilhar com mais conhecimento nesse post, deixe seu comentário.
Lembrando que o foco deste post é uma rápida e pequena introdução ao PyGame. Pois existe diversa coisa a ser discutida sobre o PyGame que não acaba aqui.
Sou nova no mundo python e não conhecia essa biblioteca, super interessante o conteúdo, já criei um repositório pra desenvlver um joguinho.
e legal👍, mas não e tão eficiente quanto o gamemaker