¿Cómo procesar entradas condicionalmente en un juego de aventuras?

Veremos una mecánica simple para hacer que el jugador pierda puntos de vida después de cada movimiento debido al hambre. Quiero que el jugador solo pierda salud si ha realizado un movimiento válido, es decir, el juego no debería penalizarse por fallar accidentalmente un comando.

En nuestra función PROC_executeCommand () he agregado una nueva variable local: ok%. Esto inicia cada ciclo con un valor de VERDADERO, pero se establece en falso siempre que el comando del usuario no sea válido.

Solo debe perder salud si ha escrito un comando válido.

El jugador pierde salud si el valor de ok% es VERDADERO al final del procedimiento.

Aquí he agregado una cláusula 'de lo contrario' a la declaración del caso principal que capta el caso de que la entrada del jugador no tiene ningún sentido. Además, observe que la salud del jugador disminuye en uno si el jugador ha hecho una entrada correcta.
Probar el programa. Tenga en cuenta que la salud disminuye cada vez que el jugador realiza un movimiento válido.
La próxima vez: crear objetos con los que el jugador pueda interactuar.

El código fuente completo sigue:

REM un juego de aventuras en BB4W
REM por Mr Street

REM versión 1.0.0.1 configurando el mundo
REM versión 1.0.0.2 moviéndose alrededor del mundo
REM versión 1.0.0.3 que lo repara para que no pueda salir de la cuadrícula
REM - versión alternativa -
La versión REM 1.0.0.4 hace que el jugador pierda salud en cada turno debido al hambre

REM establezcamos un 'mundo'
TAMAÑO% = 3
DIM World $ (SIZE%, SIZE%): REM crea una cuadrícula de 3x3
REM ahora 'puebla' la cuadrícula con algunos nombres de espacio
PROC _populateWorld
REM ahora algunos datos sobre nuestro jugador
Posición inicial del jugador REM
x% = 2
y% = 2
La salud del jugador REM
salud% = 50


DEF PROC _principal
Comando LOCAL $: entrada del usuario REM
REM el programa principal
REM repite hasta que el jugador esté muerto
REPETIR
REM muestra la posición actual del jugador
PROC _showCurrent
REM recibe alguna entrada del jugador
ENTRADA "¿Qué pasa ahora?>" Comando $
Trato REM con la entrada del usuario
PROC _executeCommand (comando $)
HASTA salud%
ENDPROC

DEF PROC _executeCommand (comando $)
REM trata con la entrada de los usuarios
LOCAL com $, gridError $
LOCAL ok%: la variable REM contiene VERDADERO / FALSO si la entrada del jugador fue aceptable
gr> "¡No puedes ir en esa dirección!" : REM un mensaje para cuando salgas de la cuadrícula
com $ = FN _convlc (comando $): REM se convierte a minúsculas para que sea más fácil
ok% = TRUE: REM supone que la entrada del usuario tiene sentido
CASO VERDADERO DE
CUANDO com $ = "n" O com $ = "north"
SI y% ENTONCES
y% + = 1
MÁS
IMPRIMIR gridError $
ok% = FALSO
TERMINARA SI

CUANDO com $ = "s" O com $ = "sur"
SI y%> 1 ENTONCES
y% - = 1
MÁS
IMPRIMIR gridError $
ok% = FALSO
TERMINARA SI

CUANDO com $ = "e" O com $ = "east"
SI x% ENTONCES
x% + = 1
MÁS
IMPRIMIR gridError $
ok% = FALSO
TERMINARA SI

CUANDO com $ = "w" O com $ = "oeste"
SI x%> 1 ENTONCES
x% - = 1
MÁS
IMPRIMIR gridError $
ok% = FALSO
TERMINARA SI

DE OTRA MANERA
IMPRIMA "¡No te entiendo!"
ok% = FALSO

REM si la entrada del usuario fue aceptable, entonces tienen
REM hizo un 'turno' y debería perder un punto de vida
SI está bien% ENTONCES
salud% - = 1
TERMINARA SI


DEF PROC _showCurrent
IMPRIMIR "Estás en:" Mundo $ (x%, y%)
IMPRIMA "Tu salud es:" STR $ (salud%)
ENDPROC

DEF FN _convlc (A $)
REM se convierte a minúsculas
SYS "CharLowerBuff",! ^ A $, LEN (A $)
= A $


DEF PROC _populateWorld
REM pone algunos nombres de los espacios en el mundo
LOCAL x%, y%
REM comienza con la primera fila
PARA y% = 1 A TAMAÑO%
PARA x% = 1 A TAMAÑO%
LEER Mundo $ (x%, y%)
SIGUIENTE
SIGUIENTE
ENDPROC
:
REM los datos para nuestra cuadrícula 3x3
DATOS "Colinas", "Montañas", "Bosque"
DATOS "Castillo", "Aldea", "Campos"
DATOS "Woods", "Swamp", "Lake"

