Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/07/2010, 10:54
Avatar de Munire
Munire
 
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
ayuda error programacion: no obedece el codigo [SOLUCIONADO]

Hola, estoy haciendo un programa que consiste basicamente en un combate. Lo he terminado ya y despues de corregir todos los errores de sintaxis que daba al compilar, lo he ejecutado y no hace lo que yo quiero es decir es como si no obedeciera el codigo .

lenguaje: C++
S.O: UBUNTU 10.04
IDE: NETBEANS
decir que soy totalmente novato. acabo de empezar hace unos dias.

los errores los explico en el siguiente mensaje junto con lo que me devuelve el programa. (no me cabe en uno solo)

OBJETOS:
Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. #include <cstdlib>
  4. #include <stdlib.h>
  5.  
  6. class elfo {
  7.  
  8. public:
  9.     string nombre;
  10.     int vida;
  11.     int ataque;
  12.     int defensa;
  13.     int dec;       // variable decision del arma
  14.     elfo();
  15.     ~elfo();
  16.  
  17.     int atacar();
  18.     int defender();
  19.     int abandonar();
  20.     int muerto();
  21.    
  22.  
  23.     friend class espada;
  24.     friend class mandoble;
  25.    
  26. };
  27.  
  28. class espada {
  29.  
  30. public:
  31.     espada();
  32.     ~espada();
  33.     int dano; //bonificacion daño
  34.     int def;
  35.     friend class elfo;
  36. };
  37.  
  38. class mandoble{
  39. public:
  40.     mandoble();
  41.     ~mandoble();
  42.     int danoo;     //bonificaciones de daño y (abajo) defensa.
  43.     int deff;
  44.     friend class elfo;
  45. };
  46.  
  47. class trasgo1 {
  48. public:
  49.     int vida_t;
  50.     int ataque_t;
  51.     int defensa_t;
  52.  
  53.     trasgo1();
  54.     ~trasgo1();
  55.  
  56.     int atacar_t();
  57.     int defender_t();
  58.     int muerto_t();
  59.  
  60. };


