Io ti consiglio di usare
liste concatenate
Sarebbe giusto (anche divertente) con la stessa tecnica gestire anche i
giocatori.
typedef struct card
{
int order; // key order
char type;
int seme;
int value; // 1...10..o 11 etc..
struct card *prev;
struct card *next;
}card;
typedef struct player
{
int isHuman;
char name[32];
int pescare; // Qui mettere quello che ti serve di sapere
int scartare; // sulla situazione del giocatore
int numcards; // Numero carte in mano
struct card *HandFirst; // Carte in mano
struct card *HandLast; // ""
struct card *DownFisrt; // Carte scartate da giocatore
struct card *DownLast; // ""
struct player *prev;
struct player *next;
}player;
e poi esternamente gestire il
mazzo nuovo e il
mazzo delle scartate:
int NumCards=108;
card *FirstCard=NULL;
card *LastCard =NULL;
int NumTrashCards=0;
card *FirstTrashCard=NULL;
card *LastTrashCard =NULL;
ovvio ... anche i
giocatori:
int NumPlayers=0;
player *FirstPlayer=NULL;
player *LastPlayer =NULL;
Per l'ordinamento dellle carte in mano una
bubblesort è + che sufficiente... poi aggiungerei una funzione di
move per spostare la carta agendo sui link (differente dalla swap che userai nel sort). - anche per le carte di scarto modificare solo i
link delle liste -
Saluti,
Max