SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
Desenvolvendo Jogos com pygame
Rafael Guterres Jeffman
2019
Por que
jogos?
Desenvolver Jogos
• É divertido.
• Tu sempre quis fazer.
• Foi a primeira coisa que tu
fez com algo que parecia um
computador.
• Não precisa ser difícil.
• Não é fácil.
• Tu quer mostrar pra todo
mundo que tu consegue
desenvolver um jogo.
É muito divertido!
Por que
Python?
Por que Python?
• É divertido.
• Permite que a preocupação seja o problema.
• Faz com que tu aprenda uma linguagem que está sendo muito
utilizada.
Por que
pygame?
pygame
• É multi-plataforma (SDL).
• É uma biblioteca de componentes.
• Retira as parada chata da programação de jogos.
• Não é um engine de jogos, afinal, queremos programar.
Every saga has a beginning!
Durante um teste de rotina, a nave Genesis é
trasportada através de um wormhole para o
quadrante gamma da galáxia, e precisa sobreviver
à Guerra do Infinito.
O que era só um dia de testes virou
uma luta pela sobrevivência.
Na vida nada se cria...
• Gradius/Nemesis
• Farscape
• Star Trek: Voyager
• Um filme muito, muito ruim...
Modelo de Aplicação pygame
import pygame
pygame.init()
# inicia tela
screen = pygame.display.set_mode((320,200))
pygame.display.set_caption("Hello World!")
# loop principal
running = True
while running:
# trata eventos
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# atualiza objetos
# desenha objetos
# pygame usa double buffer!
pygame.display.update()
O mínimo que voce precisa saber...
pygame.init()
width, height = size = (800, 600)
flags = pygame.FULLSCREEN | pygame.HWSURFACE | pygame.DOUBLEBUF
screen = pygame.display.set_mode(size, flags)
Desenhando na tela
python.draw.circle(screen, red, (100,100), 50)
python.draw.polygon(screen, white, point_list)
python.draw.rect(screen, white, (x, y, rect_w, rect_h))
screen.blit(image, (x, y))
Um universo a estrelar...
from random import randint , choice
def create_star(x):
y = randint(0, height)
speed = choice([1, 2, 3])
magnitude = choice([1, 2, 3])
color = (coice(100, 200, 250),) * 3
return (x, y, speed, magnitude , color)
List Comprehension
• É uma construção de Python que permite o processamento de
uma lista de elementos.
starfield = [create_star(randint(0, width))
for star in range(count)]
Operador Ternário
• O operador ternário seleciona um entre dois valores, dada uma
condição.
• Vai muito bem com guacamole e list comprehension.
stars = [(x - speed, y, speed, mag, color)
if x - speed > 0
else create_star(width)}
for x, y, speed, mag, color in stars]
Desenhando a lista de estrelas
• Os list comprehension estão entre as estruturas mais eficientes
para processar listas.
[python.draw.circle(screen, color, (x, y), mag)
for x, y, _, mag, color in stars]
Sprites
• Sprites são imagens 2D, mas nos jogos, eles tem movimento.
• O uso de sprites facilita a definição dos objetos móveis do jogo.
• Sprites, normalmente, tem suporte a transparência.
Sprites com animação
• pygame suporta imagens GIF, mas sem animação.
• É possível utilizar eventos para animar sprites.
• pygame oferece diversos plugins que podem ser utilizados.
• Obviamente, existe um plugin para GIF animado (que não
funciona).
Tratamento de Eventos
• pygame oferece um sistema de eventos por polling.
• Para criar um engine com um loop genérico, é preciso permitir
que o código cliente seja chamado de volta.
• Um mecanismo desses permite que funções cliente sejam
chamadas para eventos do pygame.
• E para felicidade geral da nação...
funções são cidadãs de primeira ordem!
O loop de eventos
# loop genérico , em Game.run()
while self.running:
# handle events
for event in pygame.event.get():
handle_event(event)
Respondendo a eventos de teclado
def handle_event(event):
if event.type in [pygame.KEYDOWN]:
keydown(event)
def keydown(event):
for handler in keydown_handlers:
handler(event)
Respondendo a eventos de teclado
# my code
def move(event):
"""Move player with directional keys."""
keys = pygame.key.get_pressed()
dx, dy = 0, 0
dy = -1 if keys[pygame.K_UP] else 0
dy = dy + 1 if keys[pygame.K_DOWN] else dy
dx = -1 if keys[pygame.K_LEFT] else 0
dx = dx + 1 if keys[pygame.K_RIGHT] else dx
player.move = (dx * config.speed, dy * config.speed)
# Configuring the game object
game.on_keydown((pygame.K_UP, pygame.K_DOWN,
pygame.K_LEFT, pygame.K_RIGHT), move)
game.on_keyup((pygame.K_UP, pygame.K_DOWN ,
pygame.K_LEFT, pygame.K_RIGHT), move)
E o que mais
falta fazer?
Um jogo tem tanta coisa...
• Tratamento de colisões.
• Comportamento de NPCs.
• Trocas de fazes.
• Cenários.
Sem audio?
pygame Mixer!
• pygame tem um mixer que, sem configuração, suporta 8 canais
de audio.
• Suporte a loops de áudio já embutido.
• Suporte a diversos formatos de áudio.
• Ogg Vorbis é a melhor opção.
• E a internet está cheia de loops royalty free...
E agora?
Pra onde vou?
https://python.org
https://pygame.org
Próximos Passos
• Desenvolver um engine para criação de jogos 2D!
• Para ensinar programação orientada a objetos com Python.
• Para ensinar design de jogos.
• Para ensinar criação de roteiros de jogos.
E para criar jogos, né?
Na verdade...
Esse nunca foi o objetivo...
Mas nem uma demonstração?
https://github.com/rafasgj/genesis
Muito Obrigado!
mailto:rafasgj@gmail.com
https://rafaeljeffman.com/tchelinux

