Created
November 12, 2015 02:15
-
-
Save gurgelrenan/fde49775be5db6029442 to your computer and use it in GitHub Desktop.
Palitos
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
int is_par(int number); | |
void jogo_par_ou_impar(); | |
void jogo_nim(); | |
int main(int argc, const char * argv[]) { | |
int matricula; | |
int continuar_jogando = 1; | |
while(continuar_jogando == 1) { | |
printf("Digite sua matrícula: \n"); | |
scanf("%d",&matricula); | |
// Comecar a transformar um inteiro em um array | |
/* count number of digits */ | |
int c = 0; /* digit position */ | |
int n = matricula; | |
while (n != 0) | |
{ | |
n /= 10; | |
c++; | |
} | |
int numberArray[c]; | |
c = 0; | |
n = matricula; | |
/* extract each digit */ | |
while (n != 0) | |
{ | |
numberArray[c] = n % 10; | |
n /= 10; | |
c++; | |
} | |
// finaliza a transformacao de um inteiro em um array | |
// Comeca a mostrar a soma da matricula | |
int i; | |
int sum = 0; | |
for (i=0;i<c;i++) { | |
// printf("Posicao %d: ", i); | |
// printf("%d", numberArray[i]); | |
// printf("\n"); | |
sum = sum + numberArray[i]; | |
} | |
int sum_matricula = sum; | |
printf("A soma da sua matricula é: %d \n", sum_matricula); | |
// fim soma matricula | |
if (is_par(sum_matricula) == 1) { | |
jogo_par_ou_impar(); | |
} else { | |
jogo_nim(); | |
} | |
char jogar_novamente[1]; | |
printf("Gostaria de continuar jogando? digite s ou n \n"); | |
scanf("%s", jogar_novamente); | |
if(jogar_novamente[0] == 's') { | |
continuar_jogando = 1; | |
} | |
else { | |
continuar_jogando = 0; | |
break; | |
} | |
} | |
return 0; | |
} | |
int is_par(int number) { | |
if (number % 2 == 0) { | |
return 1; | |
} else { | |
return 0; | |
} | |
} | |
void jogo_par_ou_impar() { | |
printf("Comecando Jogo par ou impar.....\n"); | |
int qtd_palitos = 15; | |
int qtd_para_remover = 0; | |
int i; | |
int jogadores[2]; | |
char nome_jogador1[30]; | |
char nome_jogador2[30]; | |
printf("Nome jogador 1: "); | |
scanf("%s",nome_jogador1); | |
printf("Bem vindo %s. \n",nome_jogador1); | |
printf("Nome jogador 2: "); | |
scanf("%s",nome_jogador2); | |
printf("Bem vindo %s. \n",nome_jogador2); | |
// inicializar array dos jogadores com zero palitos em cada | |
for (i = 0;i < 2; i++){ | |
jogadores[i] = 0; | |
} | |
int j; | |
while (qtd_palitos > 0) { | |
for (j = 0; j < 2; j++) { | |
if (j == 0) { | |
printf("Vez do jogador: %s \n", nome_jogador1); | |
} else { | |
printf("Vez do jogador: %s \n", nome_jogador2); | |
} | |
printf("Digite quantos palitos deseja remover: \n"); | |
scanf("%d",&qtd_para_remover); | |
// verifica se pediu para tirar menos q 4 palitos e pelo menos 1 | |
if (qtd_para_remover < 1 || qtd_para_remover > 3) { | |
printf("Remova de 1 a 3 palitos \n"); | |
break; | |
} else | |
// verifica se a quantidade que o jogador quer tirar, ainda pode ser tirada | |
if ((qtd_palitos - qtd_para_remover) < 0 ) { | |
printf("Voce pode remover apenas %d palito(s) \n", qtd_palitos); | |
break; | |
} else { | |
printf("Removendo %d palitos \n", qtd_para_remover); | |
qtd_palitos = qtd_palitos - qtd_para_remover; | |
// adicionando os palitos removidos para o jogador q removeu | |
jogadores[j] += qtd_para_remover; | |
if (j == 0) { | |
printf("O jogador: %s tem agora %d palitos \n", nome_jogador1, jogadores[j]); | |
} else { | |
printf("O jogador: %s tem agora %d palitos \n", nome_jogador2, jogadores[j]); | |
} | |
printf("Palitos do jogador 1: %d \n", jogadores[0]); | |
printf("Palitos do jogador 2: %d \n", jogadores[1]); | |
printf("Restam %d palitos \n", qtd_palitos); | |
qtd_para_remover = 0; | |
} | |
} | |
} | |
if (!is_par(jogadores[0])) { | |
printf("O jogador %s venceu!!!", nome_jogador1); | |
} else { | |
printf("O jogador %s venceu!!!", nome_jogador2); | |
} | |
printf("-----------------Fim do jogo!-------------------------"); | |
} | |
void jogo_nim() { | |
printf("Comecando Jogo NIM.....\n"); | |
int qtd_palitos = 15; | |
int qtd_para_remover = 0; | |
int i; | |
int jogadores[2]; | |
char nome_jogador1[30]; | |
char nome_jogador2[30]; | |
printf("Nome jogador 1: "); | |
scanf("%s",nome_jogador1); | |
printf("Bem vindo %s. \n",nome_jogador1); | |
printf("Nome jogador 2: "); | |
scanf("%s",nome_jogador2); | |
printf("Bem vindo %s. \n",nome_jogador2); | |
// inicializar array dos jogadores com zero palitos em cada | |
for (i = 0;i < 2; i++){ | |
jogadores[i] = 0; | |
} | |
int j; | |
int ultimo_jogador = 0; | |
while (qtd_palitos > 0) { | |
for (j = 0; j < 2; j++) { | |
if (j == 0) { | |
printf("Vez do jogador: %s \n", nome_jogador1); | |
} else { | |
printf("Vez do jogador: %s \n", nome_jogador2); | |
} | |
printf("Digite quantos palitos deseja remover: \n"); | |
scanf("%d",&qtd_para_remover); | |
// verifica se pediu para tirar menos q 4 palitos e pelo menos 1 | |
if (qtd_para_remover < 1 || qtd_para_remover > 3) { | |
printf("Remova de 1 a 3 palitos \n"); | |
break; | |
} else | |
// verifica se a quantidade que o jogador quer tirar, ainda pode ser tirada | |
if ((qtd_palitos - qtd_para_remover) < 0 ) { | |
printf("Voce pode remover apenas %d palito(s) \n", qtd_palitos); | |
break; | |
} else { | |
printf("Removendo %d palitos \n", qtd_para_remover); | |
qtd_palitos = qtd_palitos - qtd_para_remover; | |
// adicionando os palitos removidos para o jogador q removeu | |
jogadores[j] += qtd_para_remover; | |
if (j == 0) { | |
printf("O jogador: %s tem agora %d palitos \n", nome_jogador1, jogadores[j]); | |
} else { | |
printf("O jogador: %s tem agora %d palitos \n", nome_jogador2, jogadores[j]); | |
} | |
printf("Palitos do jogador 1: %d \n", jogadores[0]); | |
printf("Palitos do jogador 2: %d \n", jogadores[1]); | |
printf("Restam %d palitos \n", qtd_palitos); | |
qtd_para_remover = 0; | |
ultimo_jogador = j; | |
} | |
} | |
} | |
if (ultimo_jogador == 0) { | |
printf("O jogador %s venceu!!!", nome_jogador2); | |
} else { | |
printf("O jogador %s venceu!!!", nome_jogador1); | |
} | |
printf("-----------------Fim do jogo!-------------------------"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment