Por si alguien tenía curiosidad de lo que era, al final ha salido esto, aunque es una basura por que tiene varios errores que me da pereza solucionar, oye, por algo se empieza, el siguiente será mejor. A ver si aprendo a hacerlo por partes el programa, que aún me lío con los void y el return y todo eso.
https://docs.google.com/file/d/0BwYPyEI ... BqeDA/edit
Aquí os dejo el código fuente por si alguien siente más curiosidad:
Código: Seleccionar todo
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <time.h>
using namespace std;
int i, j, x, mx, my, max_su, max_iz, max_in, max_de, probabilidad, pxt, pyt, inicio_x, inicio_y, final_x, final_y;
char t[2], opt;
char terreno[50][50];
bool evento_activo=true, evento_final=true, ganar=true;
struct personaje
{
char nombre[40];
int vida;
int karma;
int evento;
int personaje_probabilidad;
};
personaje jugador;
int main()
{
srand (time(NULL));
jugador.karma=0;
do {
//Inicio configuracion personaje
cout<<"====================================\n";
cout<<"Bienvenido aventurero!\n";
cout<<"====================================\n";
cout<<"-Escribe tu nombre: ";
cin.getline(jugador.nombre,40);
cout<<"\n-Elige la difucltad: \n\t1- Facil\n\t2- Normal\n\t3- Dificil";
cout<<"\n-Opcion: ";
cin>>opt;
cin.getline(t,2);
//Inicio configuracion mapa
switch (opt) {
case '1':
x=7;
jugador.personaje_probabilidad=10;
jugador.vida=10;
break;
case '2':
x=15;
jugador.personaje_probabilidad=20;
jugador.vida=7;
break;
case '3':
x=21;
jugador.personaje_probabilidad=30;
jugador.vida=5;
break;
}
jugador.evento=10;
max_su=1;
max_in=x-2;
max_iz=1;
max_de=x-2;
//Fin configuracion mapa
//Fin configuracion personaje
system("cls");
} while(opt<1 && opt>3);
//Fin configuracion personaje
//Creacion de puntos
do {
inicio_x=rand()%x;
inicio_y=rand()%x;
} while ((inicio_x<2 && inicio_x>x-2) || (inicio_y<2 && inicio_x>x-2));
do {
final_x=rand()%x;
final_y=rand()%x;
} while ((final_x<2 && final_x>x-2) || (final_y<2 && final_x>x-2));
mx=inicio_x;
my=inicio_y;
//Fin de creacion de puntos
//Creacion terreno
for (i=0;i<x;i++) {
for (j=0;j<x;j++) {
if (i==0 || i==x-1 || j==0 || j==x-1) {
terreno[i][j]='M';
} else if (inicio_x==i && inicio_y==j) {
terreno[i][j]='I';
} else if (final_x==i && final_y==j) {
terreno[i][j]='F';
} else {
terreno[i][j]=' ';
}
}
}
//Fin creacion terreno
do {
//Inicio interfaz parte arriba
system("cls");
cout<<"========================================\nPersonaje: "<<jugador.nombre;
cout<<" || Vidas restantes: "<<jugador.vida<<"\n========================================\n";
//Fin interfaz parte arriba
//Inicio
cout<<"\n\n==== Mapa ====\n\n";
evento_activo=false;
for (i=0;i<x;i++) {
for (j=0;j<x;j++) {
if (i==mx && j==my) {
probabilidad=rand()%101;
if (probabilidad<jugador.personaje_probabilidad) {
cout<<"E";
evento_activo=true;
pxt=i;
pyt=j;
} else {
cout<<"X";
pxt=i;
pyt=j;
}
} else if (mx==final_x && my==final_y) {
ganar==false;
break;
} else {
cout<<terreno[i][j];
}
}
cout<<"\n";
}
//Inicio de posible evento
if (evento_activo==true) {
cout<<"\n\n==== Perdiste una vida ====";
jugador.vida--;
}
//Fin de posible evento
//Inicio del movimiento del jugador
opt=getch();
switch (opt) {
case 'a':
if (max_iz==my) {
break;
} else {
my--;
break;
}
case 's':
if (max_in==mx) {
break;
} else {
mx++;
break;
}
case 'd':
if (max_de==my) {
break;
} else {
my++;
break;
}
case 'w':
if (max_su==mx) {
break;
} else {
mx--;
break;
}
}
//Fin del movimiento del jugador
//Fin
if (mx==final_x && my==final_y) {
ganar==false;
system("cls");
cout<<"\n\n\n\n\n\n\t\t==== Has ganado ====";
getch();
break;
}
} while(jugador.vida>0 && ganar==true);
if (jugador.vida==0) {
system("cls");
cout<<"\n\n\n\n\n\n\t\t==== Has perdido ====";
getch();
}
}