Gioco dell'Asino

Riuzaki
raga ho scritto questo programma che dovrebbe simulare il famoso gioco dell'asino, ma il compilatore in questione (Dev - c++) mi da il seguente codice di errore :

Permission denied
  ld returned 1 exit status 


non riesco proprio a capire da cosa dipenda!!! -.-'

il codice è il seguente :

#include <iostream>
#include <ctime>
#include <conio.h>

using namespace std;

const char *semi[]		= {"Ori", "Coppe", "Spade", "Bastoni"};
const char *numeri[]	= {"Asso", "Due", "Tre", "Quattro", "Cinque", "Sei", "Sette", "Donna", "Cavallo", "Re"};

const int Max = 40;

bool mani_vuote(int player[], int dim);

void mischia_mazzo(int Mazzo[]);

void crea_mazzo(int Mazzo[]);

void dai_carte(int Player_Uno[], int Player_Due[]);

int trova_ciuccio(int Mazzo[]);

int dai_carte(int Player[], int Mazzo[], int & cont);

int elimina_coppie(int player[], int dim, bool & trovato);

int gioca(int giocatore1[], int giocatore2[], bool & Mani_vuote1, bool & Mani_vuote2, int dim1, int dim2);

void stampa(int giocatore[], int dim);

int pesca(int giocatore1[], int giocatore2[], int dim1, int dim2);

int main()
{
    srand(time(NULL));
    
    bool Mani_vuote1 = false, Mani_vuote2 = false;
    
    int Mazzo[Max] = {0};
    
    int cont = 0, cont1 = 0;
    
    crea_mazzo(Mazzo);
    
    mischia_mazzo(Mazzo);

    int Player_Uno[20] = {0}, Player_Due[19] = {0}, Ciuccio;
    
    Ciuccio = trova_ciuccio(Mazzo);
    
    cout << "togliamo dal gioco " << numeri[Ciuccio%10] << " di " << semi[Ciuccio/10] << endl;
    
    cout << "premi invio per cominciare a giocare:\n";
    
    getch();
    
    for(int i = 0; i < Max; i++)
        if(Mazzo[i] == Ciuccio)
           Mazzo[i] = -1;
    
    for(int i = 0; i < Max / 2; i++)
    {
       dai_carte(Player_Uno, Mazzo, cont);
       if(cont1 < 19)
       dai_carte(Player_Due, Mazzo, cont1);
    }
    bool cerca;
    elimina_coppie(Player_Uno, 20, cerca);
    
    elimina_coppie(Player_Due, 19, cerca);
    
    while(Mani_vuote1 != true || Mani_vuote2 != true)
    {
       gioca(Player_Uno, Player_Due, Mani_vuote1, Mani_vuote2, 20, 19);
    }
    
    if(Mani_vuote1)
       cout << "\nha vinto il giocatore uno!\n";
    else
       cout << "\nha vinto il giocatore due\n";
    
   system("pause");
   return 0;
}

void crea_mazzo(int Mazzo[])
{
     for(int i = 0; i < Max; i++)
         Mazzo[i] = i;
     
}

void mischia_mazzo(int Mazzo[])
{
     srand(time(NULL));
     int temp, x, y;
     
     for(int i = 0; i < Max / 2; i++)
     {
          x = rand()%20;
          y = rand()%20 + 20;
          
          temp = Mazzo[x];
          Mazzo[x] = Mazzo[y];
          Mazzo[y] = temp;   
     }
}

int trova_ciuccio(int Mazzo[])
{
    for(int i = 0; i < Max; i++)
    {
          if(Mazzo[i]%10 == 8)
             return Mazzo[i];
    }
}

int dai_carte(int Player[], int Mazzo[], int & cont)
{
     for(int i = 0; i < Max; i++)
     {
             if(Mazzo[i] != -1)
             {
                Player[cont] = Mazzo[i];
                Mazzo[i] = -1;
                cont++;
                return 0;
             }
     }
}

