Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

CProgPy_Pygame.pdf, Notas de aula de Direito

quit() para fechar todos o módulos de pygame. # Encerrando modulos de Pygame pygame.quit(). CURSO DE INTRODUÇÃO À PROGRAMAÇÃO DE JOGOS EM PYTHON.

Tipologia: Notas de aula

2022

Compartilhado em 07/11/2022

Homer_JS
Homer_JS 🇧🇷

4.5

(41)

222 documentos

1 / 80

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50

Pré-visualização parcial do texto

Baixe CProgPy_Pygame.pdf e outras Notas de aula em PDF para Direito, somente na Docsity!

SUMÁRIO

  • Introdução......................................................................................................................................
  • Programa 1: Criando uma Janela...........................................................................................
  • Programa 2: Figuras e Texto...................................................................................................
  • Programa 3: Animação............................................................................................................
  • Programa 4: Colisão.................................................................................................................
  • Programa 5: Teclado e Mouse..............................................................................................
  • Programa 6: Imagem e Som.................................................................................................
  • Programa 7: Jogo......................................................................................................................

PyGame é um módulo usado na programação de jogos 2D. Ele pode ser executado em todas as principais plataformas e fornece ferramentas simples para gerenciar ambientes gráfi- cos complexos, com movimentos e sons.

O módulo Pygame inclui vários outros módulos com funcionalidades para a parte

gráfica, som, mouse e muitos outros. Neste tutorial abordaremos os módulos e funções bá-

sicas de Pygame. Para isto, faremos vários programas que nos mostrarão como utilizá-los.

Relacionando alguns módulos com suas atribuições.

cursors carrega imagens de cursores (N.T. mouse), inclui cursores padrão

display controla a exibição da janela ou tela

draw desenha formas simples sobre uma Surface

event controla eventos e fila de eventos

font disponibiliza fontes

image salva e carrega imagens

joystick controla dispositivos joystick

key controla o teclado

locals contém constantes de Pygame

mixer carrega e executa sons

mouse controla o mouse

movie executa filmes no formato mpeg

time controla a temporização

transform permite redimensionar e mudar a orientação de imagens

TURMA PILOTO 2017 LABTIME/UFG

Programa 1:

Criando uma Janela

Em nosso primeiro programa vamos criar uma janela. Esta janela ficará aberta até o

usuário clicar no “x” no canto superior da janela. O código está no arquivo p1_janela.py.

TURMA PILOTO 2017 LABTIME/UFG

Continuando...

janela = pygame.display.set_mode((400, 300)) janela = pygame.display.set_mode((400, 300))

...criamos a janela com a função set_mode() do módulo display. Este módulo é um

dos que está dentro do módulo pygame.

A função set_mode() cria um objeto pygame.Surface (ver quadro sobre objetos) e

tem como parâmetro uma tupla com dois inteiros - (400,300) neste exemplo - referentes à

largura e altura da janela, em pixels.

Tupla Largura Altura

A seguir damos um título à janela com a função pygame.display.set_caption().

pygame.display.set_caption(‘Olá, mundo!’) Título da Janela TURMA PILOTO 2017 LABTIME/UFG

Objetos, métodos e atributos Objetos, métodos e atributos serão palavras muito utilizadas a partir de agora neste tutorial. Já usamos métodos anteriormente, sem mencioná-los, como por exemplo no uso de listas. Vejamos o seguinte exemplo: lista_var = [1,2,3] lista_var.append(4) Podemos ver que lista_var contém uma lista como valor e nela adicionamos “.append” passando 4 como argumento.

Um método é como uma função que está acoplada a um valor, neste caso o

método append() está acoplado ao valor lista_var. O método append() é um dos

muitos métodos de listas e, como explicado quando vimos listas, adiciona um

elemento no final da lista.

Já um objeto nada mais é do que um valor que contém métodos (e atributos).

No exemplo dado o objeto é lista_var.

Assim como um método é uma função associada a um objeto, um atributo é

uma variável associada a um objeto. Veremos vários casos de atributos ao longo

deste texto.

TURMA PILOTO 2017 LABTIME/UFG

Talvez a melhor forma de lidar com esta situação seja não se preocupar muito se está sendo usado uma função de um módulo ou um método de um objeto, no próprio texto explicitaremos o que está sendo feito. O importante é entender que tanto funções como métodos podem receber dados e realizam al- guma tarefa.

Antes de entrar no loop, foi criado um booleano com o nome deve_continuar que nos

indicará se o loop que está a seguir deve ser repetido ou não. Inicialmente damos o valor True

para que o código dentro do loop seja executado.

deve_continuar = True

Após, temos um loop que será executado sempre que a variável deve_continuar for

