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.

python-install-img

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()

preview

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

Já utilizei o pygame em alguns projetinhos pessoais e sempre achei bem gostoso de se trabalhar, eu realmente só parei de usar quando troquei o python pelo rust.

Muito interessante e bem explicado esse projeto mesmo eu que sou um novato em python consegui entender. Parabéns pela iniciativa.