Você está na página 1de 17

#inclu#include <stdio.

h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
int escolherDificuldade ();
int tabuleiroJogo (int tam);
int teclarLinha ();
int teclarColuna ();

int main (void) {

while (true) {

int i, dificuldade;

printf("\n Bem vindo ao jogo \n");


printf(" <PIX A PIX> \n");
printf(" 1: Iniciar\n");
printf(" 2: Como jogar\n");
printf(" 3: Sair\n\n");

printf("\nDigite uma das opções do menu acima: ");


scanf("%d", &i);

switch (i) {
case (1):
dificuldade = escolherDificuldade();
if(dificuldade == 0) break;
else tabuleiroJogo (dificuldade);
break;
case (2):
printf("\nO objetivo do jogo é descobrir quais os espaços que
devem ser marcados ou\n"
"deixados como vazios. A grade é formada por ""quadrinhos"".
Repare no números\n"
"embaixo de cada coluna e à direita de cada linha. Elas indicam
quantos espaços\n"
"devem ser marcados em sequência, formando assim, blocos. A
sequência dos blocos\n"
"deve ser respeitada, seguindo os números das linhas da
esquerda para direita, e das\n"
"colunas de cima para baixo. Entre os blocos deve haver pelo
menos um espaço vazio\n"
"Dica: Tente começar pelo maiores blocos, ou pelas maiores
sequências de blocos.\n");
break;
case (3):
printf("\nJogo encerrado.\n");
return 0;
default:
printf("\nOpção inválida.\n");
continue;
}
}

return 0;
}

int escolherDificuldade () {

int i;

do{

printf("\n Escolha a Dificuldade do Jogo: \n");


printf(" 1: Fácil\n");
printf(" 2: Normal\n");
printf(" 3: Díficil\n");
printf(" 0: Voltar\n");

printf("\nDigite uma das opções do menu acima: ");


scanf("%d", &i);

switch(i) {
case (1):
return 5;
case (2):
return 10;
case (3):
return 20;
case (0):
return 0;
default:
printf("\nDificuldade inválida.\n");
continue;
}
} while(i!=0&&i!=1&&i!=2&&i!=3);
}

int tabuleiroJogo (int tam) {

int controlWhile = 0;

while(true) {

int i, j, k, verd, fals, verificador = 0;


int tabuleiro[tam][tam], temp[tam], bordaTabuleiro[tam][tam];
char control = 'A';
int usuario[tam][tam], lin, col;

fals=verd=0;

if(controlWhile == 0) {
for(i=0; i<tam; i++) {
for(j=0; j<tam; j++) {
usuario[i][j] = 0;
}
}
}
for(i=0; i<tam; i++) for(j=0; j<tam; j++) bordaTabuleiro[i][j] = 0;
for(i=0; i<tam; i++) temp[i] = 0;

srand(time(NULL));

if(controlWhile == 0) {
while(fals>=verd) {
fals=verd=0;
for(i=0; i<tam; i++) {
for(j=0; j<tam; j++) {
tabuleiro[i][j] = rand()%2;
if(tabuleiro[i][j] == 1) verd++;
else fals++;
}
}
}
}

printf("\n");
printf(" Tabuleiro:\n\n");

for(i=0; i<tam; i++) {


if(i==0) {
printf(" ");
}
printf("%c ", control);
control++;
}

printf("\n");

for(i=0; i<tam; i++) {


if(i==0)printf(" ");
printf("_ ");
}

printf("\n");

control = 'A';

for(i=0; i<tam; i++) {


for(j=0; j<tam; j++) {
if(j==0) {
printf("%c |", control);
for(j=0; j<tam; j++) {
if (usuario[i][j] == 1) printf("[X] ");
else printf("[ ] ");
}
printf("|");
control++;
j=0;
}
if(tabuleiro[i][j]==1) {
do {
verificador++;
j++;
} while(tabuleiro[i][j]==1 && j<tam);
j--;
printf("%d ", verificador);
verificador=0;
}
}
printf("\n");
}

for(i=0; i<tam; i++) {


if(i == 0) printf(" ");
printf("_ ");
}

printf("\n");

for(k=0; k<5; k++) {


for(i=0; i<tam; i++) {
for(j=temp[i]; j<tam; j++) {
verificador=0;
if(tabuleiro[j][i]==1) {
do {
verificador++;
j++;
} while(tabuleiro[j][i]==1 && j<tam);
temp[i] = j;
bordaTabuleiro[k][i] = verificador;
break;
}
}
}
}

for(i=0; i<5; i++) {


printf(" ");
for(j=0; j<tam; j++) {
if(bordaTabuleiro[i][j] == 0) printf(" ");
else {
if(bordaTabuleiro[i][j] > 9) printf("%d ",
bordaTabuleiro[i][j]);
else printf("%d ", bordaTabuleiro[i][j]);
}
}
printf("\n");
}

printf("\n(Tecle 0 para ir para o menu principal\n");


printf("(Tecle 1 para reiniciar o tabuleiro atual)\n");
printf("(Tecle 2 para conferir se você acertou)\n\n\n");

do {
getchar();
lin = teclarLinha ();
if(lin == -1) return 0;
} while(lin == -4);

if (lin == -2) {
controlWhile = 1;
for(i=0; i<tam; i++) for(j=0; j<tam; j++) usuario[i][j] = 0;
continue;
}

if(lin == -3) {
for(i=0; i<tam; i++) {
for(j=0; j<tam; j++) {
if(usuario[i][j] != tabuleiro[i][j]) {
do {
printf("Sua tabela está errada\n");
printf("(Tecle 0 para voltar) ");
scanf("%d", &lin);
if(lin==0) break;
else printf("\nNúmero inválido, tecle 0.\n\n");
} while(lin != 0);
break;
}
else if(i == tam-1 && j == tam-1) {
printf("Sua tabela está correta, parabéns\n");
return 0;
}
}
if(lin==0) break;
}
if(lin==0) {
controlWhile++;
continue;
}
}

do {
getchar();
col = teclarColuna ();
if(col == -1) return 0;
} while(col == -4);

if (col == -2) {
controlWhile = 1;
for(i=0; i<tam; i++) for(j=0; j<tam; j++) usuario[i][j] = 0;
continue;
}

if(col == -3) {
for(i=0; i<tam; i++) {
for(j=0; j<tam; j++) {
if(usuario[i][j] != tabuleiro[i][j]) {
do {
printf("Sua tabela está errada\n");
printf("(Tecle 0 para voltar) ");
scanf("%d", &col);
if(col==0) break;
else printf("\nNúmero inválido, tecle 0.\n\n");
} while(col != 0);
break;
}
else if(i == tam-1 && j == tam-1) {
printf("Sua tabela está correta, parabéns.");
return 0;
}
}
if(col==0) break;
}
if(col==0) {
controlWhile++;
continue;
}
}

controlWhile++;

usuario[lin][col] = 1;

}
}

int teclarLinha () {
int linha;
char lin;

printf("Insira a linha que deseja marcar (Exemplo ""A""): ");


scanf("%c", &lin);
printf("\n");

if(lin == '0') linha = -1;


else {
if(lin == '1') linha = -2;
else {
if(lin == '2') linha = -3;
else {
if(lin>64 && lin<91) linha = lin - 65;
else {
if(lin>96 && lin<123) linha = lin - 97;
else {
printf("\n\nValor inválido, tecle
novamente.\n\n");
linha = -4;
}
}
}
}
}

return linha;
}

int teclarColuna () {

int coluna;
char col;

printf("Insira a coluna que deseja marcar (Exemplo ""A""): ");


scanf("%c", &col);
printf("\n");

if(col == '0') coluna = -1;


else {
if(col == '1') coluna = -2;
else {
if(col == '2') coluna = -3;
else {
if(col>64 && col<91) coluna = col - 65;
else {
if(col>96 && col<123) coluna = col - 97;
else {
printf("\n\nValor inválido, tecle
novamente.\n\n");
coluna = -4;
}
}
}
}
}

return coluna;
}

de <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
int escolherDificuldade ();
int tabuleiroJogo (int tam);
int teclarLinha ();
int teclarColuna ();

int main (void) {

while (true) {

int i, dificuldade;

printf("\n Bem vindo ao jogo \n");


printf(" <PIX A PIX> \n");
printf(" 1: Iniciar\n");
printf(" 2: Como jogar\n");
printf(" 3: Sair\n\n");

printf("\nDigite uma das opções do menu acima: ");


scanf("%d", &i);

switch (i) {
case (1):
dificuldade = escolherDificuldade();
if(dificuldade == 0) break;
else tabuleiroJogo (dificuldade);
break;
case (2):
printf("\nO objetivo do jogo é descobrir quais os espaços que
devem ser marcados ou\n"
"deixados como vazios. A grade é formada por ""quadrinhos"".
Repare no números\n"
"embaixo de cada coluna e à direita de cada linha. Elas indicam
quantos espaços\n"
"devem ser marcados em sequência, formando assim, blocos. A
sequência dos blocos\n"
"deve ser respeitada, seguindo os números das linhas da
esquerda para direita, e das\n"
"colunas de cima para baixo. Entre os blocos deve haver pelo
menos um espaço vazio\n"
"Dica: Tente começar pelo maiores blocos, ou pelas maiores
sequências de blocos.\n");
break;
case (3):
printf("\nJogo encerrado.\n");
return 0;
default:
printf("\nOpção inválida.\n");
continue;
}
}

return 0;
}

int escolherDificuldade () {

int i;

do{

printf("\n Escolha a Dificuldade do Jogo: \n");


printf(" 1: Fácil\n");
printf(" 2: Normal\n");
printf(" 3: Díficil\n");
printf(" 0: Voltar\n");

printf("\nDigite uma das opções do menu acima: ");


scanf("%d", &i);

switch(i) {
case (1):
return 5;
case (2):
return 10;
case (3):
return 20;
case (0):
return 0;
default:
printf("\nDificuldade inválida.\n");
continue;

}
} while(i!=0&&i!=1&&i!=2&&i!=3);
}

int tabuleiroJogo (int tam) {

int controlWhile = 0;

while(true) {

int i, j, k, verd, fals, verificador = 0;


int tabuleiro[tam][tam], temp[tam], bordaTabuleiro[tam][tam];
char control = 'A';
int usuario[tam][tam], lin, col;

fals=verd=0;

if(controlWhile == 0) {
for(i=0; i<tam; i++) {
for(j=0; j<tam; j++) {
usuario[i][j] = 0;
}
}
}
for(i=0; i<tam; i++) for(j=0; j<tam; j++) bordaTabuleiro[i][j] = 0;
for(i=0; i<tam; i++) temp[i] = 0;

srand(time(NULL));

if(controlWhile == 0) {
while(fals>=verd) {
fals=verd=0;
for(i=0; i<tam; i++) {
for(j=0; j<tam; j++) {
tabuleiro[i][j] = rand()%2;
if(tabuleiro[i][j] == 1) verd++;
else fals++;
}
}
}
}

printf("\n");

printf(" Tabuleiro:\n\n");

for(i=0; i<tam; i++) {


if(i==0) {
printf(" ");
}
printf("%c ", control);
control++;
}

printf("\n");

for(i=0; i<tam; i++) {


if(i==0)printf(" ");
printf("_ ");
}

printf("\n");

control = 'A';

for(i=0; i<tam; i++) {


for(j=0; j<tam; j++) {
if(j==0) {
printf("%c |", control);
for(j=0; j<tam; j++) {
if (usuario[i][j] == 1) printf("[X] ");
else printf("[ ] ");
}
printf("|");
control++;
j=0;
}
if(tabuleiro[i][j]==1) {
do {
verificador++;
j++;
} while(tabuleiro[i][j]==1 && j<tam);
j--;
printf("%d ", verificador);
verificador=0;
}
}
printf("\n");
}

for(i=0; i<tam; i++) {


if(i == 0) printf(" ");
printf("_ ");
}

printf("\n");

for(k=0; k<5; k++) {


for(i=0; i<tam; i++) {
for(j=temp[i]; j<tam; j++) {
verificador=0;
if(tabuleiro[j][i]==1) {
do {
verificador++;
j++;
} while(tabuleiro[j][i]==1 && j<tam);
temp[i] = j;
bordaTabuleiro[k][i] = verificador;
break;
}
}
}
}

for(i=0; i<5; i++) {


printf(" ");
for(j=0; j<tam; j++) {
if(bordaTabuleiro[i][j] == 0) printf(" ");
else {
if(bordaTabuleiro[i][j] > 9) printf("%d ",
bordaTabuleiro[i][j]);
else printf("%d ", bordaTabuleiro[i][j]);
}
}
printf("\n");
}

printf("\n(Tecle 0 para ir para o menu principal\n");


printf("(Tecle 1 para reiniciar o tabuleiro atual)\n");
printf("(Tecle 2 para conferir se você acertou)\n\n\n");

do {
getchar();
lin = teclarLinha ();
if(lin == -1) return 0;
} while(lin == -4);

if (lin == -2) {
controlWhile = 1;
for(i=0; i<tam; i++) for(j=0; j<tam; j++) usuario[i][j] = 0;
continue;
}

if(lin == -3) {
for(i=0; i<tam; i++) {
for(j=0; j<tam; j++) {
if(usuario[i][j] != tabuleiro[i][j]) {
do {
printf("Sua tabela está errada\n");
printf("(Tecle 0 para voltar) ");
scanf("%d", &lin);
if(lin==0) break;
else printf("\nNúmero inválido, tecle 0.\n\n");
} while(lin != 0);
break;
}
else if(i == tam-1 && j == tam-1) {
printf("Sua tabela está correta, parabéns\n");
return 0;
}
}
if(lin==0) break;
}
if(lin==0) {
controlWhile++;
continue;
}
}

do {
getchar();
col = teclarColuna ();
if(col == -1) return 0;
} while(col == -4);

if (col == -2) {
controlWhile = 1;
for(i=0; i<tam; i++) for(j=0; j<tam; j++) usuario[i][j] = 0;
continue;
}

if(col == -3) {
for(i=0; i<tam; i++) {
for(j=0; j<tam; j++) {
if(usuario[i][j] != tabuleiro[i][j]) {
do {
printf("Sua tabela está errada\n");
printf("(Tecle 0 para voltar) ");
scanf("%d", &col);
if(col==0) break;
else printf("\nNúmero inválido, tecle 0.\n\n");
} while(col != 0);
break;
}
else if(i == tam-1 && j == tam-1) {
printf("Sua tabela está correta, parabéns.");
return 0;
}
}
if(col==0) break;
}
if(col==0) {
controlWhile++;
continue;
}
}

controlWhile++;

usuario[lin][col] = 1;

}
}

int teclarLinha () {

int linha;
char lin;

printf("Insira a linha que deseja marcar (Exemplo ""A""): ");


scanf("%c", &lin);
printf("\n");

if(lin == '0') linha = -1;


else {
if(lin == '1') linha = -2;
else {
if(lin == '2') linha = -3;
else {
if(lin>64 && lin<91) linha = lin - 65;
else {
if(lin>96 && lin<123) linha = lin - 97;
else {
printf("\n\nValor inválido, tecle
novamente.\n\n");
linha = -4;
}
}
}
}
}

return linha;
}

int teclarColuna () {

int coluna;
char col;

printf("Insira a coluna que deseja marcar (Exemplo ""A""): ");


scanf("%c", &col);
printf("\n");

if(col == '0') coluna = -1;


else {
if(col == '1') coluna = -2;
else {
if(col == '2') coluna = -3;
else {
if(col>64 && col<91) coluna = col - 65;
else {
if(col>96 && col<123) coluna = col - 97;
else {
printf("\n\nValor inválido, tecle
novamente.\n\n");
coluna = -4;
}
}
}
}
}

return coluna;
}

Você também pode gostar