Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: GeorgArming en 11 Agosto 2013, 04:00 am



Título: Algoritmo simulador de batallas
Publicado por: GeorgArming en 11 Agosto 2013, 04:00 am
Hola foreros. Quiero crear un simulador de batallas antiguas (rollo romanos, cartagineses,...) en modo texto. Es decir, quiero hacer un programa que lea unos datos, simula la batalla y dé otros datos.

Los datos que leería serían básicamente unidades de uno y otro ejército (así como su forma física, motivación, estado de salud, munición, adaptabilidad a los diferentes terrenos, a qué tipo de unidades hacen más daño y a qué tipo de unidades son más vulnerables,...), la disposición de los ejércitos en el terreno, el terreno mismo, las condiciones climatológicas y la táctica elegida por cada bando (defensiva, ofensiva, atacar por los flancos,...).

El usuario debería poder organizar las tropas (en grupos de "unidades", por ejemplo, 1 unidad de caballería serían 50 soldados) por el terreno y decidir las posibles tácticas, si se debería contemplar la rendición, rotaciones,...

La batalla en sí misma había pensado en organizarla por casillas (por ejemplo,e l campo de batalla es un campo de 10x10 casillas) y "turnos", aunque el usuario sólo podría escoger la táctica al principio.

Al final, el programa devolvería el nuevo estado de los ejércitos, número de bajas, heridos, si huyó alguno de los equipos, si se ha tomado el terreno,...

Sinceramente, tengo muchas dudas. Lo he puesto aquí porque mis dudas son básicamente de programación general. He estado pensando en algún algoritmo, pero el tema de las casillas no lo domino. Y otro tema que me es muy difícil es el de las luchas en sí. Si se enfrentan dos unidades, se me ocurre evaluar las diferentes características y eso. El problema es generar estas luchas, porque se deberían dar en el caso que unidades enemigas se encuentren en casillas contiguas. Y ahí el problema es que podría haber más de dos.

La intención de este post es que entre todos escribamos un algoritmo para este simulador. Yo, que soy el autor del post y el mayor interesado, voy a trabajar mucho, pero seguro que aquí hay muchos cracks que saben hacerlo y les interesa o gente que simplemente está interesada en aprender.

Lo dicho, a ver si vamos posteando el algoritmo. Voy a mirar código de simuladores de ajedrez porque podría ser de ayuda. Yo iré poniendo mi algoritmo, entre todos vamos corrigiendo si os parece y añadiendo cosas.

Muchas gracias.

Saludos.


Título: Re: Algoritmo simulador de batallas
Publicado por: eferion en 11 Agosto 2013, 13:34 pm
Las casillas van a ser cuadradas, triangulares, pentagonales, hexagonales, ... cada tipo de casilla tendrá sus implicaciones en el algoritmo. Lo más sencillo es que las casillas sean cuadradas, así se pueden encajar en una matriz sin aplicar transformaciones.

Suponiendo que las casillas sean cuadradas... vas a permitir ataques en diagonal o solo en vertical y horizontal ?? si solo permites en vertical y horizontal el código se podría simplificar.

En el caso de que se enfrenten dos unidades aquí tienes varias opciones:

* En general podrías empezar comparando la fuerza de uno con la defensa del otro... lanzar una tirada aleatoria y comprobar quien gana... el que gana o pierde vida o directamente desaparece.

* Hay unidades especializadas en acabar con otras ? esto le tendría que reportar un bonus a su fuerza o a su defensa ( las posibilidades son amplias ) antes de realizar la tirada del combate. Esto también podría ser aplicable a bonus negativos.

* Vas a tener en cuenta la moral de las tropas ?? o algún efecto beneficioso si atacan con unidades aliadas a su lado ?? Al final esto se puede traducir en modificar los bonus de ataque y defensa.

* El terreno va a influir en el combate ?? más bonus y malus para la defensa, el ataque e incluso el movimiento... algunas unidades podrían llegar a quedar atrapadas por el terreno o incluso no podrían traspasarlo... depende de ti.

* Se van a permitir ataques a distancia ?? estos ataques normalmente deberían ser especiales ya que la unidad que ataca no puede recibir daños.

Al final el combate se puede simplificar en calcular un modificador ( bonus/malus ) para la fuerza / defensa, aplicarlos a las unidades implicadas y realizar una tirada que determine quien gane... lo que pase después ya es otra cosa.

El movimiento de tropas puede ser algo tan sencillo como que las unidades avancen hacia el enemigo que tengan más cerca primero hacia adelante ( casilllas cuadradas ) y luego, si se puede, hacia los lados o puedes intentar currarte un poco la IA para que intente atacar a los puntos debiles del enemigo.

El algoritmo de general de la batalla podría ser algo así:

* Mover tropas equipo 1
* Atacar equipo 1
* Mover tropas equipo 2
* Atacar equipo 2

Posteriormente si te ves con ganas podrías mejorarlo y que sea continuo... con tropas moviéndose mientras son atacadas y cosas así. ( Nota: esto no es tiempo real por mucho que algunos se empeñen )

Y finalmente te puedes plantear si alguno de los bandos puede rendirse en un momento dado en base al desarrollo de la batalla o si por contra se exige la destrucción total del enemigo.

La verdad es que dicho parecen cuatro tonterías que se programan en un par de horas... pero al final tiene bastante más curro.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 11 Agosto 2013, 19:25 pm
Las casillas van a ser cuadradas, triangulares, pentagonales, hexagonales, ... cada tipo de casilla tendrá sus implicaciones en el algoritmo. Lo más sencillo es que las casillas sean cuadradas, así se pueden encajar en una matriz sin aplicar transformaciones.

Suponiendo que las casillas sean cuadradas... vas a permitir ataques en diagonal o solo en vertical y horizontal ?? si solo permites en vertical y horizontal el código se podría simplificar.

En el caso de que se enfrenten dos unidades aquí tienes varias opciones:

* En general podrías empezar comparando la fuerza de uno con la defensa del otro... lanzar una tirada aleatoria y comprobar quien gana... el que gana o pierde vida o directamente desaparece.

* Hay unidades especializadas en acabar con otras ? esto le tendría que reportar un bonus a su fuerza o a su defensa ( las posibilidades son amplias ) antes de realizar la tirada del combate. Esto también podría ser aplicable a bonus negativos.

* Vas a tener en cuenta la moral de las tropas ?? o algún efecto beneficioso si atacan con unidades aliadas a su lado ?? Al final esto se puede traducir en modificar los bonus de ataque y defensa.

* El terreno va a influir en el combate ?? más bonus y malus para la defensa, el ataque e incluso el movimiento... algunas unidades podrían llegar a quedar atrapadas por el terreno o incluso no podrían traspasarlo... depende de ti.

