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

Quase um ano mais tarde: videos para aprender a programar em C


Passou quase um ano desde as minhas ferias de verão de 2019. Na altura estava um tempo péssimo, a praia do barril cheia de algas com uma água gelada, dediquei 15 dias a ensinar a malta mais nova (teenagers) a programar. Foi a melhor alternativa a maus dias de praia que arranjei. Entretanto fiz uns videos com as ditas aulas, obviamente modificadas, desde as ferramentas (o blitzmax cedeu o lugar ao C) ao material de apoio (de um pequeno programa "explicado linha a linha" para uma revista gratuita e alguns exemplos adicionais que escrevi).



Divirtam-se.

Tenho alguma esperança que este ano esteja sol, água quentinha e o mar sem algas… para regressar com um belo bronze em vez de voltar com meia dúzia de jogos na mão. Com o COVID-19, que gostava de evitar, não sei muito bem o que me espera, mas preciso de mudar de cenário que este ano foi trabalhoso e mais complicado que o normal.

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