223 lines
4.4 KiB
C++
223 lines
4.4 KiB
C++
#include "listaCoordenadas.h"
|
||
#include "listaJugadores.h"
|
||
#include "jardin.h"
|
||
#include <iostream>
|
||
#include <fstream>
|
||
|
||
using namespace std;
|
||
|
||
|
||
void mostrarMenu(); //menu principal
|
||
void mostrarMenu2(); //menu para mostrar: opcion 2
|
||
int leerOpcion(int ini, int fin); //entre los valores ini y fin
|
||
string leerNombreFichero();
|
||
|
||
|
||
void ejecutarJuego(tListaJugadores &js); //ejecutar opcion 1
|
||
void leerCoordenadas(const tJardin &j, tListaCoordenadas &cs); //leer las coordenadas de los aspersores
|
||
void regarJardin(tJardin & j, tListaCoordenadas &cs); //regar todo el jardin: consume la lista de coordenadas
|
||
|
||
|
||
void ejecutarMostrarJugadores(const tListaJugadores &js); //ejecutar opcion 2
|
||
|
||
void ejecutarPlantaCondenada(); //ejecutar opcion 3
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
int main()
|
||
{
|
||
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
|
||
|
||
tListaJugadores js;
|
||
ifstream ijugadores;
|
||
//Cargar los jugadores
|
||
ijugadores.open("jugadores.txt");
|
||
if (ijugadores.is_open()){
|
||
cargarJugadores(js, ijugadores);
|
||
}
|
||
else { cout << "No se ha podido cargar fichero.";}
|
||
ijugadores.close();
|
||
|
||
int op,op2;
|
||
|
||
do{
|
||
|
||
mostrarMenu();
|
||
op = leerOpcion(0,3);
|
||
switch (op){
|
||
case 0: cout << "Adios."; system("pause"); break;
|
||
case 1: ejecutarJuego(js); break;
|
||
case 2:ejecutarMostrarJugadores(js); break;
|
||
case 3: ejecutarPlantaCondenada(); break;
|
||
default: break;
|
||
}
|
||
} while (op != 0);
|
||
|
||
|
||
|
||
|
||
//Guardar los jugadores
|
||
ofstream ofjugadores;
|
||
ofjugadores.open("jugadores.txt");
|
||
guardarJugadores(js, ofjugadores);
|
||
ofjugadores.close();
|
||
|
||
liberar(js);
|
||
}
|
||
|
||
|
||
void leerCoordenadas(const tJardin &j, tListaCoordenadas &cs){
|
||
int fila, columna;
|
||
tCoordenada c;
|
||
|
||
cout << "Introduzca las coordenadas. Para terminar introduzca -1. \n";
|
||
|
||
|
||
crearVacia(cs);
|
||
|
||
cout << "Coordenada: ";
|
||
cin >> fila;
|
||
while (!cin.fail() && fila != -1)
|
||
{
|
||
cin >> columna;
|
||
c = crearCoordenada(fila, columna);
|
||
|
||
if (esLibre(j, c))
|
||
{
|
||
if (!insertar(cs, c)) {
|
||
cout << "Repetida. \n";
|
||
}
|
||
}
|
||
else { cout << "Esa parcela no est<73> libre.\n"; }
|
||
|
||
cout << "Coordenada: ";
|
||
cin >> fila;
|
||
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
void regarJardin(tJardin & j, tListaCoordenadas &cs)
|
||
{
|
||
int puntos; tCoordenada c;
|
||
while (sacar(cs,c))
|
||
{
|
||
regar(j, c);
|
||
};
|
||
|
||
}
|
||
|
||
void mostrarMenu()
|
||
{
|
||
system("cls");
|
||
cout << "1. Jugar." << endl;
|
||
cout << "2. Mostrar jugadores." << endl;
|
||
cout << "3. Planta condenada?." << endl;
|
||
cout << "0.Salir." << endl;
|
||
cout << "Introduce una opcion: ";
|
||
|
||
}
|
||
|
||
void mostrarMenu2()
|
||
{
|
||
system("cls");
|
||
cout << "1. Mostrar jugadores ordenados por nombre." << endl;
|
||
cout << "2. Mostrar jugadores ordenados por puntuacion." << endl;
|
||
cout << "0.Volver." << endl;
|
||
cout << "Introduce una opcion: ";
|
||
|
||
}
|
||
|
||
int leerOpcion(int ini, int fin)
|
||
{
|
||
int i;
|
||
cin >> i;
|
||
while (cin.fail() || i<ini || i>fin)
|
||
{
|
||
cin.clear(); cin.sync();
|
||
cout << "Opcion incorrecta. Introduce una opcion:";
|
||
cin >> i;
|
||
};
|
||
cin.sync();
|
||
return i;
|
||
}
|
||
|
||
|
||
string leerNombreFichero()
|
||
{
|
||
string nfichero;
|
||
cout << "Introduce el nombre del fichero: ";
|
||
cin >> nfichero;
|
||
return nfichero;
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
void ejecutarPlantaCondenada()
|
||
{
|
||
|
||
tJardin j; tCoordenada c;
|
||
string nfichero = leerNombreFichero();
|
||
ifstream fjardin;
|
||
fjardin.open(nfichero);
|
||
if (fjardin.is_open())
|
||
{
|
||
cargarJardin(j, fjardin);
|
||
if (plantaCondenada(j, c)) { cout << "Tiene al menos una planta condenada, en la coordenada: " << fila(c) << " " << columna(c) << endl; }
|
||
else { cout << "No tiene plantas condenadas.\n"; }
|
||
}
|
||
else { cout << "No se ha podido abrir.\n"; }
|
||
system("pause");
|
||
}
|
||
|
||
|
||
void ejecutarMostrarJugadores(const tListaJugadores &js)
|
||
{
|
||
int op;
|
||
mostrarMenu2();
|
||
op = leerOpcion(0, 2);
|
||
if (op == 1) {
|
||
mostrarJugadores(js);
|
||
}
|
||
else if (op == 2) {
|
||
mostrarPorPuntos(js);
|
||
}
|
||
}
|
||
|
||
|
||
void ejecutarJuego(tListaJugadores &js)
|
||
{
|
||
string nombre, njardin;
|
||
ifstream fjardin;
|
||
tJardin j;
|
||
tListaCoordenadas cs;
|
||
int puntos;
|
||
|
||
cout << "Introduzca el nombre del jugador: ";
|
||
cin >> nombre;
|
||
njardin = leerNombreFichero();
|
||
fjardin.open(njardin);
|
||
if (fjardin.is_open())
|
||
{
|
||
cargarJardin(j, fjardin);
|
||
mostrarJardin(j);
|
||
leerCoordenadas(j, cs);
|
||
regarJardin(j, cs);
|
||
puntos = calcularPuntuacion(j);
|
||
cout << nombre << ", has conseguido " << puntos << " puntos!.\n";
|
||
system("pause");
|
||
actualizarPuntuacion(js, nombre, puntos);
|
||
}
|
||
else { cout << "No se ha podido abrir."; }
|
||
fjardin.close();
|
||
}
|
||
|