* Se van a permitir ataques a distancia ?? estos ataques normalmente deberían ser especiales ya que la unidad que ataca no puede recibir daños.

Al final el combate se puede simplificar en calcular un modificador ( bonus/malus ) para la fuerza / defensa, aplicarlos a las unidades implicadas y realizar una tirada que determine quien gane... lo que pase después ya es otra cosa.

El movimiento de tropas puede ser algo tan sencillo como que las unidades avancen hacia el enemigo que tengan más cerca primero hacia adelante ( casilllas cuadradas ) y luego, si se puede, hacia los lados o puedes intentar currarte un poco la IA para que intente atacar a los puntos debiles del enemigo.

El algoritmo de general de la batalla podría ser algo así:

* Mover tropas equipo 1
* Atacar equipo 1
* Mover tropas equipo 2
* Atacar equipo 2

Posteriormente si te ves con ganas podrías mejorarlo y que sea continuo... con tropas moviéndose mientras son atacadas y cosas así. ( Nota: esto no es tiempo real por mucho que algunos se empeñen )

Y finalmente te puedes plantear si alguno de los bandos puede rendirse en un momento dado en base al desarrollo de la batalla o si por contra se exige la destrucción total del enemigo.

La verdad es que dicho parecen cuatro tonterías que se programan en un par de horas... pero al final tiene bastante más curro.

Gracias por tus sugerencias. Hay cosas que dices en las que ya había pensado, si te fijas en el post original (por ejemplo, lo del terreno). Otras no las había tenido en cuenta y están bien.

Hoy he estado todo el día dándole vueltas al tema del algoritmo. Las casillas, como dices, deben ser cuadradas, y lo del ataque en diagonal quizás sería mejor que sí pero entonces es más complejo. El tema es que quiero que haya ataque a distancia, y no tiene sentido que éste no puede hacerse en diagonal.

El juego está formado por casillas 10x10.

Lo mejor sería que todo el código fuese modular y que el runtime funcionase por turnos. He pensado eso:

Programa general

Código:
Leer datos (llamando a una función externa).
Iniciar el simulador general pasándole los datos leídos.
Devolver datos, guardándolos (llamando a una función externa).
Fin del programa.

Simulador general

