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