Dev - C++ - Duda con Codigo fuente en DevC++ juego de texto Mazmorras y Orcos.

 
Vista:
sin imagen de perfil

Duda con Codigo fuente en DevC++ juego de texto Mazmorras y Orcos.

Publicado por Alejandro (1 intervención) el 25/10/2014 23:38:59
Saludos, esta es mi duda: Estoy haciendo un juego llamado Mazmorras y Orcos (nombre aun pendiente) trata de que estas atrapado en una cueva, el programa te origina un valor al azar de los cuartos que se estableceran en el juego (de 3 a 6 cuartos) y los tamaños de estos (valores al azar entre 0 y 1, donde 0 sera una camara chica y 1 una grande) dependiendo del tamaño de cuarto, se establecera un cierto numero de orcos (cuarto chico, de 0 a 2 orcos; cuarto grande, de 3 a 5). Al iniciar el juego se te dara a elegir entre 3 armas (hacha, espada y relampago) cada una con sus respectivos stats....

Para crear el juego cree unas funciones, por ejemplo una funcion RanAl que me originara valores al azar entre un maximo y un minimo introducido, y la funcion es la que me realizara el calculo una vez que la convoque despues del main. Mi duda es, ya que es la primera vez que utilzo funciones definidas, no se como acomodarlas en el codigo, yo se que son antes del main(), ya que son funciones globales pero al realizar funciones (como la de selectWeap(), que es la funcion con la que escogemos arma en el juego) no supe como acomodarlas, e hice un desorden, queria saber si me pueden echar una mano nadamas con el acomodo, de ser posible.

Dudas adicionales: Los ciclos for creados dentro de ciclos while y for estan establecidos ya que este juego termina si es que mueres o si es que matas a todos los orcos y superas los cuartos con exito (para esto cree los ciclos for, como contadores. Pero, por ejemplo, tengo un ciclo for para numCam (numero de camaras, que se habra generado al azar con la funcion ranAl) creo que se deben establecer tres condicionales para la variable a la que se establece el ciclo for, y no se si sea correcto que este asi de formulada: for(numCam = numCam...) ya que no quiero cambiar ese valor, y no creo que sea correcto igualarlo a la funcion ranAl ya que, cada vez que el ciclo se repita se generara otro valor al azar, se supone que ese ciclo se repite al matar a todos los orcos de un cuarto (para eso esta otro ciclo for) y asi se iran restando los numeros de cuartos (numCam) hasta llegar al 0, y asi se completaria con exito el juego.

Por su tiempo y atencion les agradezco. Y si soy relativamente nuevo programando, me temo.

Saludos

Codigo Fuente en cuestion:

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
int numCam, energia = 100, enxgol, probCrit, ataqueArm = 0, ataqueSin = 0, energiaX;
int vida, armor, tamCam, numMon, Orcatk, probOrc=10;
int Countpuntos, puntos, contCrit, contMons, CountNRG, contTiemp;
char Arma;

void confAl()
{
srand(time(NULL));
}

int ranAl(int min, int max)//esta función ayuda a generar intervalos de números aleatorios.
{
int rango;
rango = max - min + 1;
rango = rand() % rango + min;
return rango;
}
void SelectWeap() //Funcion de seleccion de arma (Por el momento es solo una arma por juego).
{
int i = 0;
printf("\nSelecciona tu arma para Tu aventura:"
"\nHacha: 2 de energia por golpe, 15%% prob. de critico, bonus vs sin armaduras"
"\nEspada: 1 de energia por golpe, 10%% prob. de critico"
"\nRelampago: 2 de energia por golpe, 5%% prob. de critico, bonus vs armaduras");
while (i == 0){
printf("\nEscribe 'h' para el Hacha, 'e' para la Espada o 'r' para el Relampago:\n");
scanf("%c", &Arma);
if (Arma > 0 && Arma < 4)
{
i = 1;
switch (Arma){
case 'h':
enxgol = 2;
probCrit = 15;
ataqueSin = 5;
printf("\nUn arma para desgarrar la piel descubierta, sabia eleccion.");
break;
case 'e':
enxgol = 1;
probCrit = 10;
printf("\nUn arma noble y buena para cualquier situacion, buena eleccion.");
break;
case 'r':
enxgol = 2;
probCrit = 5;
ataqueArm = 10;
ataqueSin = -5;
printf("\nUn arma capaz de penetrar la mas dura coraza, bien pensado.");
break;
}
}
else
{
printf("\nAccion invalida, vuelve a intentarlo!");
}
}
}

numCam = ranAl(3, 6);
{

for (numCam = numCam; numCam > 0; numCam--)
{
for (numMon = numMon; numMon > 0; numMon--)
{
while (vida > 0 && energiaX > 0){
void tipoDeCamara()//esta función declara el tipo de cámara (chica o grande) y la cantidad de orcos en ella.
{
tamCam = ranAl(0, 1);
if (tamCam == 1)
{
numMon = ranAl(2, 5);
printf("\nTe encuentras en una camara grande donde hay %d orcos.", numMon);
}
else
{
numMon = ranAl(0, 2);
printf("\nTe encuentras en una camara chica donde hay %d orcos.", numMon);
}
}
}
}
}
void StatsOrcs()//esta función determina la vida, armadura y puntos que da al morir cada orco.
{
vida = ranAl(10, 40);
armor = ranAl(0, 1);
if (armor == 1)
{
printf("\nSe aproxima un orco con armadura y tiene %d puntos de vida!", vida);
}
else {
printf("\nSe aproxima un orco sin armadura y tiene %d puntos de vida!", vida);
}
puntos = vida / 10;
}
void OrcAtk()//esta función determina el ataque de los orcos cada turno
{
int i;
Orcatk = ranAl(0, 100);
probOrc = probOrc*numMon;
if (Orcatk <= probOrc)
{
i = ranAl(1, 5);
energiaX = energiaX - i;
printf("\nTe han atacado, infligiendo %d puntos de daño! te quedan %d puntos de energia para aguantar!",i,energiaX);
}
probOrc = 10;
}
void Turn()//Esta función establece lo que sucede en un turno en la partida (Tus acciones, y acciones de la IA)
{

int accion, ataque, crit;
printf("\nQue es lo que quieres hacer?"
"\nEscribe 'a' para atacar y 'd' para defender: ");
scanf_s("%c", &accion);
if (accion == a)
{
energiaX = energiaX - enxgol;
ataque = ranAl(1, 10);
crit = ranAl(0, 100);
if (crit < probCrit)
{
printf("\nHas acertado un golpe critico! tu oponente ha muerto.");
vida = 0;
contCrit++;
}
else
{
vida = vida - ataque;
printf("Has atacado al orco, infligiendo %d puntos de daño."
"\nTe quedan %d puntos de energia en esta camara y el orco tiene %d puntos de vida\n",ataque,energiaX,vida);
}

}
if (accion == d)
{
printf("\nTe has defendido en este turno! Tu probabilidad de critico ha aumentado a un %d%% y tu defensa tambien!",probCrit);
probCrit = probCrit + 2;
probOrc = 5;
}
if (accion > 2 || accion < 1)
{
printf("\nEsa accion no es posible, vuelve a intentar!");
}
if (vida<1)
{
printf("\nHas matado al orco!");
}
}

}
}
}

main(void)

{
printf("Has superado y sobrevivido con éxito cada uno de los cuartos de las cuevas y enfrentado con valentia y osadia a cada orco. Calimbaliiiiii!!");

return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder