sexta-feira, 12 de agosto de 2022

Tutorial do Concurso #25 - Worm

Hoje temos um programa que é ao mesmo tempo uma entrada para o concurso BASIC Apascalado e um Tutorial do Concurso. O objetivo é incentivar novos concorrentes e definir um padrão mínimo de qualidade para o concurso.

Este jogo é o clássico Worm / Snake no qual o objectivo é comer os frutos e não chocar com as paredes. Esta versão foi escrita em 2020 por David Magalhães na linguagem Java para consola e adaptada por David Magalhães em 2022 para BASIC Apascalado.

Os computadores atuais são mais de 1000 vezes mais rápidos que o Spectrum, por isso, algumas sequências de IF-THEN-ELSE-IF-ELSE tiveram que ser convertidas em tabelas para ficar mais rápido. As rotinas originais ainda estão no programa e podem ser observadas para melhor compreender o funcionamento do programa. Mesmo assim, o jogo ainda ficou lento. Assim, o jogo deve ser corrido a três vezes a velocidade normal.

O mais importante neste programa é apagar a ponta da cauda. Eis algumas alternativas para programar a deteção da cauda:

  1. Usar um array com a lista das coordenadas da cauda
  2. Usar um array 22x32 para armazenar uma cópia do ecrã e colocar lá os sentidos da cauda.
  3.  Usar SCREEN$. Mas o SCREEN$ não funciona com caracteres UDG. Quem quiser usar caracteres UDG e SCREEN$ tem que fazer um truque. Este truque foi explicado no MicroSe7e #6.
  4. Desenhar a cauda com 4 cores diferentes e, em vez de SCREEN$, usar ATTR (foi a opção usada aqui).

É tudo por hoje. Ficamos à espera de mais concorrentes. Todos podem concorrer. O importante aqui não é ganhar prémios mas recordar os velhos tempos e conviver com os amigos.

Para jogar online, clicar aqui.

Para ler as listagens é mais fácil aqui.

Para fazer download dos ficheiros, clicar aqui:

A página original de David Magalhães pode aqui ser visualizada.

Quem estiver interessado em participar no concurso, pode ler o regulamento aqui.

Sem comentários:

Enviar um comentário