Este é um jogo de cobra x86 feito para DOS, mas também existe uma versão que não requer BIOS, bootloader ou sistema operacional.
O jogo foi coberto no Hackaday.
Para testar o código, você pode ver a demonstração online que é atualizada a cada alteração no Snake.asm (use as teclas de seta no PC ou deslize no celular).
Se você quiser testar o código sozinho, precisará instalar os requisitos para o processo de construção e executá-lo em seu computador.
Estou usando nasm
e python3
que podem ser instalados com apt install nasm python3 -y
.
Para testá-lo basta executar main.sh e abrir http://localhost:8000.
Inspirado em "Você consegue encaixar um jogo inteiro em um código QR?" por @itsmattkc que também foi apresentado no Hackaday.
Para as pessoas que mencionam a cobra64 do jinX, eu observaria que, sem menosprezar a conquista feita pelo jinX, sua implementação não obedece às mesmas restrições que a minha: Na versão dele, a cobra pode passar do lado direito diretamente para o lado esquerdo, mas não do lado esquerdo. de cima para baixo, itens alimentares aparecem aleatoriamente, então pode haver 30 simultaneamente, alguns pixels aleatórios estão ficando brancos, você precisa usar 4, 6, 8, 2 teclas para mover em vez das setas, você deve iniciar o jogo com movimento para baixo ou ele trava, você tem que clear
a tela antes de iniciar o jogo, você tem que inicializar o modo de vídeo correto adiante, quando você passar pelo topo e supostamente perder você pode simplesmente voltar para baixo, e como jinX afirmou "Não vai funciona se você executar um jogo no terminal DOSBox. Requer valor 0 (ou 50h, 80h, 0D0h...) na porta 60h no início.
Para as inúmeras pessoas que dizem que não estou mencionando intencionalmente a Competição de Codificação de Tamanho Hugi (uma competição em que os competidores tinham que fazer o menor jogo de petiscos para vencer), aqui está minha resposta a um desses comentários (de quando o jogo ainda tinha 133 bytes ):
Em primeiro lugar, parece que você nem leu as regras do jogo “Nibbles”:
no interior desta borda deve crescer uma "cobra", cujo tamanho inicial é de um pixel. após iniciar o programa, o tamanho da cobra deverá crescer mais um pixel a cada repetição do loop principal do programa.
O que simplesmente não é o mesmo que cobra e é muito menos difícil de implementar.
Em segundo lugar, as implementações desta competição têm falhas (não que não sejam boas, mas estou dizendo que isso não torna a minha versão ruim), como, por exemplo, nos comentários da inscrição vencedora:
o jogo não suporta nenhuma outra tecla além das setas do teclado, você precisa iniciá-lo digitando pause|nibbles no prompt do DOS e depois pressionando uma tecla de seta
e
Como o segmento de memória superior no PSP depende do ambiente[sic], você precisa de uma versão adequada para o seu ambiente
e nem funciona no DOSBox por causa de algumas configurações especiais necessárias.
Da entrada do segundo lugar:
Ao iniciar este programa, pressione a tecla 2 (PARA BAIXO) __IMMEDIATAMENTE__
E também não funcionará sem definir a contagem de ciclos e alterá-la às vezes interrompe o jogo
Quanto ao terceiro lugar
pressione '8','4','6' mas não '2' assim que o jogo começar imediatamente
e o jogo quebra da mesma forma que o segundo colocado (e precisa do mesmo ajuste de ciclo), mas as paredes também estão quebradas.
Vou olhar para a entrada do quarto lugar e parar de perder meu tempo fazendo isso,
Bem, acabei de olhar e não consegui arrancar
E por último, em que lugar é a sua entrada na competição? Antes de criticar outras pessoas, primeiro verifique se sua crítica está correta e tente fazer você mesmo antes de julgar.
Obrigado pelo feedback de qualquer maneira :)
PS: Eu nem afirmei que minha versão era ideal, o ponto principal do post era pedir ajuda, e esse comentário realmente me fez sentir melhor sobre minha implementação de certa forma, já que em uma competição de otimização de tamanho real alguém submeteu 121 bytes para apenas uma linha que se estende pela tela e todo o meu jogo de cobra (que obviamente contém essa funcionalidade apenas como uma pequena parte de todo o programa) ocupa apenas 12 bytes a mais agora, e se eu conseguir consertar o PR, apenas 7 bytes a mais.
AFAIK Este é o menor jogo de cobra já feito.
É tão pequeno que caberia em um único QR:
São 58 bytes.
Quão pouco são 58 bytes? Bem, esta linha de texto pesa mais de 70 bytes.
E o mesmo acontece com esta sequência arbitrária de emojis: ??❤️?????♀️??❤️???
Um programa C vazio gerado com gcc -Os -w -xc - <<< "main;"
no linux-x86_64 é 15776 bytes.
c53000b80000cd108b3f8d22e5402
1c3300fbbd0077af5e4606bc00ad4
14d5449801c739dfad10257bd9893
a74de880f83eb5079f95b88277bd8
Minha versão | Versão de MattKC | versão de Ibara | Versão de EimaMei | |
---|---|---|---|---|
Bytes | 58 | ~1400 (comprimido) | 2024 | 2953 |
QR | ||||
Link | https://github.com/donno2048/snake | https://mattkc.com/etc/snakeqr/ | https://github.com/ibara/snakeqr | https://github.com/EimaMei/snake-qr |