Código C++:
Ver original
  1. // ######################################################################################
  2. elfo::elfo(){
  3.     espada esp;        
  4.     mandoble man;
  5.     vida = 25;
  6.     defensa = 2;
  7.     ataque = 5;
  8.     dec = 0;
  9.     cout << "creando Elfo...  ¿¿como lo quieres llamar?? ";
  10.     cin >> nombre;
  11.     cout << endl;
  12.     cout << nombre << " tiene las siguientes estadisticas: " << endl;
  13.     cout << endl;
  14.     cout << "vida: " << vida << endl;
  15.     cout << "ataque: " << ataque << endl;
  16.     cout << "defensa: " << defensa << endl;
  17.     cout << endl;
  18.     cout << "ahora escoge un arma. Armas disponibles: " << endl;
  19.     cout << endl;
  20.     cout << "1.- ESPADA Y ESCUDO.  +1 def +1 atq" << endl;
  21.     cout << "2.- MANDOBLE.  -1 def +3 atq" << endl;
  22.     cout << endl;
  23.  
  24.     for (;;){
  25.         cout << "==> ";
  26.  
  27.         cin >> dec;               // aqui se elige el arma
  28.         if (dec = 1){
  29.             cout << "las armas seleccionadas son: espada y escudo." << endl;
  30.             cout << "actualizando estadisticas..." << endl;
  31.             ataque = ataque + esp.dano;
  32.             defensa = defensa + esp.def;
  33.             cout << endl;
  34.             cout << "vida: " << vida << endl;
  35.             cout << "ataque: " << ataque << endl;
  36.             cout << "defensa: " << defensa << endl;
  37.             break;
  38.  
  39.         }
  40.  
  41.         if (dec = 2){
  42.             cout << "el arma seleccionada es: mandoble." << endl;
  43.             cout << "actualizando estadisticas..." << endl;
  44.             ataque = ataque + man.danoo;
  45.             defensa = defensa + man.deff;
  46.             cout << endl;
  47.             cout << "vida: " << vida << endl;
  48.             cout << "ataque: " << ataque << endl;
  49.             cout << "defensa: " << defensa << endl;
  50.             break;
  51.         }
  52.  
  53.         else{
  54.             cout << "ERROR!" << endl;
  55.         }
  56.     }
  57.  
  58.     cout << "se ha terminado de crear el personaje." << endl;
  59.     cout << endl;
  60.  
  61. }
  62.  
  63. elfo::~elfo(){
  64.     cout << "(elfo destruido.)";
  65. }
  66.  
  67.  
  68. int elfo::atacar(){
  69.    
  70.     cout << "aaaarrrrggg..." << endl;
  71.    
  72. }
  73.  
  74. int elfo::atacar_t2(){
  75.    
  76.     cout << "aaaarrrrggg..." << endl;
  77. }
  78.  
  79. int elfo::defender(){
  80.     cout << nombre << " se puso en posicion defensiva..." << endl;
  81. }
  82.  
  83. int elfo::abandonar(){
  84.     cout << nombre << " es un cagao y ha abandonado." << endl;
  85.     cout << "la partida ha terminado." << endl;
  86. }
  87.  
  88. int elfo::muerto(){
  89.     cout << nombre << " ha muerto. La partida ha terminado." << endl;
  90. }
  91.  
  92. // ESPADA Y ESCUDO #################################################################
  93.  
  94. espada::espada(){
  95.     cout << "(espada creada.)" << endl;
  96.     dano = 1;
  97.     def = 1;
  98.  
  99. }
  100.  
  101. espada::~espada(){
  102.     cout << "(espada destruida.)" << endl;
  103. }
  104.  
  105. // MANDOBLE ###############################################################
  106.  
  107. mandoble::mandoble(){
  108.     cout << "(mandoble creado.)." << endl;
  109.     danoo = 4;           // arriba he puesto que daba +3 pero da igual
  110.     deff = -2;
  111. }
  112.  
  113. mandoble::~mandoble(){
  114.     cout << "(mandoble destruido)." << endl;
  115. }
  116.  
  117. // CREAR TRASGO 1 #########################################################
  118.  
  119.  
  120.  
  121. trasgo1::trasgo1(){
  122.  
  123.     vida_t = 15;
  124.     ataque_t = 4;
  125.     defensa_t = 2;
  126.     cout << "trasgo apareció. El combate va a empezar..." << endl;
  127.     cout << endl;
  128. }
  129.  
  130. trasgo1::~trasgo1(){
  131.     cout << "(trasgo1 destruido.)";
  132.     cout << endl;
  133. }
  134.  
  135. int trasgo1::atacar_t(){
  136.    
  137.     cout << "AAAAAAAARRRRRGGGGG.........";
  138. }
  139.  
  140. int trasgo1::defender_t(){
  141.     cout << "la defensa y la vida del trasgo aumentó." << endl;
  142.     vida_t = vida_t + 1;
  143.     defensa_t = defensa_t + 1;
  144. }
  145.  
  146. int trasgo1::muerto_t(){
  147.     cout << "el trasgo ha muerto.";
  148. }