Mais conteúdo relacionado

Mais procurados

Apresentação sobre produtividade nas empresas
Apresentação sobre produtividade nas empresasApresentação sobre produtividade nas empresas
Apresentação sobre produtividade nas empresasLeandro Rodrigues
 
O Scratch no ensino da programação
O Scratch no ensino da programaçãoO Scratch no ensino da programação
O Scratch no ensino da programaçãoJoão Sá
 
Processos administrativos
Processos administrativosProcessos administrativos
Processos administrativoselisabatista7
 
Teoria da contabilidade 1 - slid -
Teoria da contabilidade   1  - slid -Teoria da contabilidade   1  - slid -
Teoria da contabilidade 1 - slid -Gis Viana de Brito
 
Folha de pagamento
Folha de pagamentoFolha de pagamento
Folha de pagamentoadmcontabil
 
Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição Aislan Rafael
 
그래프에서 대시보드까지, 서비스를 위한 데이터 시각화
그래프에서 대시보드까지, 서비스를 위한 데이터 시각화그래프에서 대시보드까지, 서비스를 위한 데이터 시각화
그래프에서 대시보드까지, 서비스를 위한 데이터 시각화Minho Lee
 
Lista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosLista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosTárcio Sales
 
Revisão assistente administrativo
Revisão   assistente administrativoRevisão   assistente administrativo
Revisão assistente administrativoProfe Raul
 

Mais procurados (13)

Apresentação sobre produtividade nas empresas
Apresentação sobre produtividade nas empresasApresentação sobre produtividade nas empresas
Apresentação sobre produtividade nas empresas
 
O Método Kanban
O Método KanbanO Método Kanban
O Método Kanban
 
O Scratch no ensino da programação
O Scratch no ensino da programaçãoO Scratch no ensino da programação
O Scratch no ensino da programação
 
Processos administrativos
Processos administrativosProcessos administrativos
Processos administrativos
 
Teoria da contabilidade 1 - slid -
Teoria da contabilidade   1  - slid -Teoria da contabilidade   1  - slid -
Teoria da contabilidade 1 - slid -
 
Folha de pagamento
Folha de pagamentoFolha de pagamento
Folha de pagamento
 
Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição Aula 04 - POO - Estruturas de Controle e Repetição
Aula 04 - POO - Estruturas de Controle e Repetição
 
Aula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionaisAula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionais
 
그래프에서 대시보드까지, 서비스를 위한 데이터 시각화
그래프에서 대시보드까지, 서비스를 위한 데이터 시각화그래프에서 대시보드까지, 서비스를 위한 데이터 시각화
그래프에서 대시보드까지, 서비스를 위한 데이터 시각화
 
As Rotinas Administrativas de Um Departamento Pessoal
As Rotinas Administrativas de Um Departamento PessoalAs Rotinas Administrativas de Um Departamento Pessoal
As Rotinas Administrativas de Um Departamento Pessoal
 
