Gioco dell'Asino
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 :
non riesco proprio a capire da cosa dipenda!!! -.-'
il codice è il seguente :
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
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.
avevi ragione passando sul visual c++ express ora funziona ...XD maledetto DEV -.-'
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.