Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<time.h>
- #include "getnum.c"
- #define ORO 1
- #define BASTO 2
- #define COPA 3
- #define ESPADA 4
- #define CANTCARTAS 52
- typedef struct
- {
- int palo;
- int figura;
- }tcarta;
- typedef struct
- {
- tcarta cartas[CANTCARTAS];
- int cantCartas;
- }tmazo;
- typedef struct
- {
- int puntosjug;
- int puntospc;
- }tpunto;
- void rellenar(tmazo* mazo);
- void desordenar(tmazo* mazo);
- void generaaleatorio(tmazo *cartas,tcarta jugador[],tcarta compu[]);
- void compara(tcarta jugador[],tcarta compu[],tpunto* tabla);
- void asignapuntos(tpunto* tabla,int figjug,int figpc,int manojug,int manopc);
- int main()
- {
- srand((int)time(NULL));
- tcarta jugador[5],compu[5];
- tmazo cartas;
- tpunto tabla;
- tabla.puntosjug=tabla.puntospc=0;
- int n;
- rellenar(&cartas);
- desordenar(&cartas);
- do
- {
- generaaleatorio(&cartas,jugador,compu);
- compara(jugador,compu,&tabla);
- printf("\n%d puntos jugador\n %d puntos maquina",tabla.puntosjug,tabla.puntospc);
- n=getint(" \n-1 para dejar de jugar\n");
- }
- while(n!=-1);
- return 0;
- }
- void rellenar(tmazo* mazo)
- {
- int i,j;
- int k =1;
- for(i=1;i<=13;i++)
- {
- for(j=1;j<5;j++)
- {
- ((mazo->cartas)[k]).figura=i;
- ((mazo->cartas)[k]).palo=j;
- k++;
- }
- }
- mazo->cantCartas = CANTCARTAS;
- }
- void desordenar(tmazo* mazo)
- {
- int i,aux;
- tcarta temp;
- for(i=0;i<52;i++)
- {
- aux=rand()%(52);
- temp=((mazo->cartas)[i]);
- ((mazo->cartas)[i])=((mazo->cartas)[aux]);
- ((mazo->cartas)[aux])=temp;
- }
- }
- void generaaleatorio(tmazo* mazo,tcarta jugador[],tcarta compu[])
- {
- int i=0,j;
- if (mazo->cantCartas>=10){
- for( i=0,j=CANTCARTAS-mazo->cantCartas;i<5;i++,j++)
- {
- jugador[i]=(mazo->cartas)[j];
- compu[i]=(mazo->cartas)[j+5];
- }
- mazo->cantCartas-=10;
- printf("cartas jug\n");
- for(i=0;i<5;i++)
- printf("%d\t",jugador[i].figura);
- printf("\ncartas pc\n");
- for(i=0;i<5;i++)
- printf("%d\t",compu[i].figura);
- }
- }
- void compara(tcarta jugador[],tcarta compu[],tpunto* tabla)
- {
- int manopc=1,manojug=1,ctrpc,ctrjug;
- int figurapc=0,figurajug=0;
- int auxpc[5]={0},auxjug[5]={0};
- int i,j;
- for(i=0;i<4;i++)
- {
- for(j=i+1;j<5;j++)
- {
- if((jugador[i].figura==jugador[j].figura)&&(auxjug[i]==0 ||auxjug[j]==0))
- {
- auxjug[i]=auxjug[j]=1;
- ctrjug++;
- }
- if((compu[i].figura==compu[j].figura)&&(auxpc[i]==0||auxpc[j]==0))
- {
- auxpc[i]=auxpc[j]=1;
- ctrpc++;
- }
- }
- if(ctrpc>=manopc)
- {
- manopc=ctrpc;
- figurapc=compu[j].figura;
- }
- if(ctrjug>=manojug)
- {
- manojug=ctrjug;
- figurajug=jugador[j].figura;
- }
- ctrjug=ctrpc=1;
- }
- if(manojug>1 || manopc>1)
- asignapuntos(tabla,figurajug,figurapc,manojug,manopc);
- }
- void asignapuntos(tpunto* tabla,int figjug,int figpc,int manojug,int manopc)
- {
- printf("%d mano jug \n %d mano pc",manojug,manopc);
- if(manojug>manopc)
- {
- tabla->puntosjug+=1;
- }
- else if(manojug==manopc)
- {
- if(figjug>figpc)
- {
- tabla->puntosjug+=1;
- }
- else
- {
- tabla->puntospc+=1;
- }
- }
- if(manopc>manojug)
- {
- tabla->puntospc+=1;
- }
- }
Add Comment
Please, Sign In to add comment