Mudanças entre as edições de "Computação Gráfica: Introdução ao PyGame"
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada) | |||
Linha 1: | Linha 1: | ||
+ | |||
Afluentes: [[Computação Gráfica]] | Afluentes: [[Computação Gráfica]] | ||
Linha 6: | Linha 7: | ||
O PyGame trabalha com SDL (''Simple DirectMedia Layer''), uma biblioteca multimídia e multiplataforma escrita em C, com interface para diversas linguagens de programação. O SDL objetiva abstrair o tratamento de gráficos, sons, entradas, vídeos, eventos, etc., para facilitar a programação de aplicações multimídias para diversos sistemas operacionais. | O PyGame trabalha com SDL (''Simple DirectMedia Layer''), uma biblioteca multimídia e multiplataforma escrita em C, com interface para diversas linguagens de programação. O SDL objetiva abstrair o tratamento de gráficos, sons, entradas, vídeos, eventos, etc., para facilitar a programação de aplicações multimídias para diversos sistemas operacionais. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
= Game Loop = | = Game Loop = | ||
− | [[Arquivo:Gameloop.png| | + | [[Arquivo:Gameloop.png|308x308px|direita|game loop|miniaturadaimagem]] |
Tal como uma biblioteca de jogo, ela segue o ciclo de vida de um jogo baseado no '''game loop'': | Tal como uma biblioteca de jogo, ela segue o ciclo de vida de um jogo baseado no '''game loop'': | ||
Linha 34: | Linha 27: | ||
= Hello World no PyGame mostrando uma imagem = | = Hello World no PyGame mostrando uma imagem = | ||
− | <syntaxhighlight lang=python | + | <syntaxhighlight lang="python"> |
import sys # importa a biblioteca sys | import sys # importa a biblioteca sys | ||
import pygame # importa a biblioteca pygame | import pygame # importa a biblioteca pygame |
Edição atual tal como às 19h36min de 7 de junho de 2024
Afluentes: Computação Gráfica
PyGame
O PyGame é um conjunto de bibliotecas para o desenvolvimento de jogos para a linguagem de programação Python. Ela é independente de plataforma e pode ser executada no Windows, Linux, MacOS, etc..
O PyGame trabalha com SDL (Simple DirectMedia Layer), uma biblioteca multimídia e multiplataforma escrita em C, com interface para diversas linguagens de programação. O SDL objetiva abstrair o tratamento de gráficos, sons, entradas, vídeos, eventos, etc., para facilitar a programação de aplicações multimídias para diversos sistemas operacionais.
Game Loop
Tal como uma biblioteca de jogo, ela segue o ciclo de vida de um jogo baseado no 'game loop:
- PROCESS_INPUT: Verifica todas as entradas e eventos, como teclado, mouse, dados de rede, etc.. Essa etapa é feita pela própria biblioteca do PyGame e abstraída ao desenvolvedor. Apenas usamos as informações coletadas nesse processo na próxima etapa do game loop.
- EXECUTE: ou SIMULATE_GAME_WORLD, é a etapa em que as entradas, eventos e dados são utilizados para executar algo do jogo, como dar um tiro, movimentar o personagem conforme uma tecla foi pressionada, etc..
- RENDER: é o processo de desenhar os elementos visuais do game.
Essas etapas são executadas a cada frame do jogo.
Antes e depois do game loop, são executadas duas etapas principais:
- INIT: inicializa as bibliotecas que serão utilizadas, carrega os recursos do jogo, configura informações, etc.
- END: desaloca os recursos e finaliza as bibliotecas.
Hello World no PyGame mostrando uma imagem
import sys # importa a biblioteca sys
import pygame # importa a biblioteca pygame
# INIT: inicialização dos dados, load dos recursos, etc.
pygame.init() # inicializa o pygame
filename = sys.argv[1] # pega o parâmetro de entrada
image = pygame.image.load(filename) # le a imagem do arquivo
w = image.get_width() # retorna a largura da imagem
h = image.get_height() # retorna a altura da imagem
display_surface = pygame.display.set_mode((w, h)) # ajusta para o tamanho da imagem
pygame.display.set_caption(filename) # nome da imagem como título da janela
# GAME_LOOP: ocorre a cada frame
finish = False # flag para game loop continuar
while not finish: # enquanto não terminou
# PROCESS_INPUT: é de responsabilidade da biblioteca
# EXECUTE: usa as entradas ou informações para fazer algo
for event in pygame.event.get(): # verifica os eventos do pygame
if event.type == pygame.QUIT: # se clicou no botão [x]
finish = True # ... fim do game loop
elif event.type == pygame.KEYDOWN: # se uma tecla foi pressionada
if event.key == pygame.K_ESCAPE: # ... e a tecla for ESC
finish = True # ... fim do game loop
# RENDER: apresenta as imagens na tela
display_surface.blit(image, (0, 0)) # mostra a imagem
pygame.display.update() # atualiza o display
# END: finaliza o game
pygame.quit() # finaliza o pygame
quit() # finaliza o programa
- Execução
python3.9 hellopygame.py imagem.jpg
Aqui estamos utilizando o python 3.9, abrindo o programa em python chamado hellopygame.py e passando como parâmetro a imagem de nome image.jpg. A imagem precisa estar na mesma pasta onde o programa será iniciado.