PRACTICA MONOPOLY

Iniciado por shawwilliam, 17 Mayo 2013, 17:20 PM

0 Miembros y 2 Visitantes están viendo este tema.

shawwilliam

hola necesito ayuda con esta practica. El codigo esta bien, el problema es que no soy capaz de ponerlo en forma de modulo. mi profesora me obliga ha hacer las funciones con void y yo las tengo hechas pero con diferentes casos en swicths. espero que me puedan ayudar geracias.

Código (cpp) [Seleccionar]
//Complubuilding



#include <iostream>
#include <string>
#include <fstream>
#include <time.h>
#include <cstdlib>

using namespace std;

//const char edif[]="edificios.txt",jug[]="jugadores.txt";




// arrays de edificios



typedef struct{      
int codigo;
char nombre[100]; //ESTABA A 100
int precio;
int dinero;
int prestigio;
int estado;
}tEdificio;


//arrays de jugadores

typedef struct{

char usuario[100];
int password;
char empresa[100];
double dinero;
char prestigio;
int comprados;
int poscomprados[100];
int ncomprados;

}tJugador;







int main(){
   
   
   
   
    int password;
    char apodo[50];
    int cont =0;
    char limpiar[100];
    int nedificios=0;
    int posicioneliminar =0;
    int posicioncomprar =0;
    int njugador=0;
bool salir = true, ordenado = false;;

ifstream edificios;
string edif;
ifstream jugadores;
string jug;
    int eleccion1, i,k,eleccion2;
    tEdificio vedificios[100];
    tJugador vjugadores[20],auxejug;
    //tMonio monio;
   


edificios.open("edificios.txt");//se abre el archivo que contiene los edificios

if (edificios.is_open()){ //mientras .txt abierto
while(!edificios.fail() && edificios.good() && vedificios[nedificios].codigo!=-1){ // mientras lectura sin fallo distinta del centinela
//getline(edificios, edif);
edificios >> vedificios[nedificios].codigo;    edificios.getline(limpiar, 100);
edificios.getline(vedificios[nedificios].nombre, 100);
edificios >> vedificios[nedificios].precio; edificios.getline(limpiar, 100);
edificios >> vedificios[nedificios].dinero; edificios.getline(limpiar, 100);
edificios >> vedificios[nedificios].prestigio; edificios.getline(limpiar, 100);
edificios >> vedificios[nedificios].estado;    edificios.getline(limpiar, 100);


/*
cout << "\nCodigo:" << vedificios[nedificios].codigo;
               cout << "\nPrecio:" << vedificios[nedificios].precio;
               cout << "\nNombre:" << vedificios[nedificios].nombre;
               cout << "\nPrestigio:" << vedificios[nedificios].prestigio;
               cout << "\nEstado;" << vedificios[nedificios].estado;
*/
               nedificios++;
}
  edificios.close(); // Cierre del archivo
  nedificios--;

} else{
          cout <<"ERROR. NO SE ENCUENTRA EL FICHERO";
          }


jugadores.open("jugadores.txt");//se abre el archivo que contiene los jugadores

if (jugadores.is_open()){ //mientras .txt abierto
while(!jugadores.fail() && jugadores.good()){ // mientras lectura sin fallo distinta del centinela
//getline(jugadores, jug);

jugadores.getline(vjugadores[njugador].usuario,90);
jugadores >> vjugadores[njugador].password;              jugadores.getline(limpiar, 100);    
jugadores >> vjugadores[njugador].empresa;               jugadores.getline(limpiar, 100);
jugadores >> vjugadores[njugador].dinero;                jugadores.getline(limpiar, 100);
jugadores >> vjugadores[njugador].comprados;             jugadores.getline(limpiar, 100);
jugadores >> vjugadores[njugador].prestigio;             jugadores.getline(limpiar, 100);


           njugador++;
           

           




}
jugadores.close(); // Cierre del archivo
   }


do{
   
    cout << "Introduce tu apodo : ";
    cin >> apodo;
    cout << "introduce contrasena: ";  
    cin >> password;
    cont++;
    while(password != 12345 && cont < 3){
 cout << endl << "error contraseña: " << cont << endl <<  "Introduce tu apodo : ";
    cin >> apodo;
    cout << "introduce contrasena: ";  
    cin >> password;
   cont++;
}
if(cont ==3) exit(1);




if (strcmp (apodo,"admin") == 0)
{
//menu admin

do{

cout << "Que quieres hacer?" << endl;
cout << "1- Lista de Edificios" << endl;
cout << "2- Lista de Jugadores" << endl;
cout << "3- Nuevo jugador" << endl;
cout << "4-Nuevo edificio"<< endl;
cout << "5-Borrar edificio" << endl;
cout << "6-Borrar jugador" << endl;
cout << "7-Ejecutar un turno" << endl;
cout << "0- Salir" << endl;
cin >> eleccion1;

switch(eleccion1)
{

case 1:  //Visualizacion de edificios
    for(i=0;i<nedificios;i++){
cout << "\nCodigo:" << vedificios[i].codigo;
cout << "\nNombre:" << vedificios[i].nombre;
               cout << "\nPrecio:" << vedificios[i].precio;
               cout << "\nDinero:" << vedificios[i].dinero;
               cout << "\nPrestigio:" << vedificios[i].prestigio;
               cout << "\nEstado: " << vedificios[i].estado << endl << "----------";
               }
               
           break;



case 2:  //Visualizacion de jugadores
   
    for ( i=0; i<njugador; i++){
   
               cout << "\nUsuario:" << vjugadores[i].usuario;
               cout << "\nPassword:" << vjugadores[i].password;
               cout << "\nEmpresa:" << vjugadores[i].empresa;
               cout << "\nDinero:" << vjugadores[i].dinero;
               cout << "\nComprados:" << vjugadores[i].comprados;
               cout << "\nPrestigio:" << vjugadores[i].prestigio << endl << "----------";
               
   
    }
   break;


case 3: //Nuevo jugador
   
    //pedir los datos del jugador y guardarlos en vjugadores[njugador].usuario
   
    cout << "\nintroduce tu codigo:" << vjugadores[njugador].usuario;
    cin >> vjugadores[njugador].usuario;
   
    cout << "\nintroduce tu password:" << vjugadores[njugador].password;
     cin >> vjugadores[njugador].password;
     
    cout << "\ntu empresa:" << vjugadores[njugador].empresa;
      cin >> vjugadores[njugador].empresa;
   
   
    cout << "\ntu dinero:" << vjugadores[njugador].dinero;
     cin >> vjugadores[njugador].dinero;
   
   
    cout << "\ntus edificios comprados:" << vjugadores[njugador].comprados;
    cin >> vjugadores[njugador].ncomprados;
   
     cout << "\ntu prestigio:" << vjugadores[njugador].prestigio;
    cin >> vjugadores[njugador].prestigio;
   
   
    njugador++;
   
   
   
    break;




case 4: //Nuevo edificio


cout << "\ncodigo: ";
cin >> vedificios[nedificios].codigo;



cout << "\nnombre:";
cin >> vedificios[nedificios].nombre;    





cout << "\nprecio:" ;
cin >> vedificios[nedificios].precio;    
   


cout << "\ndinero:" ;
cin >> vedificios[nedificios].dinero;      
   



cout << "\nprestigio:";
cin >> vedificios[nedificios].prestigio;  


cout << "\nestado:";
cin >> vedificios[nedificios].estado;  

nedificios++;

break;
           



case 5: //Borrar edificio



cout << "introduce el puesto del edificio para eliminar: ";
cin >> posicioneliminar;

cout << "Se va a eliminar el edificio:";
cout << "codigo:" << vedificios[posicioneliminar].codigo << endl;
cout << "nombre:" << vedificios[posicioneliminar].nombre << endl;
cout << "precio:" << vedificios[posicioneliminar].precio << endl;
cout << "dinero:" << vedificios[posicioneliminar].dinero << endl;
cout << "prestigio:" << vedificios[posicioneliminar].prestigio << endl;
cout << "estado:" << vedificios[posicioneliminar].estado << endl;



    for(i=posicioneliminar;i<nedificios-1;i++){
                    vedificios[i]=vedificios[i+1];
                                             }
                    nedificios--;


//tEdificios[posicioneliminar);



break;


case 6: //Borrar jugador
   
cout << "introduce el puesto del jugador para eliminar: ";
cin >> posicioneliminar;
cout << "Se va a eliminar el edificio:"; //hecho con la parte opcional
cout << "usuario:" << vjugadores[posicioneliminar].usuario << endl;  
cout << "password:" << vjugadores[posicioneliminar].password << endl;  
cout << "empresa:" << vjugadores[posicioneliminar].empresa << endl;
cout << "dinero:" << vjugadores[posicioneliminar].dinero << endl;
cout << "prestigio:" << vjugadores[posicioneliminar].prestigio << endl;
cout << "comprados:" << vjugadores[posicioneliminar].comprados << endl;
   
   
   
   
     for(i=posicioneliminar;i<njugador+1;i++){
                    vjugadores[i]=vjugadores[i-1];
                                             }
                    njugador--;
   
   
  break;
 
   
   
   
   
   case 7: //Ejecutar un turno    
   
   
  /* Ejecutar un turno: Recorre la lista de jugadores y, para cada uno, recorre su
   lista de edificios comprados. Para cada edificio, añade (o resta) el dinero y
   puntos de prestigio que el edificio genera en cada turno.
   */



for ( i=0; i<njugador; i++){

       for(int j=0; j<vjugadores[i].ncomprados;j++){                    
       
       vjugadores[i].dinero +=  vedificios[vjugadores[i].poscomprados[j]].dinero;
       vjugadores[i].prestigio += vedificios[vjugadores[i].poscomprados[j]].prestigio;
       }        
   
    }
 














   
   
break;    

   
 
    /* cout << "\nUsuario:" << jugador[njugador].usuario;
               cout << "\nPassword:" << jugador[njugador].password;
               cout << "\nEmpresa:" << jugador[njugador].empresa;
               cout << "\nDinero:" << jugador[njugador].dinero;
               cout << "\nComprados:" << jugador[njugador].comprados;
               cout << "\nPrestigio:" << jugador[njugador].prestigio;
               nedificios++;
           */
   
   

}




}while (eleccion1!=0);
}//fin if
else{
if (strcmp (apodo,"salir") != 0)
{
//int k;
for (k=0; k<njugador; k++){
   if(strcmp (vjugadores[k].usuario,apodo)==0)
             break;
}          
    if ( k==njugador){
cout << "jugador incorrecto" << endl;        
         }
    else{
         int posjugador=k;
   
         
         
do { //menu jugador
         
cout << "Que quieres hacer?" << endl;
cout << "1.- Ver mis edificios" << endl;
cout << "2.- Ver los edificios disponibles" << endl;
cout << "3.- Comprar un edificio" << endl;
cout << "4.- Ver la clasificación ordenada por dinero" << endl; //ordenado por dinero
cout << "5.- Ver la clasificación ordenada por prestigio" << endl; //ordenado por prestigio
cout << "0.- Cerrar la sesión" << endl;
cin >> eleccion2;

switch(eleccion2)
{
   
   
case 1: //ver mis edificios

for(int j=0; j<vjugadores[posjugador].ncomprados;j++){
       
cout << "codigo:" << vedificios[vjugadores[posjugador].poscomprados[j]].codigo << endl;
cout << "nombre:" << vedificios[vjugadores[posjugador].poscomprados[j]].nombre << endl;
cout << "precio:" << vedificios[vjugadores[posjugador].poscomprados[j]].precio << endl;
cout << "dinero:" << vedificios[vjugadores[posjugador].poscomprados[j]].dinero << endl;
cout << "prestigio:" << vedificios[vjugadores[posjugador].poscomprados[j]].prestigio << endl;
cout << "estado:" << vedificios[vjugadores[posjugador].poscomprados[j]].estado << endl;
               
}
       
  break;
 
 
 case 2: //Edificios disponibles
 
 
 
  for(i=0;i<nedificios;i++){
cout << "\nCodigo:" << vedificios[i].codigo;
cout << "\nNombre:" << vedificios[i].nombre;
               cout << "\nPrecio:" << vedificios[i].precio;
               cout << "\nDinero:" << vedificios[i].dinero;
               cout << "\nPrestigio:" << vedificios[i].prestigio;
               cout << "\nEstado: " << vedificios[i].estado << endl << "----------";
               }
               
           break;

 
 
  case 3 : //Compra de Edificios
 
  cout << "introduce el puesto del edificio : ";
  cin >> posicioncomprar;

cout << "Se va a comprar el edificio:";
cout << "codigo:" << vedificios[posicioncomprar].codigo << endl;
cout << "nombre:" << vedificios[posicioncomprar].nombre << endl;
cout << "precio:" << vedificios[posicioncomprar].precio << endl;
cout << "dinero:" << vedificios[posicioncomprar].dinero << endl;
cout << "prestigio:" << vedificios[posicioncomprar].prestigio << endl;
cout << "estado:" << vedificios[posicioncomprar].estado << endl;

vjugadores[posjugador].dinero = vjugadores[posjugador].dinero - vedificios[posicioncomprar].dinero;
vjugadores[posjugador].poscomprados[vjugadores[posjugador].ncomprados++]=posicioncomprar;

vedificios[posicioncomprar].estado=1;

  /*for(i=posicioncomprar;i<nedificios-1;i++){
                    vedificios[i]=vedificios[i+1];
                                             }
                    nedificios--;
 
  */

  break;
 
 
case 4: //Ver clasificacion ordenada por dinero


for ( int i =0; (i <njugador-1)&& !ordenado;i++){
   ordenado=true;
   
   for ( int j =0; j <njugador-i-1; j++){
       
   if(vjugadores[j].dinero <vjugadores[j+1].dinero){
   ordenado = false;
   auxejug = vjugadores[j];
   vjugadores[j]=vjugadores[j+1];
   vjugadores[j+1]= auxejug;
   }
      for ( i=0; i<njugador; i++){
     cout << "\nUsuario:" << vjugadores[i].usuario;
             
               cout << "\nDinero:" << vjugadores[i].dinero;
               cout << "\nComprados:" << vjugadores[i].ncomprados;
               cout << "\nPrestigio:" << vjugadores[i].prestigio << endl << "----------";
     
     }
     
     
     
     
     
     
                            }
   }
   
   
   
   
   
   
   
break;

case 5: //Ver clasificacion ordenada por prestigio


for ( int i =0; (i <njugador-1)&& !ordenado;i++){
   ordenado=true;
   
   for ( int j =0; j <njugador-i-1; j++){
       
   if(vjugadores[j].prestigio <vjugadores[j+1].prestigio){
   ordenado = false;
   auxejug = vjugadores[j];
   vjugadores[j]=vjugadores[j+1];
   vjugadores[j+1]= auxejug;
   }
      for ( i=0; i<njugador; i++){
     cout << "\nUsuario:" << vjugadores[i].usuario;
             
               cout << "\nDinero:" << vjugadores[i].prestigio;
               cout << "\nComprados:" << vjugadores[i].ncomprados;
             
     
     }
     
     
     
     
     
     
                            }
   }
   
   
   
   
   
   
   
break;









break;


}  













   
}while (eleccion2!=0);
}
}
}
}while (strcmp (apodo,"salir") != 0);

system ("pause");
 return 0;
}  


Edito: Por favor, la proxima ves utiliza el botón GeSHi para colorear tu código. Gracias.

shawwilliam

cuando digo modulos me refiero a los modulos de programacion como por ejemplo: monopoly.h