True. No seu interior checamos por eventos. Eventos são gerados sempre que o usuário pres-

siona uma tecla ou dá um clique no mouse, por exemplo.

deve_continuar = True

Loop do jogo

while deve_continuar:

Checando eventos

for event in pygame.event.get():

Se for um evento QUIT

if event.type == pygame.QUIT: deve_continuar = False TURMA PILOTO 2017 LABTIME/UFG

Chamando pygame.event.get() será retornardo qualquer novo objeto do tipo pygame.

event.Event que tenha sido gerado desde a chamada anterior a essa função (a cada execu-

ção deste loop while ).

for event in pygame.event.get():

Se for um evento QUIT

if event.type == pygame.QUIT: deve_continuar = False

Os objetos pygame.event.Event têm um atributo chamado type (tipo, em inglês). No

código, checamos o tipo de cada evento. Pygame gera o evento pygame.QUIT (ou QUIT , para

simplificar) quando o usuário dá um clique no “x” da janela. Este evento também é gerado

se o computador é desligado e tenta terminar todos os programas que estão sendo execu-

tados. Se temos um evento deste tipo, segundo nosso código, mudamos o valor da variável

deve_continuar para False , fazendo com que o loop não volte a ser executado.

for event in pygame.event.get():

Se for um evento QUIT

if event.type == pygame.QUIT: deve_continuar = False Se clicar em “x”da janela Este valor evita que o loop se repita.

Para finalizar, chamamos a função pygame.quit() para fechar todos o módulos de

pygame.

Encerrando modulos de Pygame

pygame.quit() TURMA PILOTO 2017 LABTIME/UFG

No programa anterior vimos como criar uma janela. Agora veremos como adicionar

algumas figuras e textos. O código se encontra no arquivo p2_figuras.py.

import pygame

Definindo as cores

PRETO = (0, 0, 0) BRANCO = (255, 255, 255) VERMELHO = (255, 0, 0) VERDE = (0, 255, 0) AZUL = (0, 0, 255)

Definindo PI

PI = 3.

Inicializamos os módulos de Pygame

pygame.init()

Criamos a janela com título Figuras e texto

janela = pygame.display.set_mode((500, 400)) pygame.display.set_caption(‘Figuras e Texto’)

Preenchendo o fundo da janela com a cor branca

janela.fill(BRANCO)

Trabalhando com texto

fonte = pygame.font.Font(None, 48) texto = fonte.render(‘Olá, mundo!’, True, BRANCO, AZUL) janela.blit(texto, [30, 150])

Desenhando figuras

pygame.draw.line(janela, VERDE, (60, 260), (420, 260), 4) pygame.draw.polygon(janela, PRETO, ((191, 206), (236, 277), (156, 277)),0) pygame.draw.circle(janela, AZUL, (300, 50), 20, 0) pygame.draw.ellipse(janela, VERMELHO, (400, 250, 40, 80), 1) pygame.draw.rect(janela, VERDE, (20, 20, 60, 40), 0) pygame.draw.arc(janela, VERMELHO, [250, 75, 150, 125], PI/2, 3*PI/2, 2) pygame.draw.arc(janela, PRETO, [250, 75, 150, 125], - PI/2, PI/2, 2)

mostrando na tela tudo o que foi desenhado

pygame.display.update() deve_continuar = True while deve_continuar: #Loop para checar eventos for event in pygame.event.get(): #Condicional para sair do loop if event.type == pygame.QUIT: deve_continuar = False pygame.quit() TURMA PILOTO 2017 LABTIME/UFG

Após importar pygame, definimos algumas cores e a variável PI. Usamos alguns no-

mes de variáveis em letras maiúsculas, pois queremos que estes valores sejam constantes,

ou seja, em nenhum momento alteraremos o valor destas variáveis. O uso de variáveis em

maiúsculas para constantes é apenas uma convenção na programação, ou seja, não é algo

que deva ser feito desse jeito, mas é costume em muitas linguagens.

import pygame

Definindo as cores

PRETO = (0, 0, 0) BRANCO = (255, 255, 255) VERMELHO = (255, 0, 0) VERDE = (0, 255, 0) AZUL = (0, 0, 255)

Definindo PI

PI = 3.

Em dispositivos eletrônicos, como no caso de seu monitor, qualquer cor é formada a

partir de três cores básicas:

  • Vermelho ( R ed, em ingles)
  • Verde ( G reen)
  • Azul ( B lue)

Estas cores formam o que é conhecido como sistema de cores RGB. Em pygame re-

presentamos estes valores como uma tupla de três inteiros com valores entre 0 e 255 cada

um. Sendo que o primeiro valor da tupla corresponde à quantidade de vermelho, o segundo

à quantidade de verde e o último à quantidade de azul.

