Paulo Laureano Estar vivo é uma condição precária com um péssimo prognóstico...

Ensinar a programar jogos


Este verão a água do mar estava fria (15º a 18ºWinking, cheia de algas, e sem o beneficio de um vento levante que tornasse os banhos divertidos. Foi no que respeita à praia o pior verão que apanhei na praia do Barril. Fui à praia apenas três vezes, dei um único mergulho na água gelada, em quinze dias de férias. A maior parte do tempo fiquei em casa e, entre uns pulinhos à piscina e explanada, estive a ensinar os mais novos a programar. Jogos, claro, mas os conceitos são universais.

Como exemplos dos conceitos que estava a ensinar fui fazendo uns joguinhos nos intervalos das aulas. Servem de inspiração para os formandos e são um enorme gozo de escrever para o instructor. Happy

O projecto era ensinar apenas o necessário para fazer um jogo a cada um dos miúdos. Não ser excessivamente exaustivo, passar apenas as bases que se usam 90% do tempo. Usei como linguagem o Blitxmax (open source, gratuito, com suporte a programação orientada a objectos, com "garbage collection"). Podem fazer o download em https://blitzmax.org e divertirem-se a programar para Mac, Windows e Linux.

O mini-curso consistia em 3 aulas (sim, só três) de uma hora e meia.

Os conceitos que foram ensinados:

Aula 1 (o básico)

- datatypes (int / float / long), scope de variáveis
- flow control (while loop até uma condição se realizar) - usado para o loop do jogo
- conditional code ( if / else ) - usado para detectar teclas que fazem uma sprite andar no écran
- Graphics (setup de uma janela com um canvas gráfico), cls para apagar um écran, Flip de um sistema de backbuffer) - onde os exemplo correm…
- sprites (LoadImage / DrawImage) - porque (quase) todos os jogos precisam de uns bonecos baseados em imagens.
- Texto no écran (DrawText) - porque temos que escrever textos com as pontuações do jogo

Aula 2

- Funcões (function)
- estruturas e classes (type) - como criar, como chamar, como instanciar…
- Pensar como um programador, fazer "mais com menos", evitar repetição de código e reutilizar código em diferentes contextos.

Aula 3

- Colisões de sprites - como detectar quando duas sprites ocupam o mesmo espaço no écran
- sprite sheets (para animações) - o exemplo foi como fazer explosões…
- Listas (TLIst) de objectos
- ciclos de "For / EachIn" para percorrer listas



Os jogos que eu escrevi para lhes dar como exemplos:


Pong-1972-Atari-Arcade-1

Baseado no primeiro arcade comercial… reproduzido em código que podem consultar e interpretar… é o mais simples dos exemplos. Não utiliza gráficos baseados em imagens, cada jogador movimenta um rectangulo e a "bola" é um "quadrado". Para um (contra o computador semi-inteligente) ou dois jogadores(um contra o outro). O exemplo foi escrito usando apenas os conceitos explicados nas duas primeiras aulas.

Download the game: Mac / Windows / Linux
Download the source code: All platforms






maxresdefault-2

Octopus - o meu "Game &. Watch" preferido que fez as minhas delicias quando tinha a idade deles… escrevi um "clone" usando apenas o que tinham aprendido nas duas primeiras aulas, a que acrescentei apenas o exemplo de como carregar sons e os tocar.



Download the source code: All platforms





start

Um jogo "original" vagamente inspirado em características do "Defender" (Arcade), em que o jogador tem um campo de batalha do tamanho de vários écrans, visíveis em formato tipo "radar", e no Jetpac (ZX spectrum) em que o jogador tem um jetpac às costas e inimigos que o perseguem… utiliza os conceitos da terceira aula (listas de objectos) e um exemplo de "inheritance" de uma classe com overload de um dos métodos.




Bom, eu achei piada a ensinar a garotada, deu-me um gozo bestial escrever os exemplos, e estou a considerar seriamente fazer uns videos com estas lições. Até estou a considerar ir mais longe e ensinar as mesmas coisas em múltiplas linguagens. Não sei se vou ter o tempo e a pachorra, mas que me está a apetecer é uma certeza. Se o fizer será um projecto comercial, provavelmente em inglês, porque não vejo outra forma de justificar o tempo e dinheiro que teria de dedicar a tal obra.

Update em Maio de 2020: já estão os videos online, de borla para todos…



Farei uma versão video (em Português), mais "descontraída" (versão totalmente amadora) e consequentemente menos trabalhosa, para familiares e filhos de amigos que não estiveram comigo de férias. Os interessados mandem-me um e-mail. Não tenciono tornar esses vídeos públicos, é mesmo só para quem me conhece pessoalmente.

Update em Maio de 2020: Ainda não existe… Happy

Tesourinhos deprimentes... Happy


O que era mais relevante para mim, e que estava perdido na versão antiga da minha página pessoal, está "recuperado".

Deixei de fora umas centenas de artigos que envelheceram "mal". Não se preocupem que não perderam nada. De fora ficaram igualmente referencias a videos e podcasts. Mas podem visitar os meus canais no YouTube e ver os ditos:

Canal principal:
https://www.youtube.com/channel/UCIGNH4JpeG9T7zsUMF-Qgyw

Inclui o meu podcast sobre politica (Tempo de antena):
https://www.youtube.com/playlist?list=PLjSIZ1nqDb2WhYTrXOmWpn-7MbBAfO9hS

Canal sobre jogos:
https://www.youtube.com/channel/UCxzLY-QX9qN9HhLoCsBJN7A

Canal sobre animais:
https://www.youtube.com/channel/UC8feH-RAK_S4V1jng0K1nmg


Deixei links para algumas preciosidades no YouTube:














2019... ano de mudança.

Mantenho uma página pessoal na Internet há vários anos. Desde 2000 e picos… Antes disso escrevia nas BBS (na BAT e na Visus) de que era Sysop nos anos 90. Publiquei centenas de vídeos no YouTube, e deixei pelas redes sociais escritos dispersos ao sabor do momento.

Agora, em Maio de 2019, decidi fazer algumas mudanças na forma como me relaciono com a as pessoas no cyber-espaço. Não tenciono parar de partilhar algumas coisas, mas tenciono alterar formatos e o tipo de mensagens que partilho. Não vou anunciar quais as mudanças, em detalhe, mas será certamente visível a quem me segue nestas andanças…

Acabaram os comentários de estranhos na minha página pessoal. Se alguém quiser falar comigo tem o meu e-mail na página. Quem me conhece pessoalmente tem o meu telefone.

Faço 50 anos este ano… o tempo voa. Com a passagem do tempo vou mudando a forma como encaro a vida, os problemas do dia a dia, o que se passa à minha volta. Não me interpretem mal, eu gosto imenso da minha vida, mas os anos fazem com que se valorizem coisas diferentes, e de forma diferente.

Este fim de semana (estou a escrever isto no domingo à noite) passei os dias a montar um novo servidor. O gozo que me dá administrar sistemas aparentemente não se esgota. Continuo a gostar mais de *BSD que de Linux. Mais agora que nas últimas 3 décadas. Ter documentação decente e estabilidade é de longe mais importante para mim que o acesso às últimas novidades disponíveis no mundo dos sistemas posix. O novo servidor, onde está esta página alojada, passa a ter como domínio o "plaureano.com". O "mrnet.pt" e o "fullit.pt" eram da empresa (Full IT) que durante anos geri. Este servidor é pessoal. Não há nada "profissional" a correr nele. Desde a BAT BBS (anos 90 do século passado) que não administrava uma máquina apenas por prazer, sem ter uma obrigação profissional associada. É um hobby agora, depois de anos a ser uma profissão, administrar sistemas.

Montei o meu servidor de email/web pessoal, para projectos meus e de familiares e amigos, e um sistema de "cloud" tipo Dropbox (para não passar a vida a lidar com as limitações das minhas assinaturas gratuitas da Dropbox e iCloud). O ultimo dos servidores da Full IT "morre" no final do mês, pelo que tinha que tratar disto, deixaria de ter onde alojar o meu e-mail e blog… Happy