#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
typedef unsigned char uint8;
typedef unsigned int uint;
//Características da carta, valor e naipe
typedef struct lista{
char v, n;
struct lista *prox;
}Carta;
//Características das informaçoes do jogador, suas cartas e seus apontadores para o proximo jogador
typedef struct fila{
Carta *jogador;
struct fila *prox, *ant;
}Grupo;
/******************************************************************************/
//Prototipação das funcões e procedimentos
void Insere_Jogador(Grupo *&jogo);
Grupo *Aloca_Jogador();
void *Insere_Carta(Carta *&in, Carta cart);
Carta *Aloca_Carta(Carta cart);
bool Naipe_Maior(char n1, char n2);
bool Valor_Maior(char v1, char v2);
/*============================================================================*/
/*============================Bloco Principal=================================*/
/*============================================================================*/
void main()
{
FILE *arquivo;
Grupo *lista, *jogo = NULL;
Carta *grimorio = NULL, *semiterio = NULL, cart, pont;
int m, n, r, i, j, aux, rodadas = 0;
if ((arquivo = fopen("entrada.txt", "r")) == NULL) //Abre o arquivo de leitura
{
printf("\nNao foi possivel abrir o aquivo para escrita.\n");
exit(1);
}
fscanf(arquivo, "%d%d%d", &n, &m, &r); //Lê o número de jogadores, baralhos e rodadas
for(int i = 0; i < n; i++) //Entra com as cartas no grimório
{
Insere_Jogador(jogo);
for(int j = 0; j < 9; j++)
{
fscanf(arquivo, "\n%c %c", &cart.v, &cart.n);
Insere_Carta(jogo->jogador, cart);
cout<<"\njogador "<<i<<" carta: "<<cart.v<<" naipe "<<cart.n;
}
Carta *aux = jogo->jogador;
cout<<"Jogador "<<(n+1);
while(aux != NULL)
{
cout<<"\n"<<aux->v<<" "<<aux->n;
}
}
lista = jogo;
while(lista != NULL)
lista = lista->prox;
lista->prox = jogo;
jogo->ant = lista;
aux = 52*m-9*n;
/* for(i = 0; i < aux; i++)
{
fscanf(arquivo, "\n%c %c", &cart.v, &cart.n);
pont = Aloca_Carta(cart);
if(grimorio != NULL)
{
}
else
grimorio = aux;
} */
getchar();
}
/*============================================================================*/
void Insere_Jogador(Grupo *&jogo)
{
Grupo *aux;
aux = Aloca_Jogador();
if(jogo != NULL)
{
aux->prox = jogo;
jogo->ant = aux;
jogo = aux;
}
else
jogo = aux;
}
/*----------------------------------------------------------------------------*/
Grupo *Aloca_Jogador()
{
Grupo *aux;
aux = new Grupo;
aux->jogador = NULL;
aux->prox = aux->ant = NULL;
return aux;
}
/*----------------------------------------------------------------------------*/
void *Insere_Carta(Carta *&in, Carta cart)
{
Carta *aux, *aux2 = in;
aux = Aloca_Carta(cart);
if(in != NULL)
{
if(Naipe_Maior(in->n, cart.n) && Valor_Maior(in->v, cart.v))
{
aux->prox = in;
in = aux;
}
else
{
Carta *aux2 = in;
while(aux2 != NULL)
aux2 = aux2->prox;
if(Naipe_Maior(cart.n, aux2->n) && Valor_Maior(cart.v, aux2->v))
{
aux2->prox = aux;
aux2 = aux;
}
else
{
aux2 = in;
while(Naipe_Maior(cart.n, aux2->n))
aux2 = aux2->prox;
while(Valor_Maior(cart.v, aux2->v))
aux2 = aux2->prox;
aux->prox = aux2->prox;
aux2->prox = aux;
}
}
}
else
in = aux;
}
bool Valor_Maior(char v1, char v2)
{
char* v = &v1;
for(char i = 1; i <= 2; i++, v = &v2)
switch(*v)
{
case 'A':
*v = '1';
break;
case '@':
*v = 58;
break;
case 'J':
*v = 59;
break;
case 'Q':
*v = 60;
break;
case 'K':
*v = 61;
}
return v1 > v2;
}
bool Naipe_Maior(char n1, char n2)
{
if (n2 == 'o' || n1 == 'p')
return false;
if (n2 == 'p' || n1 == 'o')
return true;
return n1 < n2;
}
/*----------------------------------------------------------------------------*/
Carta *Aloca_Carta(Carta cart)
{
Carta *aux;
aux = new Carta;
aux->v = cart.v;
aux->n = cart.n;
aux->prox = NULL;
return aux;
}
/*void Remove(Tlista *&in, Tlista *&fim, int x)
{
if(!Lista_Vazia(in))
{
Tlista *aux = in;
if(in == fim)
{
if(x == aux->info)
{
delete in;
in = fim = NULL;
}
else
cout<<"\nElemento naum encontrado!!!";
}
else
{
if(aux->info == x)
{
in = in->prox;
in->ant = NULL;
delete aux;
}
else
{
if(fim->info == x)
{
aux = fim->ant;
delete fim;
fim = aux;
fim->prox = NULL;
}
else
{
while(aux->info < x && aux != fim)
aux = aux->prox;
if(aux->info == x)
{
aux->ant->prox = aux->prox;
aux->prox->ant = aux->ant;
delete aux;
}
}
}
}
}
else
cout<<"\nFila Vazia!!!";
} */
评论0