Este es un juego de serpientes x86 creado para DOS, pero también hay una versión que no requiere BIOS, gestor de arranque ni sistema operativo.
El juego fue cubierto en La-Tecnologia.
Para probar el código, puede ver la demostración en línea que se actualiza con cada cambio en Snake.asm (use las teclas de flecha en la PC o deslícelas en el móvil).
Si desea probar el código usted mismo, debe instalar los requisitos para el proceso de compilación y ejecutarlo en su computadora.
Estoy usando nasm
y python3
que se pueden instalar con apt install nasm python3 -y
.
Para probarlo, simplemente ejecute main.sh y abra http://localhost:8000.
Inspirado en "¿Puedes incluir un juego completo en un código QR?" de @itsmattkc, que también apareció en La-Tecnologia.
Para las personas que mencionan la serpiente de jinX64, quisiera señalar que sin menospreciar el logro logrado por jinX, su implementación no obedece a las mismas restricciones que la mía: en su versión, la serpiente puede pasar del lado derecho directamente al lado izquierdo, pero no desde De arriba a abajo, los alimentos aparecen aleatoriamente, por lo que podría haber 30 simultáneamente, algunos píxeles aleatorios se vuelven blancos, debes usar 4, 6, 8, 2 teclas para moverte en lugar de las flechas, debes comenzar el juego con movimiento hacia abajo o se bloquea, tienes que clear
la pantalla antes de comenzar el juego, tienes que inicializar el modo de video correcto más adelante, cuando pasas por la parte superior y se supone que pierdes, puedes volver a bajar, y como dijo jinX "Es no funcionará si ejecutas un juego desde la terminal DOSBox. Requiere un valor 0 (o 50h, 80h, 0D0h...) en el puerto 60h al inicio.
Para las innumerables personas que dicen que intencionalmente no menciono la competencia de codificación de tamaños Hugi (una competencia en la que los competidores tenían que hacer el juego de mordiscos más pequeño para ganar), aquí está mi respuesta a uno de esos comentarios (de cuando el juego todavía tenía 133 bytes). ):
En primer lugar, parece que ni siquiera has leído las reglas del juego "Nibbles":
En el interior de este borde debe crecer una "serpiente", cuyo tamaño al principio es de un píxel. Después de iniciar el programa, el tamaño de la serpiente crecerá un píxel más en cada repetición del bucle principal del programa.
Lo cual simplemente no es lo mismo que la serpiente y es mucho menos difícil de implementar.
En segundo lugar, las implementaciones de este concurso tienen fallas (no es que no sean buenas, pero digo que eso no hace que mi versión sea mala) como, por ejemplo, en los comentarios en la entrada ganadora:
el juego no puede manejar ninguna otra tecla excepto las teclas de flecha del teclado, debes iniciarlo escribiendo pausa|nibbles en el indicador de DOS y luego presionando una tecla de flecha
y
Debido a que el segmento de memoria superior en PSP depende del entorno, necesita una versión adecuada para su entorno.
y ni siquiera funciona en DOSBox debido a que se necesitan algunas configuraciones especiales.
De la entrada del segundo lugar:
Al iniciar este programa, presione la tecla 2 (ABAJO) __INMEDIATAMENTE__
Y tampoco funcionará sin configurar el recuento de ciclos y cambiarlo a veces interrumpe el juego.
En cuanto al tercer lugar
presione '8', '4', '6' pero no '2' una vez que el juego comience inmediatamente
y el juego se rompe de la misma manera que lo hace el segundo lugar (y necesita el mismo ajuste de ciclo) pero las paredes también se rompen.
Miraré la entrada del cuarto lugar y dejaré de perder el tiempo haciendo esto.
Bueno, solo lo miré y no pude arrancar.
Y por último, ¿qué lugar ocupa tu entrada al concurso? Antes de criticar a otras personas, primero verifique que su crítica sea correcta e intente hacerlo usted mismo antes de juzgar.
Gracias por los comentarios de todos modos :)
PD: Ni siquiera dije que mi versión fuera ideal, el punto principal de la publicación era pedir ayuda, y este comentario en realidad me hizo sentir mejor acerca de mi implementación de alguna manera, como en una competencia de optimización de tamaño real alguien presentó una presentación de 121 bytes para solo una línea que se extiende sobre la pantalla y todo mi juego de serpientes (que obviamente contiene esta funcionalidad solo como una pequeña parte de todo el programa) ahora requiere solo 12 bytes más, y si puedo arreglar el PR solo 7 bytes más.
AFAIK Este es el juego de serpientes más pequeño jamás creado.
Es tan pequeño que podría caber en un solo QR:
Son 58 bytes.
¿Qué tan poco son 58 bytes? Bueno, esta línea de texto pesa más de 70 bytes.
Y también esta secuencia arbitraria de emojis: ??❤️?????♀️??❤️???
Un programa C vacío generado con gcc -Os -w -xc - <<< "main;"
en linux-x86_64 es 15776 bytes.
c53000b80000cd108b3f8d22e5402
1c3300fbbd0077af5e4606bc00ad4
14d5449801c739dfad10257bd9893
a74de880f83eb5079f95b88277bd8
mi versión | La versión de MattKC | la versión de ibara | La versión de EimaMei | |
---|---|---|---|---|
bytes | 58 | ~1400 (comprimido) | 2024 | 2953 |
QR | ||||
Enlace | https://github.com/donno2048/snake | https://mattkc.com/etc/snakeqr/ | https://github.com/ibara/snakeqr | https://github.com/EimaMei/snake-qr |