CAAD
http://foro.caad.es/

Duda en Paws
http://foro.caad.es/viewtopic.php?f=10&t=5758
Página 1 de 1

Autor:  toni [ 25 Dic 2014 15:30 ]
Asunto:  Duda en Paws

Buenas!!!

Estoy terminando una aventurilla con Paws,y uno de los problemas que tengo es:
Cómo se hace que al llegar a cierta localidad,tras hacer varios inputs,aparezca un personaje(está creado como un objeto),te diga una frase,hagas varios inputs más,y si no haces lo correcto,te elimine?
Lo he estado probando,pero solo me sale el personaje cuando describo la localidad,y usando el condacto CHANCE,pero lo que quiero es que aparezca al hacer varios inputs.Y que por supuesto,desaparezca cuando haga lo correcto,por ejemplo darle algo.

Entiendo que por inputs es escribir cualquier cosa.

Gracias

Autor:  Uto [ 25 Dic 2014 20:29 ]
Asunto:  Re: Duda en Paws

Asumiendo que esa localidad es la 10, que el objeto/personaje es el 20, y que tenemos el flag 200y 201 libres:

En el proceso 1:

Código:
* *
 AT 10
 CLEAR 200


En el proceso 2:

Código:
* *
 AT 10
 PLUS 10 1

* *
 AT 10
 EQ 10 3
 CREATE 20             
 MESSAGE x            (el primer mensaje, "aparece fulano y dice que bla bla bla")

* *
 AT 10
 EQ 10 6
 MESSAGE y              ( el segundo mensaje, "fulano dice que tal y cual")

* *
 AT 10
 EQ 10 7
 ZERO 201
 MESSAGE z                 (el último mensaje "fulano te fulmina")
 END



En la tabla de respuestas:

Código:
DAR LOQUESEA            (lo que sea que haya que hacer para no morir)
 PREP A
 NOUN2 FULANO
 AT 10
 PRESENT 20
 ZERO 201
 SET 201           
 MESSAGE a                     ("das lo que sea a fulano y se queda tranquilo")
 DONE



Explicado:

1) Usamos el flag 200 como una especie de contador de turnos, y el flag 201 para marcar cuando el jugador ha hecho ya lo que sea que haya que hacer para no morir.

2) Cuando entramos en la localidad se ejecuta el proceso 1, ponemos el contador del flag 200 a 0. Si no quieres que el contador se reinicie cada vez que el jugador entra, te puedes ahorrar esa parte.

3) En el proceso 2 (que se ejecuta a cada turno, o dicho de otro modo, a cada input) sumamos uno al flag 200, siempre. Luego comprobamos el valor cada vez y dependiendo del valor ponemos uno u otro mensaje. El último (el de la muerte) solo ocurre si llegamos al turno 7, y además no hemos hecho lo que sea que haya que hacer para evitar dicha muerte (y por tanto el flag 201 a 0). Si no quiere que ningún mensaje se muestre si el jugador ya ha hecho lo que sea que haya que hacer, añade el "ZERO 201" a todas las demás entradas de ese proceso 2 que comprueban el flag 200.

En el fondo lo importante es comprender bien como funcionan proceso 1 (ejecutado una vez después de cada descripción de localidad) y proceso 2 (ejecutado una vez por turno)

Espero que sea de ayuda.

Autor:  toni [ 25 Dic 2014 22:12 ]
Asunto:  Re: Duda en Paws

Muchas gracias,Uto :D

Autor:  miguel [ 05 Oct 2016 07:47 ]
Asunto:  Re: Duda en Paws

Perdon por retomar un hilo antiguo pero hay una solución más eficaz.

Usad las banderas de la 5 a la 8. Esas banderas decrementan 1 con cada turno aunque inicialmente esten a 0. Esto quiere decir que si la bandera 5 tuviese por ejemplo un valor de 20, con cada input (o timeout) decrementaria en 1 hasta quedarse en 0.

