Votre programme doit prendre une chaîne à plusieurs lignes, comme ceci:
#############
# #
# p #
# #
#############
p
est le joueur et #
est un bloc.
Maintenant sous cela dans le terminal devrait être une ligne d'entrée disant:
How do you want to move?
Si le joueur tape, l
il doit marcher à gauche quand il n'y a pas de bloc, sinon, quand il y a un bloc, il ne peut pas passer et ne bouge pas bien sûr, maintenant la sortie dans le terminal doit être mise à jour ( et la sortie précédente effacée / remplacée):
#############
# #
# p #
# #
#############
Il peut taper l
pour gauche, r
pour droite, u
pour haut et d
pour bas.
L'entrée sera toujours multiligne, mais ne sera pas toujours remplie d'espaces dans un rectangle parfait. De plus, les hachages peuvent être n'importe où dans la chaîne et ne seront pas toujours connectés les uns aux autres. Par exemple:
## ##
# #
## p
#
est un donjon valide. (notez le manque d'espaces de fin sur chaque ligne)
Si le joueur sort de la chaîne, il n'a pas besoin d'être affiché. Mais s'il revient plus tard, il doit à nouveau être affiché.
Et les limites de « l' extérieur » de la chaîne sont length(longest_line)
par number_of_lines
rectangle, même si une ligne n'est pas rembourré avec des espaces à droite, cet endroit est pas considéré hors limites. Exemple utilisant le donjon précédent:
## ##
# #p
##
#
La deuxième ligne n'avait pas d'espace où le p est maintenant, mais cela n'a pas d'importance.
Enfin, votre programme doit boucler pour toujours en prenant une entrée.
Cas de test
Cas de test 1:
####
# p#
#
####
How do you want to move?
d
####
# #
# p
####
Cas de test 2:
####
p#
#
####
How do you want to move?
l
####
p #
#
####
How do you want to move?
d
####
#
p #
####
How do you want to move?
l
####
#
p #
####
How do you want to move?
l
####
#
#
####
How do you want to move?
r
####
#
p #
####
Bien sûr, ceux-ci ne sont pas complets. Votre code devrait boucler pour toujours et effacer l'écran entre chaque sortie .
Votre sortie est autorisée à demander une entrée en tant que How do you want to move?\n<input>
ou How do you want to move?<input>
(c'est-à-dire que vous n'avez pas besoin de l'entrée sur une ligne vierge), et vous n'avez pas besoin d'une ligne vide entre la dernière ligne du donjon et l'invite. (ils ne peuvent cependant pas être sur la même ligne)
Les failles standard sont interdites! C'est le code-golf, donc le code le plus court en octets gagne!
l
,r
,u
oud
) peut être quelque chose, non seulement « Comment voulez-vous déplacer »? Cela n'affecte pas vraiment les réponses, sauf pour le golf.Réponses:
MATLAB,
268247246 octetsProbablement pas compétitif, mais c'était amusant. Version golfée:
Version lisible:
Les
try
blocs sont destinés à empêcher la fonction de planter en cas d'erreur hors limites. Je suis sûr que deux d'entre eux sont exagérés, mais je ne peux pas faire mieux que ça.Il convient de noter que MATLAB étendra le tableau vers le bas et vers la droite, mais le joueur disparaîtra lors de son premier déplacement vers une zone `` inexplorée ''. Par exemple, si vous vous déplacez en dehors des limites actuelles du donjon vers la droite d'un espace, vous disparaissez, mais au tour suivant MATLAB étendra le tableau pour inclure la nouvelle colonne (ou la ligne, si vous vous déplacez vers le bas).
'#'==d(y,x)
enregistre un octet par rapport àd(y,x)=='#'
, car vous n'avez pas besoin d'espace entreif
et'#'
la source
Café-script: 580 octets
J'ai retiré tout ce que je pouvais de cet algorithme particulier et de mon cerveau fatigué. J'ai besoin de vacances.
la source