es2.c 1/2

[
top][prev][next]
/* Definire una struttura CARTA_DA_GIOCO contenente i campi SEME (un
   carattere) e VALORE (un intero). Scrivere un programma che chieda
   allutente di inserire una carta (valore e seme) e memorizzi i dati
   nella struttura appena definita. Il programma deve controllare che
   i dati inseriti siano corretti (valore compreso fra 1 e 10 e seme
   esistente) e chiederne il reinserimento in caso contrario. La carta
   inserita viene poi disegnata sullo schermo */


#include <stdio.h>

// Definisce una struttura che descrive una carta da gioco
typedef struct{
	char seme;    	// Prima lettera del seme della carta
	int valore;		// Valore della carta
} carta;

void main()
{
	carta c;
	int i = 0;			// Contatore usato per i cicli FOR

	// Chiede l'inserimento del seme....
	do
	{
		printf("Inserisci il seme (s=spade,b=bastoni,c=coppe,d=denari) :");
		scanf("%c%*c",&c.seme);
	}while(c.seme!='b' && c.seme!='s' &&
		   c.seme!='c' && c.seme!='d');

	// Chiede l'inserimento del valore della carta e continua
	// a richiederlo fino a che non si inserisce un valore compreso fra 0 e 10
	do
	{
		printf("Inserisci il valore della carta (1-10) :");
		scanf("%i%*c",&c.valore);
	} while(c.valore > 10 || c.valore < 0);

	// Stampa la carta che e' stata inserita
	// stampa il valore
	if(c.valore==1)
		printf("La carta inserita e' l'asso di ");
	else
		printf("La carta inserita e' il %i di ",c.valore);

	// stampa il seme
	if(c.seme=='b') printf("bastoni");
	if(c.seme=='c') printf("coppe");
	if(c.seme=='s') printf("spade");
	if(c.seme=='d') printf("denari");

	printf("\n");

	// Stampa il disegno della carta
	printf("\n########");
	printf("\n#      #");
	printf("\n#      #");
	if(c.valore < 10)
		printf("\n#  %d%c  #",c.valore,c.seme);
	else
		printf("\n# 10%c  #",c.seme);
	printf("\n#      #");
	printf("\n#      #");
	printf("\n########");

	printf("\n");
}

es3.c 2/2

[
top][prev][next]
/* Definire una struttura MANO che contenga il seme di briscola e le
carte giocate da quattro giocatori. Scrivere un programma che chieda
di inserire allutente tutti i dati necessari e disegni sullo schermo
la carta che vince la mano.  Ricordate che a briscola lordine delle
carte e il seguente: 1 > 3 > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 2 */

#include <stdio.h>

// Definisce una struttura che descrive una carta da gioco
typedef struct{
  char seme;    	// Prima lettera del seme della carta
  int valore;		// Valore della carta
} carta;

// Definisce una struttura che descrive una giocata a briscola
typedef struct{
  char briscola;		// Prima lettera del seme di briscola
  carta giocatore[4];	// Array che contiene le carte giocate dai 4 giocatori
} mano;


void main()
{
  mano m;
  int i = 0;			// Contatore usato per i cicli FOR
  int valore[4];		// Valori usati per calcolare chi vince la mano
  int vincitore = 0;	// Giocatore che vince la mano

  // Chiede all'utente di inserire il seme di briscola
  // continua a richiedere l'inserimento finche' il carattere inserito e'
  // diverso dai quattro permessi (b,s,c,d)
  do
    {
      printf("Inserisci il seme della briscola (s=spade,b=bastoni,c=coppe,d=denari) :");
      scanf("%c%*c",&m.briscola);
    }while(m.briscola!='b' && m.briscola!='s' && m.briscola!='c' &&m.briscola!='d');

  // Ciclo che chiede all'utente di inserire le carte giocate dai 4 giocatori
  for(i=0; i<4; i++)
    {
      // Chiede l'inserimento del seme....
      printf("\nGiocatore n. %i\n",i);
      do
	{
	  printf("Inserisci il seme (s=spade,b=bastoni,c=coppe,d=denari) :");
	  scanf("%c%*c",&m.giocatore[i].seme);
	}while(m.giocatore[i].seme!='b' && m.giocatore[i].seme!='s' &&
	       m.giocatore[i].seme!='c' && m.giocatore[i].seme!='d');

      // Chiede l'inserimento del valore della carta e continua
      // a richiederlo fino a che non si inserisce un valore compreso fra 0 e 10
      do
	{
	  printf("Inserisci il valore della carta (1-10) :");
	  scanf("%i%*c",&m.giocatore[i].valore);

	} while(m.giocatore[i].valore > 10 || m.giocatore[i].valore < 0);
    }

  // A questo punto la struttura e' stata riempita
  // Ora bisogna calcolare la carta che vince la mano

  for(i=0; i<4; i++)
    {
      // Inizializza l'elemento i-esimo dell'arrey valore
      // con il valore della carta giocata dall'i-esimo giocatore
      valore[i] = m.giocatore[i].valore;

      // Se la carta e' un 3 allora imposta il valore a 11
      // (il 3 a briscola e' superiore al 10)
      if(valore[i] == 3) valore[i] = 11;

      // Se la carta e' un 1 allora imposta il valore a 12
      // (l'asso a briscola e' la carta piu alta)
      if(valore[i] == 1) valore[i] = 12;

      // Se il seme della carta giocata e' uguale al seme della briscola
      // somma 100 al valore fin qui calcolato
      if(m.giocatore[i].seme == m.briscola) valore[i] = valore[i] + 100;

      // altrimenti, se il seme della carta giocata e' diverso dal
      // seme della carta giocata dal primo giocatore imposta il valore a 0
      // (se si gioca una carta che non e' briscola e non e' del seme
      // giocato dal primo giocatore non si puo' mai vincere la mano)
      else if(m.giocatore[i].seme != m.giocatore[0].seme) valore[i] = 0;
    }

  // Ora l'array valore contiene un indice di quanto e' "forte" la
  // carta giocata dai 4 giocatori

  // Non resta che confrontare i numeri per vedere chi ha vinto

  // Inizialmente il vincitore e' il primo giocatore
  if(valore[1] > valore[vincitore]) vincitore=1;
  if(valore[2] > valore[vincitore]) vincitore=2;
  if(valore[3] > valore[vincitore]) vincitore=3;

  // Stampa la carta del vincitore
  printf("\n########");
  printf("\n#      #");
  printf("\n#      #");
  if(m.giocatore[vincitore].valore < 10)
    printf("\n#  %d%c  #",m.giocatore[vincitore].valore,m.giocatore[vincitore].seme);
  else
    printf("\n# 10%c  #",m.giocatore[vincitore].seme);
  printf("\n#      #");
  printf("\n#      #");
  printf("\n########");
}

Generated by GNU enscript 1.6.3.