Profile
Proposals
ASCII Art nunca antes vista, com propostas de arquitetura inovadoras em Python
Demonstra o uso e desenvolvimento `terminedia` - uma biblioteca em Python que visa simplificar o acesso a recursos visuais de ASCII Art e cores e interação com usuário no terminal e outros meios com texto (saída em HTML, arquivos TXT, etc...), e uma API completa de desenho usando 1/4 de caractere como um pixel.
Do lado do uso, exploramos ao vivo as possibilidades de efeitos de texto, desenhos, teclado em tempo real, etc...
Do lado do desenvolvimento, um passeio pela arquitetura, que como projeto "blue sky", sem precisar usar um framework ou estrutura pré-estabelecida: vamos visitar um projeto em Python com uma estrutura relativamente complexa, entendendo casos de uso de herança, associação de objetos, classes como Namespaces, e coisas mais avançadas permitidas em Python como "criação dinâmica de classes": possibilidades da linguagem com que normalmente não lidamos ao trabalhar dentro de um framework web, etc...
█ ▝▘ ▐▌ ▝▘
▝█▀▘▗▛▜▖▐▛▜▖█▄█▖ ▜▌ ▐▛▜▖▗▛▜▖▗▛▜▌ ▜▌ ▀▜▖
█ ▐▛▀▘▐▌ █▐▐▌ ▐▌ ▐▌▐▌▐▛▀▘▐▌▐▌ ▐▌ ▗▛▜▌
▝▀▘ ▀▀ ▝▘ ▀ ▝▘ ▝▀▘▝▘▝▘ ▀▀ ▀▀▘ ▝▀▘ ▀▀▘
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.