Este desafío se basa en uno propuesto en el grupo usenet rec.games.roguelike.development hace unos años. No puedo encontrar la publicación original del grupo de noticias, pero puedes echar un vistazo al repositorio de soluciones de Github . ¡Solo se jugó en un par de idiomas y me encantaría ver más!
Objetivo
El objetivo es construir un programa que presente una vista de arriba a abajo de una mazmorra usando caracteres ascii. Habrá un @
letrero que representa al jugador que se puede mover a través del espacio libre en la mazmorra (representado por ), aunque no puede pasar a través de las paredes (representado por
#
).
El mapa de la mazmorra debe verse así:
#### ####
# # # #
# #### #
# #
## ##
# #
# #
## ##
# #
# #### #
# # # #
#### ####
El jugador debe comenzar en la ubicación {2,2}, donde {0,0} es la esquina superior izquierda.
Interfaz
El usuario debe poder mover al jugador en las cuatro direcciones cardinales utilizando las teclas de flecha del teclado.
Debe haber alguna forma para que el usuario salga del programa. No necesita ser una salida elegante (por ejemplo, no importa si se imprime una excepción).
El mapa y el jugador deben dibujarse antes de tomar cualquier entrada, y el jugador debe actualizarse después de cada entrada.
Bibliotecas
Siéntase libre de usar bibliotecas establecidas para la entrada o salida de la consola, como Curses. Solo menciona en tu respuesta lo que estás usando.
Puntuación
Este es el código de golf, ¡el código más corto gana!
Respuestas:
C,
257253 222220Utiliza en
system("cls")
lugar de maldiciones (usosystem("clear")
para sistemas Linux) y un algoritmo inteligente para ajustar el mapa en un número de 8 dígitos. Las teclas no extendidas finalizan el programa, por ejemplo, escape.EDITAR: ahora también muestra a tu héroe debajo del mapa usando en
a<230
lugar dea<132
:Código:
fuente
putch
hay loputchar
que hace lo mismo, pero no sé cómo reemplazarlogetch
, también hay unogetchar
, pero no funciona para mí, parece que no reconoce las teclas del cursor.Ruby 1.9 + Maldiciones (248)
fuente
Python
332319317La biblioteca Python Curses solo es oficialmente compatible con Linux. Hay no oficiales disponibles para Windows, pero no puedo garantizar que esto funcione con él.
Para guardar algunos caracteres, codifiqué los códigos para arriba, abajo, izquierda y derecha. Esto puede causar problemas a algunas personas. Si esto no funciona para alguien, puedo publicar una versión que debería.
Use ctrl + c para salir. Probablemente tendrá que restablecer su terminal después de salir, pero el desafío dijo específicamente que la salida no tenía que ser elegante.
fuente
QBasic,
314313 bytesEste tipo de problema simplemente pide una solución QBasic.
Este es QBasic golfizado, que se ampliará significativamente por el autoformatter. Pero, si escribe este código exacto en el IDE y presiona F5, debería ejecutarse. Probado en QB64 .
Explicación:
El mapa está codificado en filas como los bits de los enteros en la
DATA
declaración (1 para el espacio, 0 para el muro). ElFOR
bucle anidado los descomprime, almacena valores de verdad en la matriz 2Dw
e imprime#
o enconsecuencia. (¡Tenga en cuenta que cierto en QBasic es
-1
, por lo tanto, por qué estamos sumando a 35 en lugar de restar!) El jugador comienza en 3,3 porque la mayoría de las cosas están indexadas en 1 en QBasic.Entonces entramos en un
GOTO
bucle: imprimir el@
, obtenemos la entrada de teclado, convertido al código de carácter prolongado, y modificamosx
yy
en función de si el usuario pulsa L / T / R / D. Siw(x,y)
es cierto, entonces es un espacio y podemos movernos allí; de lo contrario, quédese. Finalmente, la forma más corta que encontré para salir es presionando la tecla tab (ASCII9
). Cualquier otra entrada nos devuelve a la primeraLOCATE
declaración.Debo decir que me hizo cosquillas haber derrotado a Python con una respuesta QBasic.
fuente