2 respuestas 2

PROBLEMA INMEDIATO

En la programación estructurada formal, manejarías esto con la prueba que Keatinge te dio:

. y el resto del programa se sangraría para hacerlo todos la rama "verdadera" de la Si. En el mundo práctico, haría esto con la lógica inversa: si el usuario dice "no", finalice el programa:

PROBLEMAS MÁS GRANDES

Código de aprendizaje

Te ayudarás mucho si lees los materiales de tu clase o un tutorial de Python para aprender estas cosas. De Verdad. Stack Overflow no es un sitio tutorial, tú debería ser capaz de buscar lo básico por su cuenta. También tú De Verdad No quiero esperar a que respondamos a pequeñas preguntas mecánicas.

Diseñando tu programa

Use cualquier herramienta descriptiva que funcione para usted: un diagrama de flujo, un guión gráfico, cualquier cosa que lo ayude a dibujar qué sucede en qué orden y qué información necesita mantener (variables). Si te sirve de ayuda, "Learning Python the Hard Way" tiene un buen núcleo para un juego de aventuras, y ciertamente puedes buscar "Python adventure" para obtener un código que te ayude con tu propia organización.

Implementación

Estás comenzando correctamente, pero haz seguro sigan así: codifiquen algunas líneas, asegúrese de que hagan lo que quieran y no continúen hasta que funcionen. Por ejemplo, ahora debe codificar el Si declaración que necesita, y un mensaje simple en cada rama para decirle que llegó allí correctamente. Pruébelo un par de veces, ingresando al menos "SÍ", "no" y otra basura.

Eso debería ayudarte a comenzar. Sobre todo, diviértete. Mata a una bestia con tus propias manos. Robar algunos tesoros. Caer en un pozo con púas. Ser comido por un gato enojado.

Эпичные герои

Toscana

Lleno de tesoros escondidos y experiencias inesperadas para vivir, las aventuras en la Toscana no tienen fin. Explore el aire libre aquí en cualquier época del año, con algo que hacer en cada temporada: rafting, ciclismo, senderismo, trekking, cabalgatas, barranquismo, espeleología, parapente, vela, escalada, buceo, observación de aves y más.

Об этой игре

Tap Adventure: Time Travel es un juego de clicker RPG en el auténtico Patch World. Un equipo de héroes comienza su viaje a través de espesos bosques, pantanos espeluznantes, selva densa, minas de oro, glaciares eternos y páramos sin vida.

Este viaje no será fácil porque las marismas y pantanos están habitadas por malvados duendes y ogros, viciosos depredadores y brownies salvajes se esconden en los bosques, y tribus sedientas de sangre de nativos y babuinos llenan la selva. A los habitantes locales no les gustan los intrusos: ¡la única forma de pasar es luchar contra ellos!

7 clases básicas de personajes, cada una con habilidades y opciones únicas de nivelación
A diferencia de otros juegos clicker, no tienes muchos héroes, solo puedes contratar a 7 de ellos, uno para cada tipo: Guerrero, Arquero, Hombre Sabio, Pícaro, Salvaje, Mago e Ingeniero. Y todos ellos tienen su propio conjunto de habilidades, que los hace únicos. Puedes desarrollar héroes de diferentes maneras, más adecuadas para tu estilo de juego.

30 jefes épicos y una miríada de monstruos
¡Grandes jefes épicos, señores de sus dominios, se enfrentarán a tus héroes! Son mucho más resistentes que los enemigos comunes. Pero puedes obtener una buena recompensa, si puedes vencerlos: cofres, que te permiten mejorar a tus héroes, piedras rúnicas para crear poderosos artefactos, manacoins para gastarlos en imitadores.

9 mundos coloridos diversos
Animada jungla, bosque salvaje, pantano espeluznante, cementerio sombrío, minas oscuras, montañas de hielo frío, ciudad majestuosa, páramos mortales y misteriosas encrucijadas. Cada uno de estos hermosos lugares tiene su propio estilo y encanto, sus propios habitantes y jefes. ¡Explora las tierras del mundo Patch!

¡Valiosas recompensas por derrotar a jefes, gráficos brillantes y efectos espectaculares y mucho oro, montones de oro!
Además, puedes ganar el Cofre viviente, conocer las máquinas de juego del Gobernador, intercambiar algunos bienes por las manacoins y explorar el magnífico Mundo Patch.

También puedes consultar nuestros otros proyectos. Fragua de dioses - RPG de estrategia de cartas multijugador altamente adictivo, RPG coleccionable de cartas de lujo estilo chibi Fiesta poderosa y emocionante juego de realidad virtual Cargo Cult: Shoot'n'Loot VR.

Panoramik Inc. ha estado haciendo juegos desde 2005. Nos especializamos en crear diferentes tipos de juegos, desde casuales hasta mid core.

Reglas

