Gli errori erano in gran parte include mancanti; se fai un file A.h in cui dichiari una classe A che implementi in un file A.cpp, in A.cpp devi includere A.h. Inoltre devi mettere tutti gli altri include necessari, ad esempio in giocatore.h devi includere mazzo.h. Inoltre con c++ devi includere gli header di libreria come stdlib.h, time.h, ecc ecc. Io li ho inclusi usando la forma c++, ovvero cstdlib invece di stdlib.h e ctime invece di time.h. Infine se usi cout per stampare devi dichiare che usi il namespace std e devi includere iostream. Ecco il codice compilante,
codice:
//main.cpp
#include "mazzo.h"
#include "giocatore.h"
#include <cstdlib>
int main()
{
mazzo carte;
giocatore player1;
//arbitro giudice;
carte.setMescola();
player1.setPesca(carte);
//player1.setCambia();
player1.getCarte(carte);
//giudice.controlla();
system("PAUSE");
return 0;
}
codice:
//giocatore.h
#ifndef GIOCATORE
#define GIOCATORE
#include "mazzo.h"
class giocatore {
public:
void setPesca(const mazzo &);
void setCambia();
void getCarte(const mazzo &);
private:
int cartemano[5][2];
};
#endif
codice:
#ifndef MAZZO
#define MAZZO
//mazzo.h
class mazzo {
friend class giocatore;
public:
void setMescola(); //Mescola il mazzo
mazzo();
private:
const char *seme[4];
const char *numero[7];
int deck[4][7];
void setAzzeraMazzo(); //Azzera il mazzo
};
#endif
codice:
//giocatore.cpp
#include "mazzo.h"
#include "giocatore.h"
#include <iostream>
using namespace std;
void giocatore::setPesca(const mazzo &carte) {
int row, column, card;
for (card = 1; card <= 5; card++ )
for (row = 0; row <= 3; row++ )
for (column = 0; column <= 6; column++ )
if ( carte.deck[ row ][ column ] == card ) {
cartemano[card-1][0] = row;
cartemano[card-1][1] = column;
}
}
void giocatore::getCarte(const mazzo &carte) {
int i;
cout << "Le carte che hai in mano sono:" << endl;
for (i = 0; i < 5; i++)
cout << carte.seme[cartemano[i][0]] << " " << carte.numero[cartemano[i][1]] << endl;
}
codice:
#include "mazzo.h"
#include <ctime>
#include <cstdlib>
//mazzo.cpp
mazzo::mazzo() {
seme[0] = "Cuori";
seme[1] = "Mattoni";
seme[2] = "Picche";
seme[3] = "Fiori";
numero[0] = "Asso";
numero[1] = "Re";
numero[2] = "Donna";
numero[3] = "Jack";
numero[4] = "Dieci";
numero[5] = "Nove";
numero[6] = "Otto";
setAzzeraMazzo();
}
void mazzo::setMescola()
{
int row, column;
setAzzeraMazzo();
srand( time(0) );
for (int card = 1; card <= 28; card++) {
do {
row = rand() % 4;
column = rand() % 13;
}
while( deck[ row ][ column ] != 0 );
deck[ row ][ column ] = card;
}
}
void mazzo::setAzzeraMazzo() {
int row, column;
for (row = 0; row <= 3; row++)
for (column = 0; column <= 6; column++)
deck[ row ][ column ] = 0;
}