Wyłączający się program.

Odpowiedz Nowy wątek
2011-08-07 17:00
0

Tak więc, od jakiegoś czasu staram się napisać prymitywną gre karcianą. Problem jest taki, że gdy kompiluje i uruchamiam projekt. Wtedy okienko pojawia się dosłownie ćwierć sekundy, po czym znika. Zabiegi w postaci dopisywania "System("PAUSE"); nie dają chcianych rezultatów. Macie może jakieś pomysły? Poniżej zamieszczam kod programu:

 #include <iostream>
#include <string>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
 
class card
{
      public:
      string name;
      bool special; 
      int ID;
      int value;
      bool nie_wybrana;    
 
};
 
class player
{
      public:
      bool winner; 
 
};
 
void losuj_karty(int ile, card zrodlo[], card przeznaczenie[]);
 
int main()
{
 
    card talia[52]=
    {
        {"2-czerwo[M]",1,0,2,true},    
        {"2-dzwonek[M]",1,1,2,true},    
        {"2-pik[M]",1,2,2,true},    
        {"2-trefl[M]",1,3,2,true},    
        {"3-czerwo",0,4,3,true},    
        {"3-dzwonek",0,5,3,true},    
        {"3-pik",0,6,3,true},    
        {"3-trefl",0,7,3,true},    
        {"4-czerwo",0,8,4,true},   
        {"4-dzwonek",0,9,4,true},   
        {"4-pik",0,10,3,true},   
        {"4-trefl",0,11,4,true},   
        {"5-czerwo",0,12,5,true},
        {"5-dzwonek",0,13,5,true},     
        {"5-pik",0,14,5,true},   
        {"5-trefl",0,15,5,true},    
        {"6-czerwo",0,16,6,true},    
        {"6-dzwonek",0,17,6,true},   
        {"6-pik",0,18,6,true},   
        {"6-trefl",0,19,6,true},    
        {"7-czerwo[M]",1,20,7,true},    
        {"7-dzwonek[M]",1,21,7,true},    
        {"7-pik[M]",1,22,7,true},
        {"7-trefl[M]",1,23,7,true},    
        {"8-czerwo",0,25,8,true},
        {"8-dzwonek",0,26,8,true},   
        {"8-pik",0,27,8,true},  
        {"8-trefl",0,28,8,true},   
        {"9-czerwo",0,29,9,true},   
        {"9-dzwonek",0,30,9,true},
        {"9-pik",0,31,9,true},  
        {"9-trefl",0,32,9,true}, 
        {"10-czerwo[M]",1,33,10,true},    
        {"10-dzwonek[M]",1,34,10,true},    
        {"10-pik[M]",1,35,10,true},    
        {"10-trefl[M]",36,0,10,true},    
        {"Walet-czerwo",0,37,11,true},  
        {"Walet-dzwonek",0,38,11,true},   
        {"Walet-pik",0,39,11,true},    
        {"Walet-trefl",0,40,11,true},
        {"Dama-czerwo",0,41,12,true},
        {"Dama-dzwonek",0,42,12,true},
        {"Dama-pik",0,43,12,true},
        {"Dama-trefl",0,44,12,true},   
        {"Krol-czerwo",0,45,13,true},
        {"Krol-dzwonek",0,46,13,true},
        {"Krol-pik",0,47,13,true},
        {"Krol-trefl",0,48,13,true},  
        {"As-czerwo",0,49,14,true},
        {"As-dzwonek",0,50,14,true}, 
        {"As-pik",0,51,14,true},
        {"As-trefl",0,52,14,true}  
    };
 
    card gracz_hand[4];
    card gracz_wieza_gora[2];
    card gracz_wieza_dol[2];
 
    card cpu_hand[4];
    card cpu_wieza_gora[2];
    card cpu_wieza_dol[2];
 
    losuj_karty(2, talia, cpu_wieza_gora);
    losuj_karty(2, talia, gracz_wieza_gora);
    losuj_karty(2, talia, cpu_wieza_gora);
    losuj_karty(2, talia, gracz_wieza_gora);
 
    losuj_karty(4, talia, gracz_hand);
 
    cout << "GRACZ:";
    cout << "Wylosowane karty, to:\n";
    for(int a=0; a<=4; a++)
    {
            cout << a+1 << ". " << gracz_hand[a].name << endl;
    } 
 
    losuj_karty(4, talia, cpu_hand);
 
    cout << "CPU:";
    cout << "Wylosowane karty, to:\n";
    for(int a=0; a<=4; a++)
    {
            cout << a+1 << ". " << cpu_hand[a].name << endl;
    }
 
    system("PAUSE");
    return 0;
}
 
void losuj_karty(int ile, card zrodlo[], card przeznaczenie[])
{
     int losowa=0;
     srand(time(0));
      for(int i=0; i<=ile; i++)
       {
               do
               {
                    losowa=rand() % 52;
 
                    if(zrodlo[losowa].nie_wybrana==true)
                    {
 
                                                przeznaczenie[i]=zrodlo[losowa];
 
                    }
 
               }
               while(zrodlo[losowa].nie_wybrana==false);
               zrodlo[losowa].nie_wybrana=false;
 
       }
 
}
 

Pozostało 580 znaków

2011-08-07 17:12
0

http://lmgtfy.com/?q=znikaj%C4%85ce+okno+konsoli+c%2B%2B
Damn...

Btw. Rób większe odstępy bo tak kod jest nieczytelny.


Idiots, idiots everywhere.
edytowany 2x, ostatnio: allocer, 2011-08-07 17:14

Pozostało 580 znaków

2011-08-07 17:37
0

Ja bym polecał nauczyć się co to debugger i jak debuggować programy.


Nie pisz do mnie PM o czymś co nie dotyczy bezpośrednio mnie. | Nie rozmawiaj ze mną jeśli brak Ci kultury (wystarczy że mi brakuje) | Nie jestem zły, jestem po prostu zły.

Pozostało 580 znaków

2011-08-07 17:39
odp
0

program się nie wyłącza tylko najnormalniej w świecie wywala. Spójrz na ciało funkcji main (jak je już odnajdziesz w tym bałaganie), i spójrz na pewną tablicę po której iterujesz potem w pętli. Podpowiem, że wychodzi poza jej zakres i dodatkowo podpowiem, że jeśli tablice w c++ indeksuje się od 0 (a tak się indeksuje) to ostatni element tablicy n - elementowej, znajduje się pod indeksem "n-1", czyli podstawiając do wzoru za n = 4 (tak jak to jest w twoim programie), ostatni element znajduje się pod indeksem 3.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0