Mudanças entre as edições de "Computação Gráfica: Introdução ao PyGame"

De Aulas
(Criou página com '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 é indep...')
 
 
(3 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
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.
 
O PyGame
 
 
Pygame é um "motor de jogo" ou em inglês "game engine". Um motor de jogo é um software ou um conjunto de bibliotecas usado na simplificação do desenvolvimento de jogos, por exemplo, para videogames e computadores.
 
 
As funcionalidades típicas fornecidas por um motor de jogo incluem o mecanismo de renderização (ou rendering engine) para gráficos 2D ou 3D, um mecanismo de detecção de colisão, suporte a sons, uma linguagem de script, suporte à animação, inteligência artificial e jogos pela internet.
 
 
Ou seja, é utilizado um motor de jogo que contém todas as funções visuais e de processamento como base do código, e a essência do jogo como a estratégia, o design e a ideia principal que serão realmente pensadas e estudadas para o jogo.
 
  
 
= Game Loop =
 
= Game Loop =
  
[[Arquivo:Gameloop.png|100px|commoldura|direita|game loop]]
+
[[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 33: Linha 26:
  
 
= Hello World no PyGame mostrando uma imagem =
 
= Hello World no PyGame mostrando uma imagem =
 +
 +
<syntaxhighlight lang="python">
 +
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
 +
</syntaxhighlight>
 +
 +
; 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.

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

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.