Cita de: 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.
Mola
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: 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.
Cita de: 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
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.
#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;
};
#include <string>
class Box {
public:
std::string id;
std::string terrain;
bool occupied;
std::string unityId;
float height;
};
#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;
}
Cita de: 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
Cita de: xustyx en 12 Agosto 2013, 01:39 AM
Claro esta que la unidad tiene todo su derecho en su turno de Huir si ve que las cosas van a ir mal
Cita de: za.asi en 12 Agosto 2013, 01:20 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
Cita de: xustyx en 12 Agosto 2013, 00:54 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???
Cita de: za.asi en 12 Agosto 2013, 00:58 AM
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.
Cita de: za.asi en 12 Agosto 2013, 00:18 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.
Cita de: 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
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.
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.
Cita de: 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.