Lanzar la aventura la mitad de una carta representa enviar a la criatura en una aventura antes de ponerlo en el campo de batalla. Cuando se resuelve la aventura, la carta se exilia. Cuando se exilia como parte de la resolución, la criatura puede ser expulsada del exilio.

Los hechizos de aventura solo existen en la pila. En todas las demás zonas, las características de una aventura se ignoran, solo se aplican las características de la carta de criatura.

Reglas

Tarjeta de aventurero Tarjetas con un marco de tarjeta de dos partes (una parte de la cual se inserta a la izquierda) en una sola tarjeta. Ver la regla 715, "Cartas de aventurero".

  • 715.Tarjetas Aventurero
    • 715.1. Las tarjetas de aventurero tienen un marco de tarjeta de dos partes, con un recuadro de marco más pequeño dentro de su cuadro de texto.
    • 715.2. El texto que aparece en el recuadro a la izquierda define características alternativas que el objeto puede tener mientras es un hechizo. Las características normales de la tarjeta aparecen como de costumbre, aunque con un cuadro de texto más pequeño a la derecha.
      • 715.2a Si un efecto se refiere a una carta, hechizo o permanente que "tiene una Aventura", se refiere a un objeto para el que existen estas características alternativas, incluso si el objeto actualmente no las usa.
      • 715.2b La existencia y los valores de estas características alternativas son parte de los valores copiables del objeto.
      • 715.2c Aunque las cartas de aventurero están impresas con múltiples conjuntos de características, cada carta de aventurero es solo una carta. Por ejemplo, un jugador que ha robado o descartado una carta de aventurero ha robado o descartado una carta, no dos.
    • 715.3. Cuando un jugador lanza una carta de aventurero, el jugador elige si la lanza normalmente o como una Aventura.
      • 715.3a Cuando se lanza una carta de aventurero como Aventura, solo se evalúan las características alternativas para ver si se puede lanzar.
      • 715.3b Mientras está en la pila como Aventura, el hechizo solo tiene sus características alternativas.
      • 715.3c Si se copia un hechizo de aventura, la copia también es una aventura. Tiene las características alternativas del hechizo y no las características normales de la carta que representa el hechizo de Aventura. Cualquier regla o efecto que se refiera a un hechizo lanzado como Aventura también se refiere a la copia.
      • 715.3d En lugar de poner un hechizo que fue lanzado como una aventura en el cementerio de su propietario mientras se resuelve, su controlador lo exilia. Mientras esa carta permanezca exiliada, ese jugador puede lanzarla. No se puede lanzar como una aventura de esta manera, aunque otros efectos que permiten que un jugador la lance pueden permitir que un jugador la lance como una aventura.
    • 715.4. En todas las zonas, excepto en la pila, y mientras está en la pila no como una Aventura, una carta de aventurero solo tiene sus características normales.
    • 715.5. Si un efecto indica a un jugador que elija el nombre de una carta y el jugador quiere elegir el nombre alternativo de una carta de aventurero, el jugador puede hacerlo.

Tasmania

Si lo tuyo es la aventura, sabes que lo que cuenta no es solo lo que haces, sino dónde lo haces. Tasmania es salvaje e indómita. Más de un tercio de la isla está protegida como parques nacionales, reservas y áreas del Patrimonio Mundial y es de fácil acceso.

Петли времени

Jordán

Jordan, recientemente nombrado uno de los 9 principales destinos para visitar en 2018 por National Geographic, es un lugar que debe registrar su lista de deseos. Ofreciendo una variedad de experiencias únicas para un aventurero, como el recorrido de 400 millas a lo largo del país llamado The Jordan Trail, esta nación del Cercano Oriente está llena de sorpresas.

Cataluña

Cataluña es un país sorprendente lleno de contrastes. Los amantes de las actividades al aire libre encuentran una diversidad incomparable de paisajes en un territorio pequeño, en el que es posible escalar o esquiar por la mañana y bucear o nadar por la tarde.

Banff y Lake Louise

Banff y Lake Louise es donde el confort y la cultura se mezclan sin esfuerzo con la belleza natural de un paisaje virgen protegido. El Parque Nacional Banff es un destino imprescindible para los viajeros de todo el mundo.

Ya sea que esté caminando por el Camino Inca a Machu Picchu o descubriendo las maravillas del Amazonas, descubra por qué Perú es uno de los países más aventureros del mundo.

Polonia

Una de las mayores atracciones de Polonia es su riqueza de belleza natural. Ha sido bendecida con montañas espectaculares, bosques vibrantes, playas de arena y lagos seductores. Los viajeros aficionados al ciclismo, el senderismo o el kitesurf disfrutarán de Polonia.

Saguenay - Lac-Saint-Jean

Saguenay - Lac-Saint-Jean es una región espectacular en el corazón de la provincia de Quebec, Canadá. Famoso por su majestuoso y prístino fiordo de Saguenay y el lago Saint-Jean, un mar interior de agua dulce. La región es el centro de viajes de aventura de Quebec.