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;
}
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)