PRETO = (0, 0, 0)

Valor de vermelho Valor de verde Valor de azul TURMA PILOTO 2017 LABTIME/UFG

Este método (assim como outros de desenho) mudarão o objeto pygame.Surface

que o chamou, mas esta mudança não será, ainda, visivel na tela do computador. Esta mu-

dança será visível somente após a chamada da função pygame.display.update() , que será

usada mais adiante.

janela.fill(BRANCO) Só será visível se pygame.display.update()

A seguir criamos um objeto do tipo pygame.font.Font que chamamos de fonte. O pri-

meiro parâmetro é o nome da fonte a ser usada. Se passarmos None como argumento, será

usada a fonte padrão do sistema. O segundo parâmetro é o tamanho da fonte.

Trabalhando com texto

fonte = pygame.font.Font(None, 48) Nome da fonte Tamanho da Fonte

Após, é criado um outro objeto pygame.Surface , através do método render() cha-

mado por um objeto pygame.font.Font ( fonte , no caso), que conterá uma string. O primeiro

parâmetro de render() é a string a ser inserida. O segundo parâmetro é um booleano deter-

minando se será usado suavizado ou não. Suavizado (chamado anti-aliasing em ingles) é

uma técnica que nos dá a ilusão de que uma imagem é “lisa”, “embaçando” as bordas de uma

TURMA PILOTO 2017 LABTIME/UFG

linha. No código foi passado o valor True , pois queremos suavizado. O terceiro parâmetro é

a cor do texto e o quarto parâmetro a cor do fundo do texto. Com isto temos a imagem do

texto, porém, ainda precisamos dizer onde o texto será colocado. Para isto precisamos do

método blit().

Trabalhando com texto

fonte = pygame.font.Font(None, 48) texto = fonte.render(‘Olá, mundo!’, True, BRANCO, AZUL) Texto a ser inserido Cor do Texto Suavizado Cor de Fundo

O método blit() desenhará o conteúdo de um objeto pygame.Surface (no caso, texto )

no objeto pygame.Surface que chamou o método (no caso, janela ). O segundo parâmetro é a

posição, relativa ao objeto que chamou o método, onde o texto será colocado.

janela.blit(texto, [30, 150]) Posição em janela Desenha texto em janela TURMA PILOTO 2017 LABTIME/UFG

Depois desenhamos um polígono. Um polígono é qualquer figura plana limitada por

segmentos de retas. A função pygame.draw.polygon() , que é usada para criar polígonos, tem

como parâmetros o objeto pygame.Surface onde será desenhado, a cor, uma tupla (ou lista)

contendo as coordenadas dos pontos que serão os vértices do polígono, no caso um triângu-

lo; e a largura da linha.

pygame.draw.polygon(janela, PRETO, ((191, 206), (236, 277), (156, 277)),0) Onde será desenhado Cor Coordenadas dos vértices

Desenhamos um círculo, a seguir, com a função pygame.draw.circle(). O primeiro pa-

râmetro desta função é um objeto pygame.Surface onde o círculo será desenhado ( janela ). O

segundo parâmetro é a cor. O terceiro sâo as coordenadas do centro do círculo em uma tupla

ou lista. O quarto parâmetro é o raio do círculo em pixels. O último parâmetro indica a largura

da linha. Se for passado 0 ou nada, será desenhado um círculo preenchido.

pygame.draw.circle(janela, AZUL, (300, 50), 20, 0) Objeto pygame.Surface (^) Cor Raio Largura da linha Se 0 ou nada, a figura é preenchida Coordenadas do centro TURMA PILOTO 2017 LABTIME/UFG

A seguinte figura é uma elipse, criada com a função pygame.draw.ellipse(). Esta fun-

ção é similar à pygame.draw.circle() , com uma diferença: em vez de passar as coordenadas

do centro do círculo e o raio, uma tupla de quatro inteiros indicando a posição da esquerda

(em relação ao eixo x - horizontal), do topo (en relação ao eixo y - vertical), a largura e a altura

da elipse é passada.

pygame.draw.ellipse(janela, VERMELHO, (400, 250, 40, 80), 1) Esquerda Topo Largura Altura

Após, desenhamos um retângulo, usando pygame.draw.rect(). O terceiro parâmetro

desta função é uma tupla de quatro inteiros correspondentes à posição do lado da esquerda

e do topo, largura e altura do retângulo. Os outros parâmetros são semelhantes aos das figu-

ras recentemente analisadas.

pygame.draw.rect(janela, VERDE, (20, 20, 60, 40), 0) Esquerda Topo Largura Altura Largura da linha Se 0 ou nada, figura é preenchida TURMA PILOTO 2017 LABTIME/UFG