Smazzata di carte - Alessandro Barazzuol

Smazzata di carte

/*

*****SMAZZATA A 13 CARTE******
@Copyright  ALESSANDRO BARAZZUOL
                                      
        @@@@@@@@@@,                  *((/         
       *@@@@@@@@@@@                 ((((((        
        @@@@@@@@@@#               ((((((((((      
         @@@@@@@@               /(((((((((((((    
   @&@@@@@@@@@@@@@@@@@@*      ,((((((((((((((((/  
 /@@@@@@@@@@@@@@@@@@@@@@@      ((((((((((((((((   
 .@@@@@@@@@@@@@@@@@@@@@@@        ((((((((((((     
   &@@@@@@*%@@& @@@@@@@(          ,((((((((*      
           @@@@&                    ((((((        
          @@@@@@@                     ((          
                                                  
                                                  
                                                  
 .((((((((((   ((((((((((            (@@%         
*(((((((((((((((((((((((((         ,@@@@@@(       
 (((((((((((((((((((((((((       &@@@@@@@@@@@     
 .(((((((((((((((((((((((      @@@@@@@@@@@@@@@&.  
   /(((((((((((((((((((,     @@@@@@@@@@@@@@@@@@@@ 
     /(((((((((((((((,      @@@@@@@@@@@@@@@@@@@@@@
       /((((((((((/        (@@@@@@@@@@@@@@@@@@@@@@
         /(((((((.          #@@@@@@@@@@@@@@@@@@@@ 
           (((((                 .    @@*         
            ((                       @@@@.        

     

Un mazzo di 52 carte si può rappresentare facendo corrispondere
a ogni carta un numero. Scrivi un programma che, in base a un numero
inserito in input, genera una smazzata per i quattro giocatori
facendo in modo che, inserendo lo stesso numero,venga prodotta la stessa
smazzata.Visualizza per ciscun giocatore le carte decodificandole, cioè
visualizzando per ciascuna di esse valore e seme
*/

#include <iostream>
#include<ctime>
#include<cstring>
#include<cstdlib>
#define r 52
#define c 4
#define nc 13 //carte x giocatore
using namespace std;
void crea_mazzo(char **);
void dai_le_carte(char **);
void mescola_mazzo(char **);
void vedi_mazzo(char **);


/*costanti*/
const char *semi[]={"F","P","Q","C"};
const char *giocatori[]={"I","II","III","IV"};
const char  *numeri[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
const char n =52;

/*funzione che crea il mazzo ordinato, come nuovo*/
void crea_mazzo(char **mazzo)
{
  char *tmp=new char[c];
  int k=0;
  for(int j=0;j<c;j++)
  {
	for(int i=0;i<nc;i++)
	{
	strcat(tmp,numeri[i]);
	strcat(tmp,semi[j]);
	strcpy(mazzo[k++],tmp);
	strcpy(tmp,"");
	}	

  }

}

void dai_le_carte(char **mazzo)
{

 /*numero del giocatore: I,II ecc*/	
 int ng=0;
 cout<<"Giocatore "<<giocatori[ng++]<<" :";
 for(int i=0;i<n;i++)
 {
   cout<<mazzo[i]<<" ";

   if(i!=0 && i!=51 && (i==12 || i==25 || i==38 || i==51))
  {
   cout<<endl;
   cout<<"Giocatore "<<giocatori[ng++]<<" :";	
  }


 } 

}

/*mescola il mazzo a caso*/
void mescola_mazzo(char **mazzo)
{
	
	/*numero di mescolate*/
    int k=40;
    
    while(k>0)
    {
	    int i=rand()%r;
	    int j=rand()%r;
	    /*array di appoggio*/
    	/*char **tmp;
    	tmp=new char*[n];
        for(int i=0;i<n;i++)
        tmp[i]=new char[4];*/
        char *tmp=new char[r];
    	
    	strcpy(tmp,mazzo[i]);
    	strcpy(mazzo[i],mazzo[j]);
    	strcpy(mazzo[j],tmp);
    	k--;
	}
	
}

/*da le carte ai giocatori dal mazzo mescolato*/
void vedi_mazzo(char **mazzo)
{
 for(int i=0;i<n;i++)
 {
   cout<<mazzo[i]<<" ";

   if(i!=0 && (i==12 || i==25 || i==38 || i==51))
   cout<<endl;

 } 

}

int main(){
int num;
cout<<"Immetti un numero\n";
cin>>num;

srand(num);


char **mazzo;
mazzo=new char*[n];

for(int i=0;i<n;i++)
mazzo[i]=new char[4];

crea_mazzo(mazzo);
vedi_mazzo(mazzo);
mescola_mazzo(mazzo);
dai_le_carte(mazzo);

}
import  java.util.*;//per la classe Random()
public class esmazzo
{

public static void main(String[] arg)
{
smazzata s=new smazzata(Integer.parseInt(arg[0]));
s.mescola_mazzo();
s.smazza();
}



}
/*classe che gestisce le carte*/
class smazzata
{
	/*costanti*/
	final int c=4;
	final int n=52;
	final int nc=13;
	final String semi="FPQC";
    final String[] giocatori={"I","II","III","IV"};
    final String[] numeri ={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    final int seed;
	
	private String[] mazzo;
	
	/*costruttore: inizializza gli attributi e costruisce un mazzo*/
	public smazzata(int nn)
	{
		this.seed=nn;
		
		mazzo=new String[n];
		String tmp="";
        int k=0;
        for(int j=0;j<c;j++)
        {
           for(int i=0;i<nc;i++)
		   {
              tmp=numeri[i];
              tmp+=semi.substring(j,j+1);
              mazzo[k++]=tmp;
              tmp="";
           }  
        }
		
	}
	/*metodo che smazza per 4 giocatori*/
	public void smazza()
	{
		int ng=0;
		System.out.print("Giocatore " + giocatori[ng] +" :");
		for(int i=0;i<n;i++)
        {
          
		  System.out.print(mazzo[i]+" ");
          if(i!=0 && (i==12 || i==25 || i==38 || i==51))
		  {
			  if(ng<3)
			  {
				   ng++;
			  System.out.println();
			  System.out.print("Giocatore " + giocatori[ng] +" :");
			  }
				 
			  
		  }
          
        }
		System.out.println();
	}
	
	
	/*metodo che mescola le carte*/
	public void mescola_mazzo()
    {
  
    int k=40;//numero di mescolate
    
	
    while(k>0)
    {
		
    int i=(new Random(seed+k)).nextInt(n);
    int j=(new Random(seed+2*k)).nextInt(n);
      
      String tmp="";
      
      tmp=mazzo[i];
      mazzo[i]=mazzo[j];
      mazzo[j]=tmp;
      k--;
    }
  
  }
}

Per eseguire compilare la classe e scrivere >java esmazzo 56