Tal como foi publicado aqui, o Massimiliano Arca ficou em segundo lugar no concurso de programas de 10 linhas e 120 caracteres com o programa Ballistae.
O Zé Oliveira fez um programa semelhante em 1982, Bala (podem ver aqui o artigo e podem jogar online aqui.
Mas nessa época, ele só tinha um ZX81 com 1K de memória e não dava para fazer melhoramentos. Pois agora, inspirado pelo Massimiliano Arca, ele decidiu fazer alguns melhoramentos.
Primeiro, o Zé oliveira começou por fazer uma versão semelhante ao programa do Massimiliano Arca (podem jogar aqui).
Depois, para superar o Massimiliano Arca, ele fez uma versão em apenas uma linha BASIC (se não acreditam, podem ver aqui.
E depois, para dar mais emoção ao jogo, ele fez uma versão para dois jogadores (podem jogar aqui).
Pormenores técnicos:
É do conhecimento geral que o ZX Spectrum usa 2 bytes para armazenar o tamanho de uma linha BASIC - o que dá um limite de 65536 caracteres. E, como a linguagem BASIC Apascalado não precisa de números de linha, podemos pensar que podemos fazer programas BASIC em apenas uma linha tendo como limitação apenas a memória do computador. Mas, há uma limitação de que pouca gente fala: cada linha apenas pode ter no máximo 127 comandos separados por ":" dois pontos! Curiosidade: o limite para nomes de variáveis é 256 caracteres.
Podem fazer download de todos os ficheiros aqui.


Enorme trabajo, el resultado me ha gustado!!
ResponderEliminarEs increible!!!
Por cierto: Te la devuelvo!!!
No tenia ni idea del Mod el bom jack....Pero te suena esto:
WARHOG desde Uruguay, un juego desarrollado por Abraxas, desarrollado en Z80.
https://sites.google.com/view/abraxassoftware/english/warhog
Bromas aparte, que seguramente, ya lo sabias, pero como estas al filo de la noticia, se te habra pasado, y es mi agradecimiento a la noticia del bom jack!!!
Eish, não conhecia. Amanhã já vou ver. Abraço e obrigado 😀
EliminarUsar linhas grandes tem vantagens e desvantagens.
ResponderEliminarA maior vantagem é o poupar-se uns bytes na numeração. Mas depois o resto são desvantagens .
A primeira é que se as linhas ultrapassarem um determinado número de caracteres (que não sei especificar), mesmo mantendo o conteúdo, o mesmo não é mostrado, o que se torna problemático de consultar.
A segundo tem a ver com a edição. Não só temos que não podemos editar o que não vemos, como nos casos em que vemos, alterar a linha implica fazer uma cópia da mesma antes de apagar a original. E se estivermos com pouca memória, editar linhas grandes é um problema no ZX Spectrum.
A terceira é que, infelizmente, não podemos fazer tudo numa só linha. Dada a ausência do comando end if, sempre que colocamos um if, tudo o que se escreve depois só é executado se a condição se verificar, sendo obrigatório mudar de linha para se terminar o if.
Note-se que fazer tudo numa linha é apenas um exercício de programação sem utilidade prática.
EliminarDe facto, o editor do ZX Spectrum não é prático para fazer linhas compridas - este programa foi escrito no emulador BASinC.
Quanto ao ENDIF, é um problema: não se pode fazer programas compridos em apenas uma linha porque o ZX Spectrum não tem ENDIF. Mas, o BASIC Apascalado tem ENDIF e este programa foi escrito em BASIC Apascalado e depois convertido para BASIC do ZX Spectrum.
Ver o código fonte escrito em BASIC Apascalado incluído no ficheiro ZIP.
Eis um excerto do programa mostrando o ENDIF:
EliminarDEFPROC GameOver
IF pieces1>pieces2 BEGIN w
PRINT #1;AT 1,0;FLASH 1;" Player 1 wins! ";
:FOR i=0 TO 20: BEEP .01,i:BEEP .01,i+RND*3:NEXT i
ELSEIF pieces1<pieces2
PRINT #1;AT 1,0;FLASH 1;" Player 2 wins! ";
:FOR i=0 TO 20: BEEP .01,i:BEEP .01,i+RND*3:NEXT i
ELSE
PRINT #1;AT 1,0;FLASH 1;" Let's try again! ";
:FOR i=20 TO 0 STEP -1: BEEP .01,i:BEEP .01,i+RND*3:NEXT i
ENDIF
Isso não é Basic puro do ZX Spectrum
EliminarÉ uma linguagem chamada Pascalated BASIC que dá para traduzir para o ZX Spectrum.
EliminarExiste Pascalated BASIC interpretado e Pascalated BASIC compilado.
EliminarConcluindo: Dá para converter ENDIF em BASIC puro do ZX Spectrum.
Eliminar