Scrum
ScrumScrum
Scrum
 
Lista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e AutômatosLista de Exercícios - Linguagem Formais e Autômatos
Lista de Exercícios - Linguagem Formais e Autômatos
 
Revisão assistente administrativo
Revisão   assistente administrativoRevisão   assistente administrativo
Revisão assistente administrativo
 

Semelhante a Desenvolvendo jogos com pygame

Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Tchelinux
 
Erick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em FlutterErick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em FlutterDevCamp Campinas
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphereEloi Júnior
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Desenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanDesenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanTchelinux
 
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...Tchelinux
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developersjuliocoopergames
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...Danilo J. S. Bellini
 
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...iMasters
 
INdT Mobile Labs - Sparta
INdT Mobile Labs - SpartaINdT Mobile Labs - Sparta
INdT Mobile Labs - SpartaHeitor Carlos
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Flávio Ribeiro
 
Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersiMasters
 
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-xComputer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-xPedro Kayatt
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It YourselfBruno Nascimento
 
Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...
Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...
Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...INdT
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfSimoneSantos16595
 

Semelhante a Desenvolvendo jogos com pygame (20)

Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.
 
Minicurso pygame
Minicurso pygameMinicurso pygame
Minicurso pygame
 
Erick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em FlutterErick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em Flutter
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Desenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanDesenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael Jeffman
 
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developers
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
 
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
InterCon 2016 - Software as a service usando Go como principal linguagem: os ...
 
INdT Mobile Labs - Sparta
INdT Mobile Labs - SpartaINdT Mobile Labs - Sparta
INdT Mobile Labs - Sparta
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
 
Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game Developers
 
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-xComputer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
 
Arduino e Python: Do It Yourself
Arduino e Python: Do It YourselfArduino e Python: Do It Yourself
Arduino e Python: Do It Yourself
 
Usando o winplot
Usando o winplotUsando o winplot
Usando o winplot
 
Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...
Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...
Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento d...
 
Apostila Jogos
Apostila Jogos Apostila Jogos
Apostila Jogos
 
Idez
IdezIdez
Idez
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdf
 

Mais de Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 
Monitoramento com Zabbix - Daniel Lara - Tchelinux Santa Cruz do Sul 2019
Monitoramento com Zabbix - Daniel Lara - Tchelinux Santa Cruz do Sul 2019Monitoramento com Zabbix - Daniel Lara - Tchelinux Santa Cruz do Sul 2019
Monitoramento com Zabbix - Daniel Lara - Tchelinux Santa Cruz do Sul 2019Tchelinux
 

Mais de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 
Monitoramento com Zabbix - Daniel Lara - Tchelinux Santa Cruz do Sul 2019
Monitoramento com Zabbix - Daniel Lara - Tchelinux Santa Cruz do Sul 2019Monitoramento com Zabbix - Daniel Lara - Tchelinux Santa Cruz do Sul 2019
Monitoramento com Zabbix - Daniel Lara - Tchelinux Santa Cruz do Sul 2019
 

