Buenas, estoy desarrollando una pequeña aventura gráfica en JavaScript, en mis ratos libres, es un proyecto personal, no pretendo publicarlo ni nada, es a modo de práctica. Lo que pasa es que nunca hice ninguno y me apetecía probar. El caso es que tiene tintes rpg, pues te creas el pj y tiene atributos y demás, aunque es todo en modo texto. Es como aquellos Muds que te conectabas por ssh pero singleplayer y en web, y con imagen. El caso es que creé un parser básico, que descompone las frases en verbo, sujeto.. descarta los artículos y guarda cada parte en un objeto.
Ejemplo:
Coger llave -> v:coger o1:llave o2:null
Coger la llave -> v:coger o1:llave o2:null
Usar la llave con la cerradura -> v:usar, o1:llave, o2: cerradura
luego ese objeto lo proceso y realizo las acciones si son posibles y demás...
Al principio tuve un problema con los nombre compuestos. Ejemplo: llave de plata, porque me metía plata como otro objeto. Esto lo solucione afinando un poco la forma de trocear la frase y luego buscando palabras completas, y si encuentra 1 coincidencia lo doy por valido (valido significa que lo entiendo, luego otra cosa es que el objeto este en la sala, sea visible, accesible, etc...), si encuentra mas de una le pido al usuario que sea mas preciso.
Hasta aquí todo bien. Mi problema viene cuando tengo varios objetos en la misma ubicación, que se llaman igual. Por ejemplo, dos espadas de hierro, dos pociones de vida, etc...
He pensado en agruparlos cuando se llaman igual y mostrar (n) al final del nombre. Esto esta bien para las pociones, porque bebes una, resto cantidad y fiesta, ahora solo queda una en el suelo, inventario, etc.. esto podría valer para el verbo equipar, dejar, coger.. seria restar una o mover una al inventario o al equipo, y dejar la otra donde está.. El problema está en que tengo un sistema de loot, y tengo objetos que se llaman igual, con distintos atributos.
Ej.
Brazalete de cuero - +1 fue
Brazalete de cuero - +1 des
Si quiero coger, o equipar uno concreto (imaginemos que están en el suelo). Aquí es donde no se como gestionarlo. No quiero código, solo ideas. He pensado en numerarlos #1 #2 pero tengo que modificar el parser para que reconozca esto. Además la rutina de agrupar, lo toma como un objeto y le pone (2) detras. Sin embargo en este caso no aplica... No se si me estoy complicando mucho para mi primer juego pero cuanto mas tiempo le dedico, mas mecánicas se me ocurren y a mas mecánicas mas complicaciones xD como que quiero hacer que pase el tiempo, contando comandos como si fueran ticks. y hacer día y noche, mover a los enemigos por el mapa cada tick.. hacer dungeons aleatorios, el tema del loot también me trae de cabeza, objetos de calidades distintas?, algo mas simple?, lista de objetos fijos?, atributos aleatorios?.... tengo un montón de ideas... bueno lo dicho, si podéis darme alguna idea para implementarlo, me ayudáis a pasar este bache. Gracias!