sexta-feira, 18 de março de 2022

Tutorial do Concurso #4: Bala

Apresentamos hoje mais um pequeno jogo escrito em BASIC Apascalado para familiarizar os concorrentes com esta técnica insólita de programar no ZX Spectrum. Os jogos vão ser todos escritos em inglês para benefício dos concorrentes estrangeiros.

A linguagem BASIC Apascalado, tal como o nome indica, foi inspirada pela linguagem Pascal. Esta linguagem foi criada em 1987 para divulgar a programação estruturada no jornal MicroSe7e. Em 2021 a linguagem BASIC Apascalada foi aproximada à linguagem NextBASIC do ZX Spectrum Next.

Parece que o NextBASIC do Spectrum Next foi desenvolvido a partir do BASIC do Sinclair QL de 1984 porque estas duas linguagens são muito semelhantes - mas tal pode ser apenas coincidência porque as linguagens estruturadas são todas muito semelhantes...

O jogo de hoje é uma versão dum jogo de 1982 para o ZX81. Este jogo teve uma versão para o ZX Spectrum na colectânea "No Tempo do ZX81" de 1983, que incluía 4 jogos do ZX81. Atualmente existe um jogo famoso com os mesmos princípios básicos: Angry Birds.

As versões anteriores usavam fórmulas complicadas para calcular a trajectória do projéctil. Esta versão abandonou as fórmulas complicadas e enveredou pelo cálculo diferencial que se ensina na universidade. Torna-se assim fácil incluir a resistência do ar, etc.. Dito assim, parece que estamos a falar de algo demasiado complicado para o comum dos mortais mas, na verdade, o programa ficou muito mais simples - os computadores gostam de cálculo diferencial!

A coisa mais complicada é calcular a direcção de saída da bala:

     LET dx = PotenciaDoCanhao * COS(angulo)

  LET dy = PotenciaDoCanhao * SIN(angulo)

A partir daí a coisa fica simples; a velocidade horizontal é sempre igual, portanto, o incremento horizontal é sempre o mesmo:

  LET X = X + dx

E, a velocidade vertical vai sofrendo os efeitos da gravidade, portanto, o incremento vertical vai diminuindo:

     LET dy = dy - k * AceleracaoDaGravidade

  LET Y = Y + dy

Depois é só fazer:

   PLOT(X,Y)

Todos os programas BASIC Apascalado que apresentamos aqui podem ser melhorados e todos estão convidados a melhorá-los.

Para jogar online, clicar aqui.

Para ler as 2 listagens é mais fácil aqui.

Para fazer download dos 3 ficheiros, clicar aqui.

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

Sem comentários:

Enviar um comentário