CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 18 Jul 2019 18:40

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 3 mensajes ] 
Autor Mensaje
NotaPublicado: 08 Oct 2014 20:02 
Desconectado
Archivero
Archivero

Registrado: 05 Abr 2014 17:40
Mensajes: 277
Saludos queridos aventureros.
Espero que todo vaya bien.
Atendiendo a un comentario del amigo uto, de que debí haber fragmentado el hilo en varios temas mas pequeños para mejor aprovechamiento de los nuevos programadores que estén probando el Superglus, abro varios hilos después de haber recopilado todas mis preguntas y todas las respuestas del mismo.
Cada tema tendrá un punto en específico y los invito a pasar por cada uno de ellos que estoy seguro que como yo, tendrán varias dudas similares.
Espero que como a mí, las respuestas expuestas le sean de gran utilidad.
También animo a los que estén experimentando con este sistema de programación, a que planteen sus preguntas relacionadas bien sea continuando este tema o abran su propio hilo.
Pero eso, no se guarden sus dudas y pregunten ya que nadie nació aprendido.
Espero que tengan buen día tarde noche.
Este tema, va relacionado a tenderos y dinero.


Arriba
 Perfil  
 
NotaPublicado: 08 Oct 2014 20:07 
Desconectado
Archivero
Archivero

Registrado: 05 Abr 2014 17:40
Mensajes: 277
El testigo pregunta:
¿Cómo se puede colocar algún PSI tendero Que le digas, lista, listar, preguntar que vende etc., cualquier palabra que se le asigne para que te diga la lista de los objetos que tiene a la venta?
Uto responde:
Sobre el PSI tendero:
Para hablar con un PSI lo mas normal es usar el condacto PARSE y llamar a un proceso nuevo donde se metan las respuestas de todo lo que dice esa persona
Código:
DECIR TENDERO
AT lTienda
PARSE
PROCESS pRespuestasTendero
Y luego en el proceso pRespuestasTendero
Código:
LISTAR _
WRITELN "Vendo peras, manzanas, uvas y bananas."
DONE
HOLA _
WRITELN "Buenos días señor"
DONE
QUIERO UVAS
WRITELN "Son 15 dólares señor"
DONE
El link al condacto PARSE:
http://www.caad.es/superglus/doku.php/c ... rser:parse
El testigo pregunta:
¿Cómo se puede hacer para que ese tendero tenga diversos objetos en su poder, que sean los objetos que está vendiendo?
Uto responde:
Sobre cómo hacer que el tendero tenga objetos en su poder:
Lo mejor es crear una localidad falsa, es decir, creas una localidad inaccesible (que ninguna conexión lleve a ella) que llamaremos "el almacén del tendero" y al iniciar pones todos los objetos allí. Después para comprobar si un objeto aun lo tiene el tendero solo tienes que usar el condacto ISAT.
Código:
ISAT oManzana lAlmacenTendero
El testigo pregunta:
¿Se puede hacer que un objeto esté siempre a la venta?
Es decir, que le dé, comprar pan y que tras darme el pan, quede aun el objeto pan en su poder para poder seguir comprando.
Uto explica:
Respecto a un objeto siempre a la venta, me temo que no es posible tal cual, porque un objeto de Superglus solo puede estar en un sitio al mismo tiempo(o lo tiene el tendero, o está en algún sitio, o lo tiene el jugador, pero no lo pueden tener el jugador y el tendero a la vez).
No obstante, es algo que se puede conseguir usando otros medios, pero antes de explicar un medio necesitaría entender un poco mejor para qué necesitas poder vender pan continuamente.
¿Cual es el objetivo?
El testigo responde:
Imagina que estoy en un centro comercial de paseo por varias horas.
De tanto caminar, el pasar del tiempo hace de las suyas generando hambre.
Y pues eso, comprar algo para saciar el apetito pero si quiero volver a comer mas, sería bueno qe el tendero te pudiera vender lo que ya habías comprado.
Uto responde:
Bueno, lo de la compra de hamburguesas se puede arreglar, pero siempre jugando un poco con hacer al jugador sentir percepción de realidad más que tener realidad de verdad.
Me explico:
Un jugador comprará una hamburguesa, y se la comerá, o se la guardará y se la comerá después, pero es poco probable que vuelva al vendedor a pedirle otra hamburguesa teniendo una.
Por lo cual sugiero la siguiente lógica:
- El jugador podrá comprar la hamburguesa si el vendedor la tiene.
En caso contrario se asume que el jugador tiene la hamburguesa, y por tanto cuando se intenta comprar una hamburguesa el juego contestará con un "Ya tienes una hamburguesa, no te apetecen más".
- El jugador se puede comer la hamburguesa, en cuyo caso en lugar de un "DESTROY", usamos PLACE para colocar la hamburguesa de nuevo en manos del vendedor.
Como el jugador podrá comprar lo que tenga el vendedor, la hamburguesa volverá a estar disponible, pero solo de una en una.
Código:
COMER HAMBURGUESA
CARRIED oHamburguesa
PLACE oHamburguesa lAlmacenTendero
WRITELN "Te comes la hamburguesa y sacias tu hambre."
DONE
- El jugador puede verse tentado de dejar la hamburguesa en algún sitio, por ello vamos a impedírselo:
Código:
DEJAR HAMBURGUESA
CARRIED oHamburguesa
WRITELN "No sería muy sano dejar la hamburguesa en cualquier sitio, prefieres quedártela."
DONE
Uto aconseja:
Por otro lado, te recomiendo que uses este tema del hambre con cuidado.
En el pasado han existido aventuras que abusaban de ello, haciendo muy poco jugables las mismas (los jugadores morían de hambre con mas facilidad que en medio de un tiroteo).
Al final si un jugador se muere de hambre cada dos por tres se cansará y dejará de jugar.