Código:
Determinar los valores de las variables globales (clima, tipo de terreno, cuál de los dos ejércitos tiene la iniciativa, tácticas elegidas por cada ejército,...) según los datos leídos.
Crear las 100 casillas de la siguiente forma: se determina el tipo de terreno según los datos leídos con un 0% de azar O según el tipo de terreno general se generan aleatoriamente las diferentes casillas (por ejemplo, si es en una zona alemana, debería haber 75% de terreno de bosque, 5% de agua,...).
Crear instancias unidades partiendo de la clase Unidad y completando los atributos según los datos leídos (velocidad, motivación, estado físico, número total de efectivos de la unidad, defensa cuerpo a cuerpo, ataque cuerpo a cuerpo, defensa a distancia, unidades que se le dan bien para luchar, unidades que se le dan mal, terrenos que se le dan bien, climas que se le dan bien,...).
Ubicar las unidades en los sitios especificados por los datos leídos (aquí puede devolver error si se han puesto las unidades en sitios inválidos: fuera del "campo propio", encima de otra unidad ya colocada o en casillas ocupadas por agua,...).
Iniciar bucle de combate (con un máximo de 100 turnos) {
  Si estamos en el primer turno {
    Se avanzan una a una las unidades del ejército con iniciativa (obviamente, la caballería avanza más casillas por turno que la infantería pesada).
    Según la táctica elegida por el ejército sin iniciativa, las unidades avanzan o no.
  }
  Si no estamos en el primer turno {
  Las unidades del ejército con iniciativa avanzan según la táctica, disciplina, estado físico, situación de combate y del terreno y motivación que tengan.
  Si en alguna casilla se produce situación de choque (se encuentran en casillas contiguas unidades enemigas entre si o alguna unidad con ataque a distancia está a dos casillas de una unidad enemiga) {
  Se inicia el simulador concreto pasándole como datos las casillas de lucha y las unidades que participan.
  }
  Las unidades del ejército sin iniciativa avanzan según la táctica, disciplina, estado físico, situación de combate (si una unidad no está en combate y ha pasado de la mitad del campo, se dirigirá hacia unidades enemigas, preferentemente hacia las más cercanas) y del terreno y motivación que tengan.
  Si en alguna casilla se produce situación de choque (se encuentran en casillas contiguas unidades enemigas entre si o alguna unidad con ataque a distancia está a dos casillas de una unidad enemiga) {
  Se inicia el simulador concreto pasándole como datos las casillas de lucha y las unidades que participan.
  }
}

Simulador concreto

Código:
Si uno de los dos bandos está solamente formado por una unidad con ataque a distancia y el otro no está solamente formado por unidades de ataque a distancia {
  Las unidades dentro del combate sin ataque a distancia atacadas por unidades con ataque a distancia se dirigen hacia la unidad que les está atacando a distancia o deciden ponerse a salvo, según circunstancias de la partida (táctica, motivación,...).
}
Se cuentan los turnos de combate.
Atacan las unidades con iniciativa y ataque a distancia.
Se efectúan los daños: según capacidad de ataque, defensa, clima,...
Atacan las unidades sin iniciativa pero con ataque a distancia.
Se efectúan los daños: según capacidad de ataque, defensa, clima,...
Atacan las unidades con iniciativa cuerpo a cuerpo.
Se efectúan los daños: según capacidad de ataque, defensa, clima,...
Atacan las unidades sin iniciativa cuerpo a cuerpo.
Se efectúan los daños: según capacidad de ataque, defensa, clima,...
Si se llevan 3 turnos consecutivos en los que un equipo de los dos consigue más bajas {
  La unidad que está perdiendo se ve forzada a retroceder.
  Si no puede retroceder (porque está acorralada, dificultades del terreno,...) {
    Desbonificación (le baja mucho más el estado físico, motivación,...).
  Se pone el contador de turnos a 0.
}
Sino {
  Según táctica, moral y motivación, una unidad puede decidir (o no) retroceder.
}

¿Qué os parece? ¿Está bien? ¿No? ¿Le falta algo (general)? Si está bien, podríamos pasar a concretar más el algoritmo, poniéndolo ya con pseudocódigo y pasando argumentos, con funciones y variables,...


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 11 Agosto 2013, 19:50 pm
Realmente quieres hacer un simulador o quieres aplicarle jugabilidad, por que estaría muy chulo la verdad. Mezcla de Warcraft 3, AoE, en tablero.

Si realmente quereis ir haciendo algo podriamos definir ya con listas los atributos básicos de las unidades, y luego los secundarios. ¿Que os parece? Así ya podemos generar una classe básica de donde hereden todo los otros tipos de unidades y ponernos a trabajar xDD.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 11 Agosto 2013, 21:46 pm
Realmente quieres hacer un simulador o quieres aplicarle jugabilidad, por que estaría muy chulo la verdad. Mezcla de Warcraft 3, AoE, en tablero.

Si realmente quereis ir haciendo algo podriamos definir ya con listas los atributos básicos de las unidades, y luego los secundarios. ¿Que os parece? Así ya podemos generar una classe básica de donde hereden todo los otros tipos de unidades y ponernos a trabajar xDD.

Yo hablo de él como simulador, pero sí, tenemos que aplicarle jugabilidad. La idea sería que el simulador sería el backend, y luego sería fácil añadir un frontend y podríamos hacer un buen juego online masivo (o lo que queramos).

Qué te parecen los algoritmos que he puesto?

Como dices podemos ya ir añadiendo los atributos de las unidades para tener la clase. Me parece muy bien.


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 11 Agosto 2013, 22:59 pm
Creo que hay que bajar un poco el nivel que requiere tantas condicionesy ir poco a poco.

Por ejemplo lo de simular una batalla lo veo más como la lucha entre dos IA, y crear una IA no es tan complicado en este caso, simplemente puedes hacer que la máquina calcule todos los posibles movimientos con todas sus tropas y haga una estadistica de cual movimiento es el que mas le rinde, y si quieres subirle en nivel, puedes hacer que calcule uno, dos o tres turnos antes de mover, claro esta, que contra mas turnos analice, las posibilidades crecen exponencialmente pero también la IA puede realizar mejores movimientos... aunque no siempre realice el mejor ya que en sus simulaciones puede que gane pero luego cuando mueve y se vuelve a simular realmente la lucha, puede que un "RANDOM" le page mal esa vez :D

Por todo lo demas, lo veo bien pero yo me decantaría por atributos más usados: Vida, armadura, ataque, (velocidad de ataque)* etc...
Luego lo del clima y el terreno se podría arreglar como Auras.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 11 Agosto 2013, 23:28 pm
Creo que hay que bajar un poco el nivel que requiere tantas condicionesy ir poco a poco.

Por ejemplo lo de simular una batalla lo veo más como la lucha entre dos IA, y crear una IA no es tan complicado en este caso, simplemente puedes hacer que la máquina calcule todos los posibles movimientos con todas sus tropas y haga una estadistica de cual movimiento es el que mas le rinde, y si quieres subirle en nivel, puedes hacer que calcule uno, dos o tres turnos antes de mover, claro esta, que contra mas turnos analice, las posibilidades crecen exponencialmente pero también la IA puede realizar mejores movimientos... aunque no siempre realice el mejor ya que en sus simulaciones puede que gane pero luego cuando mueve y se vuelve a simular realmente la lucha, puede que un "RANDOM" le page mal esa vez :D

Por todo lo demas, lo veo bien pero yo me decantaría por atributos más usados: Vida, armadura, ataque, (velocidad de ataque)* etc...
Luego lo del clima y el terreno se podría arreglar como Auras.

Me parece bien, pero lo de la IA yo lo implementaría después de haber hecho la "base" del simulador. Por ejemplo, propongo esta clase:

Clase unidad
Código:
Atributos:
-ID de la unidad.
-Tipo general de unidad (caballería, infantería,...).
-Tipo concreto de unidad (Unidad de caballería pesada,...).
-Nombre de la unidad (Unidad de caballería pesada II,...).
-Número de efectivos.
-Heridos.
-Motivación.
-Estado físico.
-Clima favorable.
-Clima perjuficial.
-Terreno favorable.
-Terreno perjudicial.
-Capacidad de ataque cuerpo a cuerpo.
-Capacidad de defensa cuerpo a cuerpo.
-Capacidad de ataque a distancia.
-Capacidad de defensa a distancia.
-Disciplina táctica (como más elevada, más probable es que una unidad cumpla las órdenes y que lo haga bien).
-Velocidad (en casillas/turno  :D).
-Tipo general de unidad que se le da bien (la caballería tiene bonificación contra la infantería en general).
-Tipo concreto de unidad que se le da bien.
-Tipo general de unidad que se le da mal.
-Tipo concreto de unidad que se la da mal.
-Nutrición.
-Capacidad de resistencia.

De momento se me ocurre esto. ¿Qué os parece? Saludos.


Título: Re: Algoritmo simulador de batallas
Publicado por: za.asi en 12 Agosto 2013, 00:18 am
También se podría añadir los factores que alteran la moral:
Código:
- resultados ultimas 5 batallas
- clima + terreno +/-
- situación relativa en el ejercito propio y enemigo
- ...

Ademas se podría ir subiendo la dificultad:
Código:
- primera batalla la IA calcula un turno de antelacion
- segundo dos
- tercera tres

Se puede buscar manera de atravesar obstáculos:
Código:
- se tarda un turno en talar una casilla de bosque y otro mas en construir un balsa

Si se implementa el aumento progresivo de dificultad se puede aumentar el nivel de las unidades supervivientes aumentando sus características (ataque, defensa, velocidad...) o la moral

Sobretodo creo que es importante agregar el factor random a los combates, teniendo en cuenta las habilidades de las unidades.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 12 Agosto 2013, 00:28 am
Tambien se podria añadir los factores que alteran la moral:
- resultados ultimas 5 batallas
- clima + terreno +/-
- situacion relativa en el ejercito propio y enemigo
- ...

Ademas se podria ir subiendo la dificultad:
- primera batalla la IA calcula un turno de antelacion
- segund dos
- tercera tres

Se puede buscar manera de atravesar obstaculos:
- se tarda un turno en talar una casilla de bosque y otro mas en construir un balsa

Si se implementa el aumento progresivo de dificultad se puede aumentar el nivel de las unidades superviientes aumentando sus caracterusticas ( ataque, defensa, velocidad...) o la moral

Sobretodo creo que es importante agregar el factor random a los combates, teniendo en cuenta lS habilidades de las unidades.

Gracias por tus sugerencias. Estaría bien lo de la IA pero primero tenemos que crear la base.

En cuanto a la motivación, también le podría afectar si el general está en la batalla o no, cómo los trata el general, resultados como has dicho,... Lo detallaremos del todo cuando pongamos el pseudocódigo. Lo vamos poniendo ya?

Lo de tardar más o menos según el terreno está bien. Esto lo deberíamos meter en el objeto Casilla. Lo de la balsa no lo veo porque en medio de una batalla no es muy realista, pero por ejemplo atravesar zonas pantanosas reduciría la velocidad un tanto por ciento.

En cuanto al factor random, sí, es muy importante. Lo que debería hacer el simulador es calcular probabilidades teniendo en cuenta los factores que hemos dicho, y luego si por ejemplo sale un 70% que pase una cosa, el simulador randomiza y si sale 90 será que no pasará y si sale 60 sí pasará.


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 12 Agosto 2013, 00:54 am
En cuanto al factor random, sí, es muy importante. Lo que debería hacer el simulador es calcular probabilidades teniendo en cuenta los factores que hemos dicho, y luego si por ejemplo sale un 70% que pase una cosa, el simulador randomiza y si sale 90 será que no pasará y si sale 60 sí pasará.

Este metodo lo utilizaria para aplicarlo a la IA, en cuanto a los combates concretos, yo me decantaria por simular la lucha realmente y olvidarno de estadisticas XD, así aun sería mas aleatorio.

Me refiero a que si calculamos la ventaja que tiene un contrincante VS otro, se puede deducir facilmente quien ganara, por ejemplo uno tiene un 60% de ganar (se tira un dado del 1 al 10, si cae entre el 1 y el 6 gana, si no pierde), bueno, pues este metodo me parece fantastico para la IA, pero cuando una unidad decide atacar yo simularia realmente el combate en el turno.

Por otra parte tenemos que definir bastante bien los atributos principales y los secundarios...

Para mi los principales son los contables, y los secundarios son incontables, los atributos secundarios incrementan en % atributos principales, mientras que por otro lado tambien tenemos otra clase de condiciones que se aplican como auras despues de realizar los calculos anteriores.

Una vez hecho esto se simula las dos unidades golpeandose, utilizando randoms para ver si una unidad mete "Critico, esquiva, cae un trueno y despista al otro XDDDDD etc etc..." creo que es mejor aplicar un random a cada golpe así la suerte decidirá, aunque uno de primeras tenga más posibilidades de ganar, nunca se sabe, y bueno el combate acaba cuando uno de los dos se queda sin Vida.

Que os parece???


Título: Re: Algoritmo simulador de batallas
Publicado por: za.asi en 12 Agosto 2013, 00:58 am
Profundizando en las casillas, se podría especificar
Si el terreno es montañoso:
Código:
- el sentido de la pendiente (es mas fácil atacar a un enemigo que esta por debajo de ti que a la inversa

- es espeso o no sera posible atravesar un tramo semi-boscoso pero prácticamente imposible avanzar por una selva virgen
- el agua puede ser profunda o no, de manera que sea posible vadear un río o sea necesario cruzar a nado (la caballería no podría, ni la infantería pesada)

Ademas cada casilla podría tener alimentos que se podrían explotar para alimentar las tropas durante su avance (pongamos que 5 turnos componen un día, por ejemplo) y esto daría lugar a unidades que se queden en la retaguardia para que los ejércitos no se tengan que detener a buscar alimento. También se podría integrar la opción de eliminar el alimento de la casilla al avanzar (incendios) a coste de la velocidad.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 12 Agosto 2013, 01:12 am
Este metodo lo utilizaria para aplicarlo a la IA, en cuanto a los combates concretos, yo me decantaria por simular la lucha realmente y olvidarno de estadisticas XD, así aun sería mas aleatorio.

Me refiero a que si calculamos la ventaja que tiene un contrincante VS otro, se puede deducir facilmente quien ganara, por ejemplo uno tiene un 60% de ganar (se tira un dado del 1 al 10, si cae entre el 1 y el 6 gana, si no pierde), bueno, pues este metodo me parece fantastico para la IA, pero cuando una unidad decide atacar yo simularia realmente el combate en el turno.

Por otra parte tenemos que definir bastante bien los atributos principales y los secundarios...

Para mi los principales son los contables, y los secundarios son incontables, los atributos secundarios incrementan en % atributos principales, mientras que por otro lado tambien tenemos otra clase de condiciones que se aplican como auras despues de realizar los calculos anteriores.

Una vez hecho esto se simula las dos unidades golpeandose, utilizando randoms para ver si una unidad mete "Critico, esquiva, cae un trueno y despista al otro XDDDDD etc etc..." creo que es mejor aplicar un random a cada golpe así la suerte decidirá, aunque uno de primeras tenga más posibilidades de ganar, nunca se sabe, y bueno el combate acaba cuando uno de los dos se queda sin Vida.

Que os parece???

Estoy básicamente de acuerdo, pero unos apuntes:

-Me parece bien lo de principales y secundarios, pero cuando hagamos la clase tampoco es necesario realmente saber cuál es cuál.
-"Hasta que uno se quede sin vida": sería lo más simple pero yo no lo haría así. Yo haría que la lucha entre dos unidades durase unos turnos y durante ellos uno de los dos pudiese retroceder (lo he especificado en los algoritmos de arriba, míralo ;)).

Profundizando en las casillas, se podria especifiar
Si el terreno es monañoso:
- el sentido de la pendiente (es mas facil atacar a un enemigo que esta por debajo de ti que a la inversa

- es espeso o no sera posible atravesar un tramo semiboscoso pero practicamente imposible avanzar por una selva virgen
- el agua puede ser profunda o no, de manera que sea posible vadear un rio o sea necesario cruzar a nado (la caballeria no podria, ni la infanteria pesada)

Ademas cada casilla podria tener alimentos que se podrian explotar para alimentar las tropas durante su avance (pongamos que 5 turnos componen un dia, por ejemplo) y esto daria lugar a unidades que se queden en la retaguardia para que los ejercitos no se tengan que detener a buscar alimento. Tambien se podria integrar la opcion de eliminar el alimento de la casilla al avanzar (incendios) a coste de la velocidad.

Sí, eso es muy interesante. Lo meteríamos en la clase casilla.

-Lo del pendiente ya lo había pensado. Yo lo que haría es que un atributo fuese la altura de la casilla, entonces si están luchando dos unidades, comparamos sus respectivas casillas y bonificamos o penalizamos sus características según cuál sea relativamente más alta.

-Lo de si es una zona boscosa, lo veo un pelín complicado. Lo podríamos hacer más adelante. Sino, lo que podríamos hacer es que en zona boscosa pudiese pasar infantería ligera pero no elefantes ni caballería pesada, por ejemplo.

-Sobre lo del agua, a ver, yo no veo muy realista que una unidad cruce a nado una casilla. Si es zona pantanosa, puede pasar una unidad caminando (la caballería también puede), si es agua "profunda" nadie podría pasar (y, para más adelante, podríamos añadir el elemento naval).

-Lo de la alimentación, piensa que el simulador que estamos planeando es el de una simple batalla. Cuando lo tengamos hecho, podríamos hacer un simulador de campañas y que los dos se sincronicen, pero eso que hablas de la alimentación yo lo veo más bien un tema estratégico que táctico, y por ahora vamos a por la táctica. Cuando acabemos, añadimos simulador de campañas.

Bueno, lo que veo es que hablando así es difícil de concretar. Fijaos, por favor, en los algoritmos que he puesto y completadlos. O sino nos ponemos con el pseudocódigo y las clases ya. Debemos concretar.


Título: Re: Algoritmo simulador de batallas
Publicado por: za.asi en 12 Agosto 2013, 01:13 am
Cita de: xustyx
Para mi los principales son los contables, y los secundarios son incontables, los atributos secundarios incrementan en % atributos principales, mientras que por otro lado tambien tenemos otra clase de condiciones que se aplican como auras despues de realizar los calculos anteriores.

Una vez hecho esto se simula las dos unidades golpeandose, utilizando randoms para ver si una unidad mete "Critico, esquiva, cae un trueno y despista al otro XDDDDD etc etc..." creo que es mejor aplicar un random a cada golpe así la suerte decidirá, aunque uno de primeras tenga más posibilidades de ganar, nunca se sabe, y bueno el combate acaba cuando uno de los dos se queda sin Vida.

Que os parece???

Yo me refería justamente a que se utilice el random para generar el porcentaje:

Una unidad tiene un 60% de probabilidades de derrotar a otra en combate, mientras que la.otra solo tiene un 40%.
Si sale entre 0 y 60 ganara la primera, pero si sale un 0 masacrara a la unidad enemiga mientras que si sale un 59 tendrá bajas  y heridos y habrá supervivientes heridos (o no) en la otra unidad. Ademas se podría generar otro random para decidir cuantas de las unidades superviviente del combate están heridas o si su comandante ha caído en la batalla modificando los atributos secundarios como la moral o incluso atributos primarios como la cantidad de soldados efectivos en la unidad (descontando los heridos).

También se podría modificar la velocidad en función de la salud (si el 80% de la unidad esta herido no se desplazara a la misma velocidad que si todos están sanos).


Título: Re: Algoritmo simulador de batallas
Publicado por: za.asi en 12 Agosto 2013, 01:20 am

-Sobre lo del agua, a ver, yo no veo muy realista que una unidad cruce a nado una casilla. Si es zona pantanosa, puede pasar una unidad caminando (la caballería también puede), si es agua "profunda" nadie podría pasar (y, para más adelante, podríamos añadir el elemento naval).

Sobre esto quiero especificar que me refería a distancias cortas, como por ejemplo un río que si podria cruzar a nado una unidad de infanteria ligera, por ejemplo.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 12 Agosto 2013, 01:22 am
sobre esto quoero especiicar que me referia a distancias cortas, como por ejemplo un rio que si podria cruzar a nado una unidad de infanteria ligera, por ejemplo

Ya, pero vamos a ver, en medio de una batalla no se pondrán los legionarios a nadar.  Yo no lo complicaría tanto,.

Sobretodo, lo importante es que concretemos y la única forma de hacerlo es hablando de algoritmos, clases, pseudocódigo,...


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 12 Agosto 2013, 01:39 am
Estoy básicamente de acuerdo, pero unos apuntes:

-Me parece bien lo de principales y secundarios, pero cuando hagamos la clase tampoco es necesario realmente saber cuál es cuál.
-"Hasta que uno se quede sin vida": sería lo más simple pero yo no lo haría así. Yo haría que la lucha entre dos unidades durase unos turnos y durante ellos uno de los dos pudiese retroceder (lo he especificado en los algoritmos de arriba, míralo ;)).


Claro esta que la unidad tiene todo su derecho en su turno de Huir si ve que las cosas van a ir mal :D


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 12 Agosto 2013, 01:48 am
Claro esta que la unidad tiene todo su derecho en su turno de Huir si ve que las cosas van a ir mal :D

Ok, pues qué, comenzamos a escribir? :D

Yo ya he puesto unos atributos y algo del algoritmo, pero ahora deberíamos concretar a tope. No sé si con pseudocódigo o ya con algún lenguaje tipo C++.

Para que vayamos colaborando todos de forma fácil qué hacemos? Google Docs (al menos para el pseudocódigo? Algo tipo pastebin pero editable?

Por auqí vamos posteando comentarios, ideas, avances,... Y luego iría bien tener algún sitio donde ir escribiendo el pseudocódigo (o quizás ya el código, como veáis, a mí me mola C++).

Saludos.


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 12 Agosto 2013, 02:09 am
Yo C++ no tengo mucha idea XD, soy mas de C#, aunque no tengo mucha idea de juegos y estas cosas estaría bien hacerlo en C# y luego aplicarle XNA para el modo gráfico, simplemente por su sencillez.

Bueno elegir vosotros yo ahora toy hechando unas partidas al LOL :D


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 12 Agosto 2013, 02:20 am
Yo C++ no tengo mucha idea XD, soy mas de C#, aunque no tengo mucha idea de juegos y estas cosas estaría bien hacerlo en C# y luego aplicarle XNA para el modo gráfico, simplemente por su sencillez.

Bueno elegir vosotros yo ahora toy hechando unas partidas al LOL :D

Yo no lo haría en C#, entre otras cosas porque no tengo Windows xD. Yo lo haría en C++, sobretodo para temas de rendimiento. Imagínate que lo que hacemos al final es un juego online web, entonces iría bien que el simulador estuviese en C++.


Título: Re: Algoritmo simulador de batallas
Publicado por: za.asi en 12 Agosto 2013, 11:17 am
Yo solo se c++, pero mi nivel es muy bajo. De todos modos me interesa ayudar para poder aprender mas, pero si os decidís por un lenguaje diferente d c++ yo no podre participar.


Título: Re: Algoritmo simulador de batallas
Publicado por: 0xDani en 12 Agosto 2013, 19:11 pm
Me gustaría ver código C++ si sale un simulador potente. Sugiero que se miren las especificaciones de C++ 11 (http://es.wikipedia.org/wiki/C%2B%2B11)  ;)

Lo que veo es que todavía no habéis hablado del simulador en sí como objeto. Con esto quiero decir que el simulador debería poder simular batallas con soldados distintos de las clases predefinidas para ello, tal vez clases derivadas, y debería haber mucho código reusable. Todo esto para que no haya que cambiar todo el mecanismo del simulador para cambiar de ejército, o modificar funciones internas del simulador para añadir características. Incluso el mismo simulador podría ser de una clase heredable.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 13 Agosto 2013, 00:45 am
Me gustaría ver código C++ si sale un simulador potente. Sugiero que se miren las especificaciones de C++ 11 (http://es.wikipedia.org/wiki/C%2B%2B11)  ;)

Lo que veo es que todavía no habéis hablado del simulador en sí como objeto. Con esto quiero decir que el simulador debería poder simular batallas con soldados distintos de las clases predefinidas para ello, tal vez clases derivadas, y debería haber mucho código reusable. Todo esto para que no haya que cambiar todo el mecanismo del simulador para cambiar de ejército, o modificar funciones internas del simulador para añadir características. Incluso el mismo simulador podría ser de una clase heredable.

Es interesante lo que dices.

A ver, yo lo que había pensado para el simulador es que leyese los datos de los ejércitos a partir de una base de datos y a partir de ahí asignase los atributos. En ningún momento he dicho que en el propio código del simulador ya vayan predefinidos los valores de los atributos.

¿Sabes C++, no? ¿Te gustaría trabajar con nosotros? :P

Yo he estado codeando algo:

unity.hpp

Código:
#include <string>

class Unity {
  public:
    std::string id;
    std::string generalType;
    std::string name;
    int numberOfSoldiers;
    int numberOfInjuredSoldiers;
    float motivation;
    float physicalState;
    std::string favourableWeather;
    std::string harmfulWeather;
    std::string favourableTerrain;
    std::string harmfulTerrain;
    float meleeAttack;
    float meleeDefense;
    float longDistanceAttack;
    float longDistanceDefense;
    float discipline;
    float speed;
    std::string generalTypeFavourable;
    std::string generalTypeHarmful;
    std::string concreteTypeFavourable;
    std::string concreteTypeHarmful;
    float nutrition;
    float resistence;
};

box.hpp (casilla)

Código:
#include <string>

class Box {
  public:
    std::string id;
    std::string terrain;
    bool occupied;
    std::string unityId;
    float height;
};

mapcreator.hpp

Código:
#include <iostream>
#include "box.hpp"
#include "unity.hpp"


int createMap() {
  Box box[10][10];
  for(int x = 0; x < 10; x++){
   for(int y = 0; y < 10; y++) {
   /*Asignar valores a cada casilla según parámetros leídos, por                ejemplo:box[x][y].id = ...
   box[x][y].terrain = ...
   box[x][y].occupied = ...
   box[x][y].unityId =
   box[x][y].height =
               */
   }
  }
  return 0;
}

Es muy poca cosa, porque para el codeo en sí he tenido poco tiempo... Pero esta noche avanzaré más. Los que estáis interesados en darle al código, podríamos buscar una forma de colaborar, no? Bitbucket?

Y por cierto, he comenzado con C++ pero si decidís otro lenguaje lo votamos o acordamos o algo...

Lo que me está bloqueando es qué valores asignar a las casillas, qué hacemos, creamos un mapa "de prueba"? Un .txt?

Saludos.


Título: Re: Algoritmo simulador de batallas
Publicado por: za.asi en 13 Agosto 2013, 09:43 am
Las características secundarias como la moral o el terreno favorable/desfaborable yo las marcaría como booleano que luego actuaría como modificador del porcentaje de exito global de la unidad.
Las casillas deben tener una correspondencia entre ellas: no puede ser que haya una casilla de montaña a 50m, al lado una de agua profunda a 0m, debajo una de bosque a 30m y en medio de estas dos una de llanura a 70m. Lo mas facil que se me ocurre para el mapa es crear varios mapas y despues elegir uno al azar.

Al menos para empezar creo que sería comodo trabajar con google docs.


Título: Re: Algoritmo simulador de batallas
Publicado por: avesudra en 13 Agosto 2013, 11:05 am
Hola, me parece un proyecto bastante interesante, no dudaría en colaborar. Para comunicarnos y organizarnos, voto por Google Docs para el proyecto y para hablar pues se crea un grupo en Google Groups y listo.

El simulador tendría que organizar la batalla con la táctica introducida por el usuario, mover las unidades y en cuanto éstas estén en el rango de alcance y en su turno, atacar. Estamos intentando crear una IA.

Bien, digamos que el desarrollo de este simulador podría ser el siguiente:
  • 1. Mover ***¿según táctica?***.
  • 2. Mirar el rango de alcance de cada una de las unidades y ver si hay enemigos.
  • 3. Si está en el turno atacar.
  • 4. Según las unidades, la fuerza del ataque, la defensa, la orografía del mapa y demás restar salud a ambas unidades únicamente si las dos están en su rango de alcance. Pongamos un ejemplo, si una unidad de arqueros ataca a una unidad de legionarios, los legionarios si no es cuerpo a cuerpo no provocan daño a los arqueros. Sin embargo si una unidad de caballería ataca a una de legionarios provocará más daño la de caballería, pero los legionarios también provocarán daño.
¡Un saludo!


Título: Re: Algoritmo simulador de batallas
Publicado por: za.asi en 13 Agosto 2013, 13:07 pm
Yo dejaría las unidades así:

unity.hpp

Código:
#include <string>

class Unity {
  public:
    std::string id;
    std::string generalType;
    std::string name;
    float meleeAttack;
    float meleeDefense;
    float longDistanceAttack;
    float longDistanceDefense;
    float rangeLongDistanceAttack
    float speed;
    std::string generalTypeFavourable;
    std::string generalTypeHarmful;
    std::string concreteTypeFavourable;
    std::string concreteTypeHarmful;
  private:
    int numberOfSoldiers;
    int numberOfInjuredSoldiers;
    float motivation;
    float physicalState;
    std::bool weather;
    std::bool terrain;
    float discipline;
    float nutrition;
    float resistence;
};


Título: Re: Algoritmo simulador de batallas
Publicado por: 0xDani en 13 Agosto 2013, 13:53 pm
Sí, en principio no tengo problema en colaborar, tengo tiempo.

En el código que habéis puesto sugiero que se establezcan los atributos de las clases como privados, y métodos getters y setters.

Qué opináis de usar C++ 11?


Título: Re: Algoritmo simulador de batallas
Publicado por: avesudra en 13 Agosto 2013, 14:03 pm
Sí, en principio no tengo problema en colaborar, tengo tiempo.

En el código que habéis puesto sugiero que se establezcan los atributos de las clases como privados, y métodos getters y setters.

Qué opináis de usar C++ 11?
Yo también voto por poner los atributos como privados, es más lo iba a publicar ahora. En  cuanto a lo de C++11 me parece una buena idea, así practicamos. Solo tengo el header de momento pero bueno, las funciones get ya están implementadas:
Código
  1. #ifndef UNITY_H
  2. #define UNITY_H
  3. #include <string>
  4.  
  5. class Unity
  6. {
  7.    public:
  8.        Unity();
  9.  
  10.        void        setID                           (std::string newID);
  11.        void        setGeneralType                  (std::string newType);
  12.        void        setName                         (std::string newName);
  13.        void        setNumberOfSoldiers             (int newNumberOfSoldiers);
  14.        void        setInjuredSoldiers              (int newInjuredSoldiers);
  15.        void        setMotivation                   (float newMotivation);
  16.        void        setPhysicalState                (float newPhysicalState);
  17.        void        setFavourableWeather            (std::string newFavourableWeather);
  18.        void        setHarmfulWeather               (std::string newHarmfulWeather);
  19.        void        setFavourableTerrain            (std::string newFavourableTerrain);
  20.        void        setHarmfulTerrain               (std::string newHarmfulTerrain);
  21.        void        setMeleeAttack                  (float newMeleeAttack);
  22.        void        setMeleeDefense                 (float newMeleeDefense);
  23.        void        setLongDistanceAttack           (float newLongDistanceAttack);
  24.        void        setLongDistanceDefense          (float newLongDistanceDefense);
  25.        void        setDiscipline                   (float newDiscipline);
  26.        void        setSpeed                        (float newSpeed);
  27.        void        setGeneralTypeFavourable        (std::string newGeneralTypeFavourable);
  28.        void        setGeneralTypeHarmful           (std::string newGeneralTypeHarmful);
  29.        void        setConcreteTypeFavourable       (std::string newConcreteTypeFavourable);
  30.        void        setConcreteTypeHarmful          (std::string newConcreteTypeHarmful);
  31.        void        setNutrition                    (float newNutrition);
  32.        void        setResistence                   (float newResistence);
  33.  
  34.        std::string getID()                         const{return id;}
  35.        std::string getGeneralType()                const{return generalType;}
  36.        std::string getName()                       const{return name;}
  37.        int         getNumberOfSoldiers()           const{return numberOfSoldiers;}
  38.        int         getInjuredSoldiers()            const{return numberOfInjuredSoldiers;}
  39.        float       getMotivation()                 const{return motivation;}
  40.        float       getPhysicalState()              const{return physicalState;}
  41.        std::string getFavourableWeather()          const{return favourableWeather;}
  42.        std::string getHarmfulWeather()             const{return harmfulWeather;}
  43.        std::string getFavourableTerrain()          const{return favourableTerrain;}
  44.        std::string getHarmfulTerrain()             const{return harmfulTerrain;}
  45.        float       getMeleeAttack()                const{return meleeAttack;}
  46.        float       getMeleeDefense()               const{return meleeDefense;}
  47.        float       getLongDistanceAttack()         const{return longDistanceAttack;}
  48.        float       getLongDistanceDefense()        const{return longDistanceDefense;}
  49.        float       getDiscipline()                 const{return discipline;}
  50.        float       getSpeed()                      const{return speed;}
  51.        std::string getGeneralTypeFavourable()      const{return generalTypeFavourable;}
  52.        std::string getGeneralTypeHarmful()         const{return generalTypeHarmful;}
  53.        std::string getConcreteTypeFavourable()     const{return concreteTypeFavourable;}
  54.        std::string getConcreteTypeHarmful()        const{return concreteTypeHarmful;}
  55.        float       getNutrition()                  const{return nutrition;}
  56.        float       getResistence()                 const{return resistence;}
  57.  
  58.        virtual ~Unity();
  59.  
  60.    private:
  61.  
  62.        std::string id;
  63.        std::string generalType;
  64.        std::string name;
  65.        int numberOfSoldiers;
  66.        int numberOfInjuredSoldiers;
  67.        float motivation;
  68.        float physicalState;
  69.        std::string favourableWeather;
  70.        std::string harmfulWeather;
  71.        std::string favourableTerrain;
  72.        std::string harmfulTerrain;
  73.        float meleeAttack;
  74.        float meleeDefense;
  75.        float longDistanceAttack;
  76.        float longDistanceDefense;
  77.        float discipline;
  78.        float speed;
  79.        std::string generalTypeFavourable;
  80.        std::string generalTypeHarmful;
  81.        std::string concreteTypeFavourable;
  82.        std::string concreteTypeHarmful;
  83.        float nutrition;
  84.        float resistence;
  85. };
  86.  
  87.  
  88. #endif // UNITY_H


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 13 Agosto 2013, 23:57 pm
Perfecto, también estoy de acuerdo en ponerlos como privados. C++ 11 mola.

A ver, si os parece, los que estemos interesados nos apuntamos en una lista. Los posibles interesados:

avesudra: CONFIRMADO
0xDani: CONFIRMADO
za.asi: CONFIRMADO
xustyx: CONFIRMADO
eferion
GeorgArming: CONFIRMADO

Vamos confirmando, si os parece.

Confirmo.


Título: Re: Algoritmo simulador de batallas
Publicado por: za.asi en 13 Agosto 2013, 23:59 pm
Confirmo


Título: Re: Algoritmo simulador de batallas
Publicado por: avesudra en 14 Agosto 2013, 00:31 am
Confirmo.

PD: ya he terminado las implementaciones y la documentación de todos los métodos setters y getters.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 14 Agosto 2013, 01:05 am
Confirmo.

PD: ya he terminado las implementaciones y la documentación de todos los métodos setters y getters.

Mola :D


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 14 Agosto 2013, 01:36 am
Ya he creado el proyecto en un sitio de desarrollo. Cuando estemos todos confirmados os invito.

ATENCIÓN: la fecha límite para la confirmación es las 23:59 de hoy 14 de agosto, para poder empezar cuanto antes.


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 14 Agosto 2013, 04:33 am
Bueno pues yo creo que no voy a poder ayudaros ya que my sintaxis de C++ no es muy buena :S, pero bueno, entender el codigo lo entiendo XD, lo que a la hora de escribir tardaría bastante :D, bueno un saludo, estaré por aqui viendo como va la cosa.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 14 Agosto 2013, 17:00 pm
Bueno pues yo creo que no voy a poder ayudaros ya que my sintaxis de C++ no es muy buena :S, pero bueno, entender el codigo lo entiendo XD, lo que a la hora de escribir tardaría bastante :D, bueno un saludo, estaré por aqui viendo como va la cosa.

Yo creo que sí sabes ayudar. Yo tampoco soy un experto en C++, tú sabes programar y tienes ganas, eso es suficiente. Hay muchas cosas a hacer, por ejemplo, hacer mapas y eso, o programar simplemente, que podrías hacerlo.

Yo estaría encantado de contar contigo. Saludos


Título: Re: Algoritmo simulador de batallas
Publicado por: 0xDani en 14 Agosto 2013, 17:55 pm
Confirmo.

@avesudra, en los setters, como este:

Código
  1. void        setID                           (std::string newID);

es mucho más óptimo pasar una referencia al objeto, en vez del objeto en sí mismo, para no hacer una copia local de un objeto que no se va a modificar. Para garantizar que no se modifique, también se suele poner el modificador const a la referencia, quedando así:

Código
  1. void        setID                           (const std::string& newID);

Saludos.


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 14 Agosto 2013, 21:00 pm
Yo creo que sí sabes ayudar. Yo tampoco soy un experto en C++, tú sabes programar y tienes ganas, eso es suficiente. Hay muchas cosas a hacer, por ejemplo, hacer mapas y eso, o programar simplemente, que podrías hacerlo.

Yo estaría encantado de contar contigo. Saludos

Bueno, pues si es así, me apunto también :D, algo podré aportar, pero ya os digo que nunca he realizado un proyecto así y no sé como va el royo de la organización y todo esto...

Bueno pues al lío darme faena :D , pensando en lo de generar mapas, que os parece si crea algo sencillito como un pequeño algoritmo que genere el mapa en un XML??? Weno ir diciendo que hasta que no me confirmeis estaré esperando por aquí ;)

Saludos!!!


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 14 Agosto 2013, 23:04 pm
Bueno, pues si es así, me apunto también :D, algo podré aportar, pero ya os digo que nunca he realizado un proyecto así y no sé como va el royo de la organización y todo esto...

Bueno pues al lío darme faena :D , pensando en lo de generar mapas, que os parece si crea algo sencillito como un pequeño algoritmo que genere el mapa en un XML??? Weno ir diciendo que hasta que no me confirmeis estaré esperando por aquí ;)

Saludos!!!

Me alegro. Ya casi estamos todo confirmados, a las 00:00 os paso PM.


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 14 Agosto 2013, 23:51 pm
Ok, pues yo estaré para las 2:00 por aquí.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 15 Agosto 2013, 00:27 am
Se me ha ido la conexión pero ya ha vuelto  ::).

La lista definitiva de participantes es:

avesudra
0xDani
za.asi
xustyx
GeorgArming

Así que empezamos. Os paso PM.

Si alguien que no está apuntado quiere participar, pues puede seguirse apuntando cuando quiera, estamos abiertos a eso.


Título: Re: Algoritmo simulador de batallas
Publicado por: avesudra en 15 Agosto 2013, 01:03 am
Confirmo.

@avesudra, en los setters, como este:

Código
  1. void        setID                           (std::string newID);

es mucho más óptimo pasar una referencia al objeto, en vez del objeto en sí mismo, para no hacer una copia local de un objeto que no se va a modificar. Para garantizar que no se modifique, también se suele poner el modificador const a la referencia, quedando así:

Código
  1. void        setID                           (const std::string& newID);

Saludos.
Tienes muchísima razón, voy a cambiarlo, voy a añadirle sobrecarga de operadores ya vereis para qué y me comentais, el caso es que deberiamos hacer algo para hablar, o un foro o un chat, prefiero un foro.


Título: Re: Algoritmo simulador de batallas
Publicado por: orlando9427 en 15 Agosto 2013, 01:12 am
Pueden utilizar el algoritmo Diamond-Square para la generación de terrenos, e implementar un sistema de seeds donde se especifiquen la altura de las esquinas y tipo de terreno (montañoso, planicie, valle, etc.) junto con el clima húmedo, árido.

Saludos!


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 15 Agosto 2013, 01:54 am
Tienes muchísima razón, voy a cambiarlo, voy a añadirle sobrecarga de operadores ya vereis para qué y me comentais, el caso es que deberiamos hacer algo para hablar, o un foro o un chat, prefiero un foro.

Sí, lo necesitamos. ¿Google Groups?

Pueden utilizar el algoritmo Diamond-Square para la generación de terrenos, e implementar un sistema de seeds donde se especifiquen la altura de las esquinas y tipo de terreno (montañoso, planicie, valle, etc.) junto con el clima húmedo, árido.

Saludos!

Interesante, voy a echarle una ojeada.

Saludos!


Título: Re: Algoritmo simulador de batallas
Publicado por: avesudra en 15 Agosto 2013, 11:47 am
Sí, lo necesitamos. ¿Google Groups?
Saludos!
Me es indiferente, por mi vale :)

¡Un saludo!


Título: Re: Algoritmo simulador de batallas
Publicado por: 0xDani en 15 Agosto 2013, 16:23 pm
Qué tal un grupo de Skype? O un IRC?


Título: Re: Algoritmo simulador de batallas
Publicado por: avesudra en 15 Agosto 2013, 16:27 pm
Qué tal un grupo de Skype? O un IRC?
El problema es que en el grupo de Skype no puedes poner temas como en cualquier foro o en google groups.


Título: Re: Algoritmo simulador de batallas
Publicado por: 0xDani en 15 Agosto 2013, 16:29 pm
El problema es que en el grupo de Skype no puedes poner temas como en cualquier foro o en google groups.

En ese caso prefiero un foro antes que Google Groups.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 15 Agosto 2013, 23:36 pm
Venga, tenemos que decidirnos con el tema de la comunicación.

-Google Groups.
-Skype.
-IRC.
-Foro.
-Yammer.

Google Groups y Yammer son mis opciones favoritas. Ah, y hay IDEs online como Cloud9 o Codenvy que tienen chat de grupo.

Saludos.


Título: Re: Algoritmo simulador de batallas
Publicado por: avesudra en 15 Agosto 2013, 23:52 pm
Teniendo en cuenta que estos IDE's tienen chat el IRC es un poco inútil, un foro o google groups estaría bien.

0xDani yo tambien prefiero un foro por el tema de la organización.


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 16 Agosto 2013, 00:46 am
Bueno entonces como y cuando empezamos ?¿?


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 16 Agosto 2013, 00:56 am
Google Groups entonces? Como queráis.


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 16 Agosto 2013, 01:03 am
Yo creo que es buena idea, pero deberíamos empezar a movernos ya que el veranito se acaba :D


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 16 Agosto 2013, 01:29 am
Pues venga, Google Groups. Si alguien no está de acuerdo, que diga algo en las próximas horas o que calle para siempre  ;D


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 16 Agosto 2013, 02:55 am
Si me pasáis vuestros gmails por interno os invito al grupo en GGroups


Título: Re: Algoritmo simulador de batallas
Publicado por: xustyx en 16 Agosto 2013, 07:34 am
Bueno ya me a llegado la solicitud y ya estoy en el grupo, necesitaría saber los atributos de la clase casilla y tablero, creo que por aquí habían unos pero no se si al final son los definitivos.


Título: Re: Algoritmo simulador de batallas
Publicado por: GeorgArming en 16 Agosto 2013, 23:01 pm
Bueno, estamos dentro del Google Groups (los que no, miradlo, os he mandado invitación).


Título: Re: Algoritmo simulador de batallas
Publicado por: El Benjo en 29 Agosto 2013, 20:07 pm
Buenas, sé que el post ya tiene tiempo sin ser comentado y en teoría ya se dio por terminada la discusión o se movió a otra plataforma. Pero tengo la curiosidad de saber cómo va su proyecto.  ;D

Asi que, ¿cómo va el proyecto?