Trifoglio Irlandese - Solitario in C

di il
2 risposte

Trifoglio Irlandese - Solitario in C

Salve a tutti, sono nuovo sul forum, vi scrivo per chiedervi consigli e/o metodi per la realizzazione di un solitario (Trifoglio irlandese) in C.
Questo è un progetto universitario e, non avendo molta esperienza sul linguaggio c chiedo consiglio a voi.
Ho scritto il codice che vi allegherò (sono in windows sul compilatore DevC++) in cui sono contenute anche le regole del gioco (che vengono visualizzate all'esecuzione del programma), vorrei sapere se ciò che ho fatto è corretto e se esistono modi per semplificare il codice che ho scritto.
Inoltre vorrei chiedervi un aiuto su come poter far visualizzare il tavolo delle carte e come impostare gli slot dove andranno collocate le carte in ordine. Per qualsiasi dubbio scrivetemi, cercherò di chiarire il prima possibile. Aggiungo che mancano alcuni pezzi del solitario perchè non ho idea di come programmarli.
Spero in un vostro aiuto.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MAX 9
#define MAX_CARDS 52
#define MAX_RANKS 13
#define MAX_SUITS 4
#define COLS 4 //number of columns to display in output

//structure definition
struct card{ 
  char *rank;    
  char suit[MAX];  
};
typedef struct card Card;

//array of pointers to strings for ranks
char *ranks[MAX_RANKS] = {"Asso", "Due", "Tre", "Quattro", "Cinque", "Sei", "Sette", 
			  "Otto", "Nove", "Dieci", "Jack", "Queen", "King"};

//two-dimensional array of strings for suits
char suits[MAX_SUITS][MAX] = {"Fiori", "Quadri", "Cuori", "Picche"};

// protos
void initialize(Card []);
void shuffle(Card []);
void display(const Card[]);
void intro ();
void uscita (char* nome);
void sistemaDeck(Card[]);


// functions 	
void intro(){

	printf("\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ  TRIFOGLIO IRLANDESE ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»	\n");	
	printf("															\n");
	printf("	Prodotto da:											\n");
	printf("			Gabriele Micol									\n");
	printf("			Mogavero Alessia								\n");
	printf("			Sapienza Andrea									\n");
	printf("															\n");										
	printf("\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ	\n");	
	
	system("pause");
	system("cls");
	
	printf("\n\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ  TRIFOGLIO IRLANDESE ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n");
	printf("				REGOLE DEL GIOCO																		\n");
	printf("		4 pile di base in basso a destra:																\n");
	printf("			- costruire sequenze di carte dall'asso al re												\n");
	printf("																										\n");
	printf("		18 pile di gioco:																				\n");
	printf("			- in ogni pila non possono trovarsi piu' di tre carte										\n");
	printf("			- La carta superiore puo' essere spostata nella base o nelle pile di gioco					\n");			
	printf("			- le pile vuote non vengono riempite														\n");
	printf("						BUON DIVERTIMENTO!!!															\n");
	printf("\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
	
	system("pause");
	

}


/*
  initialize the deck of cards to string values
  deck: an array of structure cards */

void initialize(Card deck[]){
  int i = 0;
  for(i=0;i<MAX_CARDS;i++){
    deck[i].rank = ranks[i%MAX_RANKS];
    strncpy(deck[i].suit, suits[i/MAX_RANKS], MAX);
  }
}

/*
  use the pseudo-random number generator to shuffle the cards
  deck: an array of structure cards 
*/
void shuffle(Card deck[]){
  int swapper = 0;	 //index of card to be swapped
  int i = 0; //counter
  Card temp = {"", ""}; //temp holding place for swap
  srand(time(NULL)); //seed the random numbers with current time
  for(i=0;i<MAX_CARDS;i++){
    //generate a pseudo-random number from 0 to 51
    swapper = rand() % MAX_CARDS; 
    //swap current card with da swapper
    temp = deck[i];
    deck[i] = deck[swapper];
    deck[swapper] = temp;
  }
}

/*
  display the deck of cards
  deck: an array of structure cards */

void display(const Card deck[]){
  int i = 0;
  for(i=0;i<MAX_CARDS;i++){
    printf("%5s of %-12s", deck[i].rank, deck[i].suit);
    //put in a newline every %x loops
    if(0==((i+1)%COLS)){
      printf("\n");
    }
  }
}

void sistemaDeck(Card deck[]){
  initialize(deck);
  printf("\nshuffling deck ... \n");
  shuffle(deck);
}




void uscita(char* nome)
{
	
	
	system("cls");
	printf("\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ  TRIFOGLIO IRLANDESE ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»	\n");	
	printf("															\n");
	printf("	     GRAZIE %s PER AVER GIOCATO	!!!!				\n", nome);
	printf("															\n");
	printf("															\n");
	printf("															\n");
	printf("															\n");										
	printf("\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ	\n");
}




// main function
int main(){ 
 
  char nome [50];
 
  intro();
  system ("cls");
  printf("Inserisci il tuo nome: ");
  scanf("%s", nome);
 	
  
  //declare an array of 52 cards
  Card deck[MAX_CARDS] = {"",""};
  
  //Dopo questa funziona avrai il deck mischiato
  sistemaDeck(deck);
  //Vai avanti da qui con l'array deck
 
  uscita(nome);
  return 0;
}






2 Risposte

  • Re: Trifoglio Irlandese - Solitario in C

    Non sono un esperto i c, ma i che senso sapete dirmi se funziona? se te lo compila e parte vuol dire che funyiona senno no
  • Re: Trifoglio Irlandese - Solitario in C

    santa03 ha scritto:


    Non sono un esperto i c, ma i che senso sapete dirmi se funziona? se te lo compila e parte vuol dire che funyiona senno no
    Non ho scritto sapete dirmi se funziona, ho chiesto come continuare dato che mancano alcuni pezzi e non ho la minima idea di come realizzarli.
    Come la distribuzione dei gruppetti di 3 carte nel tavolo, o come creare uno slot per posizionare le carte dello stesso seme in ordine crescente.
    Chiedo aiuto a voi.
Devi accedere o registrarti per scrivere nel forum
2 risposte