Saludos.

Autor:  Johan Paz [ 05 Oct 2016 10:42 ]
Asunto:  Re: Duda en Paws

miguel escribió:
Perdon por retomar un hilo antiguo pero hay una solución más eficaz.

Usad las banderas de la 5 a la 8. Esas banderas decrementan 1 con cada turno aunque inicialmente esten a 0. Esto quiere decir que si la bandera 5 tuviese por ejemplo un valor de 20, con cada input (o timeout) decrementaria en 1 hasta quedarse en 0.

Saludos.


Pero en la solución de Uto el cambio del contador es dependiente de que el jugador esté en una localización dada.

Autor:  miguel [ 05 Oct 2016 17:51 ]
Asunto:  Re: Duda en Paws

Sip, pero se puede ahorrar 1 bandera si usa una autodecreciente. Tambien ahorramos 'codigo' que si usas PAW en 8Bits esos ahorros de memoria son muy ricos. De hecho ahora que leo bien el codigo de Uto (que creo que es una buena manera de hacerlo ojo), ha errado al usar la bandera 10 en vez de la 200 que es la que lleva el contador, en teoria.

Saludos.

Autor:  Uto [ 05 Oct 2016 17:57 ]
Asunto:  Re: Duda en Paws

miguel escribió:
Sip, pero se puede ahorrar 1 bandera si usa una autodecreciente. Tambien ahorramos 'codigo' que si usas PAW en 8Bits esos ahorros de memoria son muy ricos. De hecho ahora que leo bien el codigo de Uto (que creo que es una buena manera de hacerlo ojo), ha errado al usar la bandera 10 en vez de la 200 que es la que lleva el contador, en teoria.

Saludos.


No se puede. Se podría si no se hubiera puesto el requisito de que los inputs tuvieran que ser en una localidad concreta. Los flags 5-8 se decrementan solos esté donde esté el jugador, por lo cual no cumplen con lo que pedía Toni. Si no se hubiera puesto esa restricción tu solución sería correcta y como bien dices ahorraría memoria.

Respecto a las comprobaciones se hacen sobre 10 en lugar de 200, tienes toda la razón, lo modifico :-)

Edito: Pues no me deja modificarlo, así que lo pego aquí modificado:


En el proceso 1:


Código:
* *
 AT 10
 CLEAR 200



En el proceso 2:


Código:
* *
 AT 10
 PLUS 200 1

* *
 AT 10
 EQ 200 3
 CREATE 20             
 MESSAGE x            (el primer mensaje, "aparece fulano y dice que bla bla bla")

* *
 AT 10
 EQ 200 6
 MESSAGE y              ( el segundo mensaje, "fulano dice que tal y cual")

* *
 AT 10
 EQ 200 7
 ZERO 201
 MESSAGE z                 (el último mensaje "fulano te fulmina")
 END



En la tabla de respuestas:


Código:
DAR LOQUESEA            (lo que sea que haya que hacer para no morir)
 PREP A
 NOUN2 FULANO
 AT 10
 PRESENT 20
 ZERO 201
 SET 201           
 MESSAGE a                     ("das lo que sea a fulano y se queda tranquilo")
 DONE

Autor:  miguel [ 06 Oct 2016 16:30 ]
Asunto:  Re: Duda en Paws

Pues mil perdones porque no me fije en lo de solo 1 localidad especifica, tonto de mi por leer a la carrera. Disculpad mi torpeza.

Autor:  Uto [ 06 Oct 2016 17:25 ]
Asunto:  Re: Duda en Paws

miguel escribió:
Pues mil perdones porque no me fije en lo de solo 1 localidad especifica, tonto de mi por leer a la carrera. Disculpad mi torpeza.


No hay problema hombre, aprendemos todos, y si no es por ti el código erróneo que puse se queda en el hilo para siempre :-)

Página 1 de 1 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/