Random y probabilidades (Simulación)

Iniciado por aythor94, 5 Septiembre 2009, 12:03 PM

0 Miembros y 1 Visitante están viendo este tema.

aythor94

Hola!!!
Hace poco abri un tema parecido en otra categoria (en la de vb6 ), pero la verdad es que prefiero que me respondan aqui, ya que aqui hay gente especializada en este lenguaje (el .net) y eso... aqui va mi pregunta:
Haber, mi intención es crear un programa (a peticion de mi mejor amigo), en el cual, tu eliges un personaje, del estilo, sale la imagen del personaje que quieres elegir y luego este aparece en pantalla (solo la imagen), cada uno con unas caracteristicas:
Por ejemplo:
-Fuerza
-Ataque
-Defensa
-Habilidad
-Poder
Asi sucesivamente algunas caracteristicas más.
Luego cuando eliges a los dos personajes a  "pelear", pulsas el boton "simular" y te da el resultado de quien gana.
Evidentemente, sera imposible que un personaje que de una media de 1 punto, le gane a uno de 10, pero si que uno de 9 puntos le pueda ganar a uno de 10.
Se que hay que usar la función Random a la fuerza para que haya una minima variable aleatoria.
Necesito que alguien me ayude a comprender como hacer este sistema de simulación.
Muchas gracias de antemano,
Un gran saludo!!!

Foxy Rider

Y .. solo necesitás ayuda con el random ? (no entendí bien la pregunta)
tenés System.Random para generar aleatorios ...

en VB sería así ? (solo conozco C# xP)

Código (vbnet) [Seleccionar]

Dim Rand As Random
Dim rRet As Integer
' entre 0 y 10
rRet = Rand.Next(0,10)


http://msdn.microsoft.com/en-us/library/system.random.next.aspx

Saludos ~

aythor94

Random y lo demás que escribi... Probabilidades, como lo tendria que poner...etc
Un saludo!!!!

Keyen Night

Usar porcentaje es muy facil solo es question de pensar mira esto:

Dim Rand As Random
Dim rRet As Integer
' entre 0 y 10
rRet = Rand.Next(0, 100)
If rRet <= X% Then
.....
End If


En donde puse X% colocaras el número del 1-100 que jugará con la probabilidad.
Espero que no solo Copies y Peges el código sino que tambien te molestes en entenderlo.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Foxy Rider

#4
mirá, podrías usar lógica difusa para ver "cuan esto" es algo, en vez de hablar de absolutos y tener algo más real (por ejemplo, para elegir un arma o ataque basado en determinados criterios)

http://es.wikipedia.org/wiki/L%C3%B3gica_difusa
http://www.answermath.com/Spanish/esp-fuz.htm
la mejor referencia que te puedo dar es el libro "Programming AI By Example"
ahí comenta muy detallado el como implementarlo, y el ejemplo que plantea es MUY similar a lo que querés hacer ...

para los gráficos tenés Mogre (es un port de Ogre para .Net, igual no sé si se actualizaron a la verisón 1.6.* de Ogre ... creo que iban por la 1.4.9), que creo que es usable en VB.Net ....
en los samples vienen dos ninjas que podés usar como modelos de personajes...
y creo que venía con la versión managed de ODE, así podés aplicar las físicas ....
Ogre trae un generador de terreno, así que ...

y bueno, es más AI que otra cosa este simulador..
espero haberme explicado bien ^^" ~(cualquier cosa me aclaro y te puedo poner algún ejemplo)

Saludos ~

Edit : me rre colgué ... te agrego sobre pathfinding ya que estoy :

http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
http://en.wikipedia.org/wiki/A*_search_algorithm

y este otro link : http://aigamedev.com/ ;P

raul338

Cita de: Vertex.Symphony en  5 Septiembre 2009, 18:29 PM
para los gráficos tenés Mogre (es un port de Ogre para .Net, igual no sé si se actualizaron a la verisón 1.6.* de Ogre ... creo que iban por la 1.4.9), que creo que es usable en VB.Net ....

No entendi casi nada de lo que dices (porque no se ningun tema del que estas hablando  :P :P), pero si se puede en C# se puede en VB  ::) ::)

Foxy Rider

Mogre es un wrapper para .Net de Ogre, que está escrito en C++ ... (ok, es algo más que un wrapper, tiene algunas comodidades encima =D)
Ogre sirve para hacer gráficos 3D, con lo que podría poner un terreno y dos ninjas peleando usando Ogre ...
ODE (Open Dynamics Engine) es un motor de físicas, que le puede servir para la detección de colisión ...

todo es C/C++, pero .. hay wrappers para .NET ....

después, lo de Pathfinding, es para que los personajes se puedan encontrar, es decir, que sepan donde está el otro (ahí puse el algoritmo de Dijkstra y A* (que deriva del primero) que es lo más usado y lo más común ....), respecto a lógica difusa ...

esta se basa en gráficos euclideanos, es decir, la superposición de dos cosas, no son los gráficos comunes, son así :



sirve para decir cuanto pertenece X a Y, es decir, por cuan miembro es de un conjunto (Fuzzy Set)
en vez de hacer un salto directo como suele ser con los conjuntos normales, con la lógica difusa es una transición más suave ...

miralo de esta manera :

Cerca -> 0 a 2 metros
Medio -> 2 y 5 metros
Lejos -> +5 metros

4.99 entraría dentro de medio ... suena estúpido no ?
con lógica difusa, 4.99 sería más Lejos que medio ...

más o menos en eso se basa la lógica difusa, dicho en "simple" ...

Saludos ~