int elimina_coppie(int player[], int dim, bool & trovato)
{
     for(int i = 0; i < dim; i++)
     {
           if(player[i] != -1)  
           {
             for(int j = 0; j < dim; j++)
               {
                  if(player[i]%10 == player[j]%10 && i != j)   
                    {
                        player[i] = -1;
                        player[j] = -1;
                        trovato = true;
                    }
               }       
           }
     }
     return 0;
}



int gioca(int giocatore1[], int giocatore2[], bool & Mani_vuote1, bool & Mani_vuote2, int dim1, int dim2)
{
    bool trovato = false;
    
    system("CLS");
    
    cout << "giocatore1 ha le seguenti carte in mano:\n";
    
    stampa(giocatore1, dim1);
    
    cout << "\ngiocatore1 pesca a caso nella mano di giocatore2:\n";
    
    pesca(giocatore1, giocatore2, dim1, dim2);
    
    Mani_vuote1 = mani_vuote(giocatore1, dim1);
    
    cout << "\nclick to continue...\n";
    getch();
    system("CLS");
    
    cout << "\nora giocatore1 uno ha le seguenti carte:\n";
    
    stampa(giocatore1, dim1);
    cout << "\nclick to continue...\n";
    getch();
    system("CLS");
    
    cout << "\ngiocatore2 ha le seguenti carte in mano:\n";
    
    stampa(giocatore2, dim1);
    
    cout << "\ngiocatore2 pesca a caso nella mano di giocatore1:\n";
    
    pesca(giocatore2, giocatore1, dim2, dim1);
    
    Mani_vuote2 = mani_vuote(giocatore2, dim2);
    
    cout << "\nclick to continue...\n";
    getch();
    system("CLS");
    
    cout << "\nora giocatore2 ha le seguenti carte:\n";
    
    stampa(giocatore2, dim2);
    
    cout << "\nclick to continue...\n";
    getch();
    return 0;
}

void stampa(int giocatore[], int dim)
{
     int cont = 0;
     
     for(int i = 0; i < dim; i++)
     {
             if(giocatore[i] != -1)
             {
                cout << cont << ") " << numeri[giocatore[i]%10] << " di " << semi[giocatore[i]/10] << endl;
                cont++;
             }
     }
}   

int pesca(int giocatore1[], int giocatore2[], int dim1, int dim2)
{    
     bool trovato = false;
     
     int x;
     
     do{
          x = rand()%dim2;
          }while(giocatore2[x] == -1);
     
     for(int i = 0; i < dim1; i++)
         if(giocatore1[i] != -1)
            giocatore1[i] = giocatore2[x];
     
     giocatore2[x] = -1;
     
     elimina_coppie(giocatore1, dim1, trovato);
     
     if(trovato)
        cout << "\ncoppia trovata...\n";
     else
        cout << "\ncoppia non trovata...\n";
     return 0;
}

bool mani_vuote(int player[], int dim)
{
     for(int i = 0; i < dim; i++)
     {
             if(player[i] != -1)
                return false;
     }
     return true;
}


Risposte
apatriarca
Il problema non sembra motivato dal tuo codice, ma dal compilatore. Sembra che il linker non abbia i permessi per fare qualcosa. Su che sistema operativo stai lavorando? Secondo me è meglio se cambi il tuo IDE, prova con CodeBlocks oppure Visual C++ Express. DevC++ è pieno di bug e non più aggiornato o supportato.

Riuzaki
avevi ragione passando sul visual c++ express ora funziona ...XD maledetto DEV -.-'

96gelia
anche con me è capitato
"apatriarca":
Il problema non sembra motivato dal tuo codice, ma dal compilatore. Sembra che il linker non abbia i permessi per fare qualcosa. Su che sistema operativo stai lavorando? Secondo me è meglio se cambi il tuo IDE, prova con CodeBlocks oppure Visual C++ Express. DevC++ è pieno di bug e non più aggiornato o supportato.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.