Arriba
 Perfil  
 
NotaPublicado: 08 Oct 2014 20:12 
Desconectado
Archivero
Archivero

Registrado: 05 Abr 2014 17:40
Mensajes: 277
El testigo pregunta:
¿Cómo se puede activar el comando comprar?
Uto responde:
Para activar COMPRAR lo primero que tienes que hacer es añadir el verbo al vocabulario si no lo está ya.
Después lo adecuado sería que usaras un flag para guardar el dinero que tiene el jugador, y al principio de la aventura inicializarlo con dicho valor.
Pongamos que el jugador parte con 1000$, pues inicializamos el flag a 1000.
Por ejemplo si usamos el flag 100, y lo nombramos en la pestaña de definiciones como fDinero
Código:
##define flg fDinero 100
Luego podemos poner en la tabla de respuestas, suponiendo que las manzanas cuestan 5$:
Código:
COMPRAR MANZANAS
AT lTienda
ISAT oManzanas lAlmacenTendero
GE fDinero 5
MINUS fDinero 5
PLACE oManzanas 254
WRITELN "Compras las manzanas".
DONE

COMPRAR MANZANAS
AT lTienda
ISNOTAT oManzanas lAlmacenTendero
WRITELN "El tendero no tiene más manzanas".
DONE
COMPRAR MANZANAS
AT lTienda
ISAT oManzanas lAlmacenTendero
LT fDinero 5
WRITELN "No tienes suficiente dinero".
DONE
Fíjate que he puesto tres entradas, una para la acción con éxito, y otras dos para posibles fallos (el tendero ya no tiene manzanas, o no te queda suficiente dinero)
El testigo pregunta:
¿Cómo se le puede dar dinero al jugador?
Uto recalca:
Creo que lo de cómo darle al jugador dinero ya lo he detallado en el punto anterior.
Pero en general cada vez que quieras incrementar el dinero usas PLUS, y para quitarle dinero usas MINUS, ambos sobre el flag donde se guarda el dinero que lleva (fDinero).
El testigo pregunta:
Ya coloqué el flag dinero y la entrada contar dinero que aparece en el manual.
Pero, dices que hay que inicializarlo.
¿Cómo se hace eso de inicializar un flag y dónde?
Uto responde:
Para inicializar el dinero normalmente se suele usar una entrada en el proceso 1.
El proceso 1 se ejecuta cada vez que se describe una localidad, y normalmente se suele evitar usar la localidad 0, pasando directamente a la 1.
En tu proceso 1 encontrarás una entrada parecida a esta:
Código:
_ _
AT 0
GOTO 1
DESC
Pues bien, añadimos esto:
Código:
_ _
AT 0
LET fDinero 1000
GOTO 1
DESC
Así nada más empezar el juego se le asignará 1000$ al jugador.
Esto te puede servir para inicializar cualquier cosa que requiera hacerse al principio.
Por ejemplo si al principio quieres que salga el mensaje "Programada por El Testigo", puedes hacer...
Código:
_ _
AT 0
LET fDinero 1000
WRITELN "Programada por El Testigo."
ANYKEY
GOTO 1
DESC
El testigo pregunta:
Ya veo, está muy bien eso de poder comprar comida y eso de que se la pueda comer.
Ahora, ¿Cómo poder simular el hambre?
Uto responde:
Lo que tendrías que hacer en tu juego es usar otro flag para almacenar la "energía" del jugador.
Supongamos que el jugador empieza con la energía a tope.
Podemos poner otro flag llamado fEnergia que contenga 100, así que lo inicializamos en el mismo sitio que el dinero poniendo LET fEnergia 100
Luego a cada turno podemos decrementar esa energía, para ello en el proceso 2 (este se ejecuta una vez por turno) podemos poner
Código:
_ _
MINUS fEnergia 1
ZERO fEnergia
WRITELN "No puedes mas sin comer. Estás muerto."
END
Fíjate que primero decremento la energía en 1, y si llegamos a 0 (ZERO fEnergia) entonces el jugador se muere.
Después habría que hacer que cada vez que el jugador come algo, se le sume energía, por ejemplo 50 puntos.
O bien se le ponga al maximo otra vez como prefieras
Código:
COMER HAMBURGUESA
CARRIED oHamburguesa
PLACE oHamburguesa lAlmacenTendero
PLUS fEnergia 50 ; Si prefieres que se ponga al máximo
LET fEnergia 100
WRITELN "Sacias tu hambre."
DONE
El testigo pregunta:
En mi proyecto de fogueo donde meto todo lo que voy aprendiendo, teclee la letra (Z) para hacer que pasaran los 100 turnos.
Pero que más, ni idea de cómo poder mostrar el hambre y por eso, me rendí del hambre y no pude más.
¿Cómo mostrar mensaje digamos cada 25 turnos y te diga algo como: tienes algo de hambre, deberías buscar algo para comer. Eso es posible?
Uto responde:
Para poder ir avisando al jugador de que tiene hambre, lo mejor es utilizar igualmente el proceso 2, que se ejecuta a cada turno.
Así añadirnos el siguiente código al que ya teníamos:
Código:
_ _
MINUS fEnergia 1
ZERO fEnergia
WRITELN "No puedes mas sin comer. Estás muerto."
END
_ _
EQ fEnergia 50
WRITELN "Empiezas a tener un poco de hambre..."
_ _
EQ fEnergia 25
WRITELN "Tienes bastante hambre..."
_ _
EQ fEnergia 10
WRITELN "Empiezas a desfallecer, o comes algo pronto o no podrás seguir..."
Como ves simplemente comprobamos a cada turno el valor del flag fEnergía y ponemos mensajes en puntos claves (50%, 25%, 10%) antes del final (al 0%).
En el fondo el 0% podría separarse en dos partes, una para decrementar el flag y otras similar a las del 50,25 y 10, solo que con la muerte (o desmayo) del jugador incluida.
Código:
_ _
MINUS fEnergia 1
_ _
ZERO fEnergia ; sería lo mismo que EQ fEnergia 0
WRITELN "No puedes mas sin comer. Estás muerto."
END


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 3 mensajes ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM