Profile

João Sebastião de Oliveira Bueno @joao_sebastiao_de


About Me

-

Proposals

Introdução a Python e Desenvolvimento de Jogos

4h ou 8h


 


Um tutorial de aprofundamento do Python básico e conceitos de Orientação a Objetos, com ênfase em multimídia par ajogos 2D: desenhar na tela, arquivos de imagem, som, leitura do teclado em tempo real, etc...


O objetivo do tutorial é chegar a um jogo funcional no estilo clássico de  "shot'en up" - com uma nave ou personagem controlada pelo usuário e naves inimigas entrando em campo. 


Para chegar até o jogo, iniciaremos com um programa básico em Python, usando Pygame para poder desenhar na tela e ler o teclado, que será gradativamente refatorado até uma versão jogável, e os conceitos de isoamento em funções, refatoração para Orientação a Objetos serão introduzidos gradativamente a medida que forem necessários apra evolução do código. 


Serão dadas dicas de como criar jogos com a mesma estrutura e conceitos para Web, usando Canvas e HTML5 e um "transpiler" de Python para Javascript.


A idéia é que acrescentando os conceitos de O.O. na medida do necessário os particpantes adquiram um entendimento mais sólido sobre o uso desse paradigma de programação. Em paralelo, um bom entendimento sobre Python  e estruturas de dados (listas, dicionários, conjuntos)  as partes fundamentais de um jogo, familiaridade com criação artística para jogos 2D, e muita diversão também são parte do que será vivenciado nessa oficina.


Palavras chave: Python, Orientação a Objetos, Jogos, Jogos 2D, Pygame, 


 


 

"MapEngine": Introspecção, Orientação a objetos radical e desenvolvimento rápido de jogos de alta jogabilidade com "meias dúzias" de linhas de código

 


Aqui em Campinas estamos desenvolvendo o projeto JovemHacker, dição 2015 - http://jovemhacker.org/ - fiquei como instrutor do módulo de programação e orientador dos projetos finais. E de repetne, estava com 5 grupos de alunos, cada um querendo criar um jogo diferente como projeto final Há outros orientadores/monitores mas não são muito proeficientes em Python ou jogos. A solução? Criar um framework to handle then all!


 


Em desenvolvimento ativo neste momento, o "MapEngine" é um framework para desenvolvimento de jogos 2D complexos (tela com scroll, várias fazesm orientado a blocos) - cuja idéia é permitir a edição dos mapas das fases em editores de imagem normais, e um mínimo de codificação (de 1 a poucas dezenas de linhas) para cada tipode objeto com que há interação: o framework permite naturalmente jogos no estilo platformer (Mario, Alex Kid), side scrollers, mapas vistos de cima, tanto de ação quanto de RPG (adventure). 


A idéia da palestra é mostrar o mesmo em funcionamento,  o código minimo para jogos diferentes, e como as características de introspecção e O.O. do Python foram usadas para permitir isso,ter espaço para discutir algumas das idéias na mesa _e_ angariar novos colaboradores para o projeto :-)


Principal ponto fraco: o número de linhas para criar uma grande variedade de interação entre objetos é mínimo, mas exige um nível de programação e conhecimento de Python além do que pôde ser desenvolvido em 6 encontros do projeto - na verdade, exigem algum Python razoavlemente avançado. O que por outro lado, faz comq ue seja uma ferramenta bem legal para Pythonistas com algum jogo de cintura criarem seus próprios jogos. (ex.: 


(A propósito, eu mencionei que ele "está em desenvolviemento"?  Já é possível fazer bastante coisa, e espero que seja possível fazer ainda mais até o dia do encontro -


mas quem quiser olhar: http://github.com/jsbueno/mapengine


 def on_over(self, other):
if isinstance(other, Hero):
other.strength = 6
other.events.add(Event(5 * FRAME_DELAY, "strength", 4))



PS.