Desenvolvendo jogos com pygame

  • 1. Desenvolvendo Jogos com pygame Rafael Guterres Jeffman 2019
  • 3. Desenvolver Jogos • É divertido. • Tu sempre quis fazer. • Foi a primeira coisa que tu fez com algo que parecia um computador. • Não precisa ser difícil. • Não é fácil. • Tu quer mostrar pra todo mundo que tu consegue desenvolver um jogo. É muito divertido!
  • 5. Por que Python? • É divertido. • Permite que a preocupação seja o problema. • Faz com que tu aprenda uma linguagem que está sendo muito utilizada.
  • 7. pygame • É multi-plataforma (SDL). • É uma biblioteca de componentes. • Retira as parada chata da programação de jogos. • Não é um engine de jogos, afinal, queremos programar.
  • 8.
  • 9. Every saga has a beginning! Durante um teste de rotina, a nave Genesis é trasportada através de um wormhole para o quadrante gamma da galáxia, e precisa sobreviver à Guerra do Infinito. O que era só um dia de testes virou uma luta pela sobrevivência.
  • 10. Na vida nada se cria... • Gradius/Nemesis • Farscape • Star Trek: Voyager • Um filme muito, muito ruim...
  • 11. Modelo de Aplicação pygame import pygame pygame.init() # inicia tela screen = pygame.display.set_mode((320,200)) pygame.display.set_caption("Hello World!") # loop principal running = True while running: # trata eventos for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # atualiza objetos # desenha objetos # pygame usa double buffer! pygame.display.update()
  • 12. O mínimo que voce precisa saber... pygame.init() width, height = size = (800, 600) flags = pygame.FULLSCREEN | pygame.HWSURFACE | pygame.DOUBLEBUF screen = pygame.display.set_mode(size, flags)
  • 13. Desenhando na tela python.draw.circle(screen, red, (100,100), 50) python.draw.polygon(screen, white, point_list) python.draw.rect(screen, white, (x, y, rect_w, rect_h)) screen.blit(image, (x, y))
  • 14. Um universo a estrelar... from random import randint , choice def create_star(x): y = randint(0, height) speed = choice([1, 2, 3]) magnitude = choice([1, 2, 3]) color = (coice(100, 200, 250),) * 3 return (x, y, speed, magnitude , color)
  • 15. List Comprehension • É uma construção de Python que permite o processamento de uma lista de elementos. starfield = [create_star(randint(0, width)) for star in range(count)]
  • 16. Operador Ternário • O operador ternário seleciona um entre dois valores, dada uma condição. • Vai muito bem com guacamole e list comprehension. stars = [(x - speed, y, speed, mag, color) if x - speed > 0 else create_star(width)} for x, y, speed, mag, color in stars]
  • 17. Desenhando a lista de estrelas • Os list comprehension estão entre as estruturas mais eficientes para processar listas. [python.draw.circle(screen, color, (x, y), mag) for x, y, _, mag, color in stars]
  • 18.
  • 19. Sprites • Sprites são imagens 2D, mas nos jogos, eles tem movimento. • O uso de sprites facilita a definição dos objetos móveis do jogo. • Sprites, normalmente, tem suporte a transparência.
  • 20.
  • 21. Sprites com animação • pygame suporta imagens GIF, mas sem animação. • É possível utilizar eventos para animar sprites. • pygame oferece diversos plugins que podem ser utilizados. • Obviamente, existe um plugin para GIF animado (que não funciona).
  • 22.
  • 23. Tratamento de Eventos • pygame oferece um sistema de eventos por polling. • Para criar um engine com um loop genérico, é preciso permitir que o código cliente seja chamado de volta. • Um mecanismo desses permite que funções cliente sejam chamadas para eventos do pygame. • E para felicidade geral da nação... funções são cidadãs de primeira ordem!
  • 24. O loop de eventos # loop genérico , em Game.run() while self.running: # handle events for event in pygame.event.get(): handle_event(event)
  • 25. Respondendo a eventos de teclado def handle_event(event): if event.type in [pygame.KEYDOWN]: keydown(event) def keydown(event): for handler in keydown_handlers: handler(event)
  • 26. Respondendo a eventos de teclado # my code def move(event): """Move player with directional keys.""" keys = pygame.key.get_pressed() dx, dy = 0, 0 dy = -1 if keys[pygame.K_UP] else 0 dy = dy + 1 if keys[pygame.K_DOWN] else dy dx = -1 if keys[pygame.K_LEFT] else 0 dx = dx + 1 if keys[pygame.K_RIGHT] else dx player.move = (dx * config.speed, dy * config.speed) # Configuring the game object game.on_keydown((pygame.K_UP, pygame.K_DOWN, pygame.K_LEFT, pygame.K_RIGHT), move) game.on_keyup((pygame.K_UP, pygame.K_DOWN , pygame.K_LEFT, pygame.K_RIGHT), move)
  • 27. E o que mais falta fazer?
  • 28. Um jogo tem tanta coisa... • Tratamento de colisões. • Comportamento de NPCs. • Trocas de fazes. • Cenários.
  • 30. pygame Mixer! • pygame tem um mixer que, sem configuração, suporta 8 canais de audio. • Suporte a loops de áudio já embutido. • Suporte a diversos formatos de áudio. • Ogg Vorbis é a melhor opção. • E a internet está cheia de loops royalty free...
  • 33. Próximos Passos • Desenvolver um engine para criação de jogos 2D! • Para ensinar programação orientada a objetos com Python. • Para ensinar design de jogos. • Para ensinar criação de roteiros de jogos.
  • 34. E para criar jogos, né?
  • 35. Na verdade... Esse nunca foi o objetivo...
  • 36. Mas nem uma demonstração?