Enviado em 31/05/2019 - 22:22h
Fala pessoal. Primeira vez aqui.#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<locale.h>
#include<conio.h>
typedef struct Noh{
char nome[15];
struct No *prox;
}no;
typedef struct Lista
{
no *inicio;
no *fim;
no *atual;
no *anterior;
}lista;
typedef struct Rodada
{
no *atual;
no *ant;
}rodada;
void inicia_lista(lista *lista)
{
lista->inicio = NULL;
lista->fim = NULL;
lista->atual = NULL;
lista->anterior = NULL;
}
/*função para inserir o nó jogador na lista*/
int inserir_jogador(lista *lista, int i)
{
i++;
no *novo;
novo = (no *)malloc(sizeof(no));
char nome[15];
printf("\n Informe o nome do %dº Player: ", i);
scanf("%s", &novo->nome);
novo->prox = lista->inicio;
if (lista->inicio == NULL)
{
lista->inicio = novo;
lista->fim = novo;
}
else
{
//encadeamento da lista
lista->fim->prox = novo;
lista->fim = lista->fim->prox;
}
}
/*função que imprime a lista*/
void imprimir_jogadores(lista *lista)
{
no *aux, *ant;
aux = lista->inicio;
ant = NULL;
if (aux == NULL)
{
printf("\n Lista Vazia!");
}
else
{
do{
printf("%s ", aux->nome);
aux = aux->prox;
}while (aux != lista->inicio);
}
}
void remover_jogador(lista *lista)
{
char nome_remove[15];
no *ant, *atual;
printf("\nInforme o Player a ser removido: ");
scanf("%s", &nome_remove);
if(lista->inicio == NULL)
{
printf("\nLista Vazia!");
}
else
{
ant = NULL;
atual = lista->inicio;
do
{
if(strcmp(atual->nome, nome_remove) == 0)
{
if (atual->nome == lista->inicio)
{
lista->inicio = lista->inicio->prox;
free(atual);
lista->fim->prox = lista->inicio;
break;
}
else
{
if(atual == lista->fim)
{
lista->fim = ant;
free(atual);
}
/*refazendo encadeamento*/
ant->prox = atual->prox;
free(atual);
break;
}
}
else
{
ant = atual;
atual = atual->prox;
}
}while (atual != lista->inicio);
}
}
int tirar_carta()
{
int i, num;
/* inicializar o gerador de números aleatórios */
srand(time(NULL));
for (i=0; i<8; i++)
{
/* para gerar números aleatórios de 0 a 7 e verificar se é primo. Retorna o primeiro num primo encontrado */
num = rand() % 8;
if((num == 2) || (num % 2 == 1 && num != 1))
{
// printf("O número tirado foi: %d", num);
return num;
break;
}
}
}
void jogar(lista *lista)
{
int num_carta = 5;//tirar_carta();
printf(" ");
printf("\n\n\t\tA carta tirada foi: %d", num_carta);
switch(num_carta)
{
case 2: /*Pula o próximo jogador e passa a vez para o seguinte.*/
{
no *atual, *ant, *prox;
atual = lista->atual;
ant = lista->anterior;
prox = lista->atual->prox;
lista->anterior = atual;
lista->atual = prox->prox;
/*printf("Carta de numero 2...\n");*/
printf("\nDescrição da carta: ''Pula o próximo jogador e passa a vez para o seguinte.''\n");
printf("\n\n");
printf("%s não jogará essa rodada\n", prox->nome);
printf("Agora é a vez do(a) Player >>>>> %s !\n\n", lista->atual->nome);
printf("\nlista inicio é: %s", lista->inicio->nome);
printf("\nlista fim é: %s", lista->fim->nome);
printf("\nLista Atual é: %s", lista->atual->nome);
printf("\nlista anterior é: %s\n", lista->anterior->nome);
}break;
case 3:/*Elimina o jogador atual.*/
{
no *remove, *atual, *ant, *prox;
remove = lista->atual;
prox = lista->atual->prox;
atual = lista->atual;
ant = lista->anterior;
printf("\nDescrição da carta: ''Elimina o jogador atual''\n");
printf("\n\n");
do
{
if(lista->atual == lista->inicio)
{
printf("O Player %s foi eliminado do jogo! \n", atual->nome);
lista->inicio = lista->atual->prox;
lista->atual = lista->atual->prox;
free(atual);
lista->fim->prox = lista->inicio;
}
else if(lista->atual == lista->fim)
{
ant->prox = lista->inicio;
lista->anterior = lista->atual;
lista->atual = lista->atual->prox;
free(atual);
lista->fim = ant;
lista->fim->prox = lista->inicio;
}
else
{
printf("O Player %s foi eliminado do jogo! \n", atual->nome);
ant->prox = atual->prox;
lista->anterior = lista->atual;
lista->atual = atual->prox;
free(atual);
}
printf("\n");
printf("\t\tAgora é a vez do Player >>> %s \n\n", prox->nome);
printf("\nlista inicio é: %s", lista->inicio->nome);
printf("\nlista fim é: %s", lista->fim->nome);
printf("\nLista Atual é: %s", lista->atual->nome);
if (lista->anterior == NULL)
{
printf("\nO Player anterior foi eliminado ou esta é a primeira rodada");
}else{
printf("\nlista anterior é: %s\n", lista->anterior->nome);
}
ant = atual;
atual = atual->prox;
}while(atual =! lista->inicio);
}break;
case 5: /*Elimina o terceiro jogador contado a partir do jogador atual.*/
{
no *atual, *ant, *proximo, *eliminado, *aux;
/*atual = (no *)malloc(sizeof(no));
ant = (no *)malloc(sizeof(no));
proximo = (no *)malloc(sizeof(no));
eliminado = (no *)malloc(sizeof(no));*/
atual = lista->atual;
ant = NULL;
proximo = lista->atual->prox;
eliminado = proximo->prox;
aux = lista->atual->prox;
//system("cls");
printf("\n\nDescrição da Carta: ''Elimina o terceiro jogador contado a partir do jogador atual.''\n");
printf("\n\nPlayer atual: %s \n", lista->atual->nome);
printf("\n\nPlayer ELIMINADO: %s\n\n", eliminado->nome);
printf("\n");
if (atual == lista->inicio)
{
printf("\nO Player %s foi eliminado do jogo! \n", atual->nome);
lista->inicio = lista->inicio->prox;
lista->atual = lista->atual->prox;
free(eliminado);
break;
}
else
{
if(atual == lista->fim)
{
lista->fim = proximo;
proximo->prox = lista->inicio;
}
/*refazendo encadeamento*/
printf("\nO Player %s foi eliminado do jogo! \n", atual->nome);
proximo->prox = eliminado->prox;
free(eliminado);
lista->anterior = lista->atual;
lista->atual = lista->atual->prox;
break;
}
printf("\n\n\t\tPlayer Atual é >>> %s ", atual->nome);
printf("\nlista Inicio é: %s", lista->inicio->nome);
printf("\nlista Fim é: %s", lista->fim->nome);
printf("\nLista Atual é: %s", lista->atual->nome);
if (lista->anterior == NULL)
{
printf("\nO Player anterior foi eliminado ou esta é a primeira rodada");
}else{
printf("\nlista anterior é: %s\n", lista->anterior->nome);
}
printf("\n\t\tAgora é a vez do Player >>>> %s\n", lista->atual->nome);
}break;
case 7: /*Elimina o jogador da rodada anterior (o jogador que tirou a carta antes).*/
{
no *atual, *ant, *prox, *removido, *aux, *ant_remove, *atual_remove;
atual = lista->atual;
ant = lista->anterior;
prox = lista->atual->prox;
ant_remove = ant;
atual_remove = atual;
printf("\nDescrição da Carta: ''Elimina o jogador da rodada anterior (o jogador que tirou a carta antes)''\n");
printf("\nJogador atual: %s \n\n", atual->nome);
printf("\nJogador anterior: %s \n\n", ant->nome);
if(atual == lista->inicio)
{
printf("\n\nCarta sem valor nesta rodada! \n\nÉ a vez do Jogador >>> %s\n\n", prox);
lista->anterior = atual;
lista->atual = atual->prox;
break;
}
do
{
ant_remove = ant_remove->prox;
}while(ant_remove != ant );
removido = ant_remove;
if(removido == lista->inicio)
{
lista->inicio = lista->inicio->prox;
lista->anterior = atual;
lista->atual = atual->prox;
}
else if(removido == lista->fim)
{
lista->fim = lista->fim->prox;
lista->anterior = atual;
lista->atual = atual->prox;
}
else
{
ant_remove->prox = ant->prox;
}
printf("\nlista inicio é: %s", lista->inicio->nome);
printf("\nlista fim é: %s", lista->fim->nome);
printf("\nLista Atual é: %s", lista->atual->nome);
printf("\nlista anterior é: %s\n", lista->anterior->nome);
}break;
}
}
int main()
{
char nome_remove[15];
int x, i, qtd_jog;
lista lista;
inicia_lista(&lista);
setlocale(LC_ALL, "Portuguese");
no *ini, *fim, *ant, *primeiro;
ini=(no *)malloc(sizeof(no));
fim=ini;
printf("\t\t\t Jogo De Cartas");
printf("\n\t\t\t--- Primo's ---");
printf("\nQuantidade de Player's: ");
scanf("%d", &qtd_jog);
for(i = 0; i<qtd_jog; i++)
{
inserir_jogador(&lista, i);
}
primeiro = (no *)malloc(sizeof(no));
primeiro = lista.inicio;
lista.atual = lista.inicio;
lista.anterior = NULL;
int opcao;
printf("\n\n");
printf("\t\t\--------------- Jogo Iniciado ---------------\n\n");
printf(" \n\t\t O primeiro a Jogar é o(a) player >>> %s <<<\n\n", lista.atual);
do
{
if(lista.inicio == lista.fim)
{
printf("\n\n\t\t\t********* Fim do Jogo !!! *********");
printf("\n\t\tO vencedor foi o Player >>>>>>>>>>> %s <<<<<<<<<<<\n\n", lista.inicio->nome);
}
printf("\t\t\t------------------------\n");
printf("\t\t\t----- MENU DO JOGO -----\n");
printf("\t\t\t------------------------\n");
printf(" \t\t\t6 - Jogar\n");
printf(" \t\t\t2 - Exibir jogadores\n");
printf(" \t\t\t3 - Remover jogadores\n");
printf(" \t\t\t0 - Sair do Jogo\n");
printf(" \t\t\tOpção: ");
scanf("%d", &opcao);
switch (opcao)
{
case 2:
printf("\n\n");
printf("Players: ");
imprimir_jogadores(&lista);
printf("\n\n");
break;
case 3:
remover_jogador(&lista);
break;
case 0:
break;
case 6:
{
/* imprime a lista de jogadores*/
printf("\n\n");
printf("Players: ");
imprimir_jogadores(&lista);
printf("\n\n");
/* executa função jogar que tira uma carta aleatória e realiza oq a carta determina*/
jogar(&lista);
/* imprime a lista de jogadores*/
printf("\n\n");
printf("Players: ");
imprimir_jogadores(&lista);
printf("\n\n");
}break;
default: printf("\t\tOpção invalida\n");
}
}while (opcao != 0);
return 0;
}
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Instalação Uefi com o instalador clássico do Mageia [RESOLVIDO] (2)
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)