PRINCIPAL:
Código C++:
Ver original
  1. int main(){
  2.    
  3.     elfo f;
  4.     trasgo1 tr1;
  5.     espada es;
  6.     mandoble man;
  7.  
  8.     cout << "Comandos: " << endl;
  9.     cout << "atacar" << endl;
  10.     cout << "defender" << endl;
  11.     cout << "abandonar" << endl;
  12.     cout << endl;
  13.  
  14.     for (;;){
  15.  
  16.         cout << "el valor der dec es: " << f.dec << endl;       // para hacer el seguimiento del valor de dec (decision)
  17.  
  18.         cout << "tu turno: ";
  19.         string opc1;
  20.         cin >> opc1;
  21.  
  22.         if (opc1 == "atacar"){
  23.             f.atacar();
  24.             switch(f.dec){            //originalmente estaba con un if (igual que abajo), pero
  25.                 case 1 : {              // lo cambie para probar. (da el mismo error)
  26.                     tr1.vida_t = tr1.vida_t - f.ataque + tr1.defensa_t - es.dano;
  27.                     cout << f.nombre << " hizo " << f.ataque - tr1.defensa_t - es.dano << " puntos de daño con la espada." << endl;
  28.                     cout << endl;
  29.                 }
  30.                 case 2 : {
  31.                     tr1.vida_t = tr1.vida_t - f.ataque + tr1.defensa_t - man.danoo;
  32.                     cout << f.nombre << " hizo " << f.ataque - tr1.defensa_t - man.danoo << " puntos de daño con el mandoble." << endl;
  33.                     cout << endl;
  34.                 }
  35.             }
  36.  
  37.         }
  38.  
  39.         if (tr1.vida_t <= 0){
  40.             tr1.muerto_t();
  41.             break;
  42.         }
  43.         cout << endl;
  44.         cout << "el valor der dec es: " << f.dec << endl;
  45.         cout << endl;
  46.  
  47.         if (opc1 == "defender"){
  48.             f.defender();
  49.             if (f.dec = 1){
  50.             cout << "la defensa y la vida de " << f.nombre << "aumentó." << endl;
  51.             f.vida = f.vida + 1;
  52.             f.defensa = f.defensa + 2 + es.def;
  53.             cout << "vida: " << f.vida << "   defensa: " << f.defensa << endl;
  54.             }
  55.             if (f.dec = 2){
  56.             cout << "la defensa y la vida de " << f.nombre << "aumentó." << endl;
  57.             f.vida = f.vida + 1;
  58.             f.defensa = f.defensa + 2 + man.deff;
  59.             cout << "vida: " << f.vida << "   defensa: " << f.defensa << endl;
  60.             }
  61.         }
  62.  
  63.         if (opc1 == "abandonar"){
  64.             f.abandonar();
  65.             return 0;
  66.         }
  67.  
  68.         //reseteo de estadisticas del trasgo.     //al final del turno reseteo las estadisticas
  69.        
  70.         tr1.ataque_t = 4;
  71.         tr1.defensa_t = 2;
  72.  
  73.  
  74.         cout << endl;
  75.         cout << "turno del trasgo..." << endl;
  76.  
  77.         cout << endl;
  78.         cout << "el valor der dec es: " << f.dec << endl;
  79.         cout << endl;
  80.  
  81.         // GENERADOR DE NUMERO ALEATORIO PARA LAS DECISIONES DE LOS TRASGOS########
  82.         int opc2 = 1 + rand() % 2;
  83.  
  84.         if (opc2 = 1){
  85.             tr1.atacar_t();
  86.             if (f.dec = 1){
  87.             f.vida = f.vida - tr1.ataque_t + f.defensa + es.def;
  88.             cout << "el trasgo hizo " << tr1.ataque_t - f.defensa + es.def << "puntos de daño.";
  89.             cout << endl;
  90.             }
  91.             if (f.dec = 2){
  92.             f.vida = f.vida - tr1.ataque_t + f.defensa + man.deff;
  93.             cout << "el trasgo hizo " << tr1.ataque_t - f.defensa + man.deff << "puntos de daño.";
  94.             cout << endl;
  95.             }
  96.         }
  97.  
  98.         if (f.vida <= 0){
  99.             f.muerto();
  100.             return 0;
  101.         }
  102.  
  103.         if (opc2 = 2){
  104.             tr1.defender_t();
  105.  
  106.         }
  107.  
  108.         // reseteo de estadisticas del elfo.  depende que arma lleve se resetean unas u otras
  109.         if (f.dec = 1){
  110.             f.defensa = 2 + es.def;
  111.             f.ataque = 5 + es.dano;
  112.         }
  113.         if (f.dec = 2){
  114.             f.defensa = 2 + man.deff;
  115.             f.ataque = 5 + man.danoo;
  116.         }
  117.         cout << "FIN TURNO." << endl;
  118.         cout << endl;
  119.         cout << "el valor der dec es: " << f.dec << endl;
  120.         cout << endl;
  121.  
  122.     } //FIN 1º BUCLE FOR
  123.    
  124. }

Última edición por Munire; 14/07/2010 a las 07:04