
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;
}
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático









