Ir ao conteúdo

Jogo missionrios e canibais


Fabinhoncn

Posts recomendados

Postado

Ola gente, com alguma ajuda consegui criar o codigo para este jogo com 3 canibais e 3 missionarios, mas agora tenho que altera-lo para que a quantidade de missionarios e canibais seja definidp pelo usuario no começo do jogo mas nao estou conseguindo implementar alguem pode me ajudar SEGUE O CODIGO

#include <stdio.h>
void mostra();
void zerar();
void apresentacao();
int dmissionarios=3;
int emissionarios;
int dcanibais=3;
int ecanibais;
int barco=0;
int resp1,resp2;
main(){
int barco;
int direita=1;
int esquerda=0;
apresentacao();
mostra();
system("cls");
do{
printf(" \n\nLado Direito\n");
printf("Colocar no barco:\n");
printf("Missionario =1\n");
printf("Canibal =2\n");
printf("Ninguem =3\n");
do{
do{
do{
while(resp1<1||resp1>3){
scanf("%d",&resp1);
if(resp1<1||resp1>3){
printf("Opcao invalida, digite novamente:\n");}}
while(resp2<1||resp2>3){
scanf("%d",&resp2);
if(resp2<1||resp2>3){
printf("Opcao invalida, digite novamente:\n");}}


if(resp1==3 && resp2==3){
printf("Pelo menos um passageiro deve ir:\n");}

}while(resp1==3 && resp2==3);

if(resp1==2){
dcanibais--;
ecanibais++;
barco++;
}else if(resp1==1){
dmissionarios--;
emissionarios++;
}
if(resp2==2){
dcanibais--;
ecanibais++;
}else if(resp2==1){
dmissionarios--;
emissionarios++;
}
} while(dmissionarios<0||dmissionarios>3);
} while(dcanibais<0||dcanibais>3);
if(emissionarios>0){
if(ecanibais>emissionarios){
system("cls");
mostra();
printf("Game Over\n");

break;
}
if(dmissionarios>0){
if(dcanibais>dmissionarios){
system("cls");
mostra();
printf("Game Over\n");

break;
}
}
}
system("cls");
mostra();
zerar();


printf("\n\nLado esquerdo:\n");
printf("Colocar no barco:\n");
printf("Missionario =1\n");
printf("Canibal =2\n");
printf("Ninguem =3\n");
do{
do{
do{
while(resp1<1||resp1>3){
scanf("%d",&resp1);
if(resp1<1||resp1>3){
printf("Opcao invalida, digite novamente:\n");}}
while(resp2<1||resp2>3){
scanf("%d",&resp2);
if(resp2<1||resp2>3){
printf("Opcao invalida, digite novamente:\n");}}
if(resp1==3 && resp2==3){
printf("Pelo menos um passageiro deve ir:\n");}
}while(resp1==3 && resp2==3);
if(resp1==2){
ecanibais--;
dcanibais++;
}else if(resp1==1){
emissionarios--;
dmissionarios++;
}
if(resp2==2){
ecanibais--;
dcanibais++;
}else if(resp2==1){
emissionarios--;
dmissionarios++;
}
} while(emissionarios<0||emissionarios>3);
} while(ecanibais<0||ecanibais>3);
if(emissionarios>0){
if(ecanibais>emissionarios){
system("cls");
mostra();
printf("Game Over\n");

break;
}
if(dmissionarios>0){
if(dcanibais>dmissionarios){
system("cls");
mostra();
printf("Game Over\n");

break;
}
}
}
system("cls");
mostra();
zerar();

}while((ecanibais+emissionarios)!=6);
if(ecanibais==3&&emissionarios==3){
printf("PARABENS!!!");}
getchar();
getchar();
}
void mostra(){
printf("Direita :: %d Canibais e %d Missionarios\n ",dcanibais,dmissionarios);
printf("\n\nEsquerda :: %d Canibais e %d Missionarios\n\n",ecanibais,emissionarios);
system(" pause");
}
void zerar(){
resp1=0;
resp2=0;

}
void apresentacao(){
printf("Ajude estes 3 canibais e 3 missionarios atravessarem o rio.\n");
printf("Nao deixe os canibais em maior numero junto dos missionarios em nenhum dos lados senao eles comem os missionarios\n");
printf("O barco deve ter pelo menos 1 passageiro para se locomover!!! BOM JOGO\n");
getchar();
system("cls");

}

Postado

Cara, so muito muito muito novo nisso em programação em C, então, nao sei se vai da muito certo...Mas tenta algo assim:


int a, nummissionarios;

printf ("Digite o numero de missionários: ");
scanf ("%d", &a);
nummissionarios = a;

Como disse, eu so muito novo nisso, (e sim, não coloquei include...aquelas coisa por preguiça ó.ó), mas da uma olhada talvez eu tenha acertado :D

Postado

Valeu galera pela ajuda e a voce tambem CUCCATE, mas ja resolvi estava de cabeça quente por isso nao tava conseguindo, fiz o seguinte:

Zerei as variaveis do inicio que recebia a quantidade de missionarios e canibais e acrescentei o seguinte

void apresentacao(){

printf("|---------------------MISSIONARIOS E CANIBAIS--------------------------|\n");

printf("|Ajude os canibais e os missionarios atravessarem o rio. |\n");

printf("|Escolha a quantidade de de missionarios e canibais |\n");

printf("|Nao deixe os canibais em maior numero junto dos missionarios em nenhum|\n");

printf("|dos lados senao eles comem os missionarios. O barco deve ter pelo |\n");

printf("|menos 1 passageiro para se locomover!!! Tecle ENTER e BOM JOGO |\n");

printf("|----------------------------------------------------------------------|");

getchar();

printf("Informe a quantidade de canbais: ");

scanf("%d",& dcanibais);

printf("Informe a quantidade de missionarios: ");

scanf("%d",& dmissionarios);

Postado
Valeu galera pela ajuda e a voce tambem CUCCATE, mas ja resolvi estava de cabeça quente por isso nao tava conseguindo, fiz o seguinte:

Zerei as variaveis do inicio que recebia a quantidade de missionarios e canibais e acrescentei o seguinte

void apresentacao(){

printf("|---------------------MISSIONARIOS E CANIBAIS--------------------------|\n");

printf("|Ajude os canibais e os missionarios atravessarem o rio. |\n");

printf("|Escolha a quantidade de de missionarios e canibais |\n");

printf("|Nao deixe os canibais em maior numero junto dos missionarios em nenhum|\n");

printf("|dos lados senao eles comem os missionarios. O barco deve ter pelo |\n");

printf("|menos 1 passageiro para se locomover!!! Tecle ENTER e BOM JOGO |\n");

printf("|----------------------------------------------------------------------|");

getchar();

printf("Informe a quantidade de canbais: ");

scanf("%d",& dcanibais);

printf("Informe a quantidade de missionarios: ");

scanf("%d",& dmissionarios);

Amigo,há um loop em seu programa quando se tenta não colocar passageiros no barco, uma mensagem fica se repedindo.Não sei como resolver isso,depois me fala se conseguiu.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!