Ir ao conteúdo

Posts recomendados

Postado

Bom dia, gostaria de uma ajuda para dar prosseguimento ao projeto de minha faculdade. preciso colocar loop no meu jogo e não sei como faço no projeto ela pede assim:O jogo é composto por 5 fases, onde cada fase (a partir da fase 2) só é desbloqueada se a anterior for concluída com êxito. Depois de desbloqueada uma fase, ela pode ser jogada quantas vezes o usuário desejar.

segue o código:  detalhe só pode ser em c++

desde já agradeço.

 

<code>

 

 

#include<stdio.h>
#include<stdlib.h>
#include <windows.h>

int main(void){

    printf("um hotel onde os hospedes tem algumas restricoes quanto a localizacao de seu quarto, seguindo as seguintes regras");
    printf("\n              \n");
    printf("O Rato nao pode ficar ao lado do gato");
    printf("\n           \n");
    printf("O cao nao pode ficar ao lado do osso");
    printf("\n             \n");
    printf("O gato nao pode ficar ao lado do cao");
    printf("\n              \n");
    printf("O queijo nao pode ficar ao lado do rato");
    printf("\n               \n");
    printf("As letras correspodem aos seguintes hospedes G-Gato, C-Cao, R-Rato, O-Osso, Q-Queijo");
    printf("\n                \n");
    printf("Em todas as fases as celulas com X representam os quartos indisponiveis portanto nao podem ser alocados  ");
    printf("\n                  \n");

    printf("Na Fase 1, o jogador deve alocar o rato e o gato na seguinte matriz que representa os quartos:");
    printf("\n        \n");
    int jogada;
bool jogadavalida;
char res;
bool gameover;
int ganhou=false;
int cont_jogadas;
int i = 0,
    j = 0;
    int linha, coluna;
    int vetor[4] = {1,3,5,4};
    int vetor2[3];
    vetor2[0] = 3;
    vetor2[1] = 3;
    vetor2[2] = 4;

                                                                                                                                    
                                          
    int matriz[2][3] = {{1,2,3},
                                          {4,5,6}};
                                          
    char matriz_quartos[2][4] ={   {'X','X',' ','G'},                                      
                                                            {'R',' ','X','X'}};
                                                            
 
                                                  
    for(i = 0; i < 4; i++) {
        printf("%d", vetor);
    }  

printf("\n");

for(i = 0; i <2; i++){
    for(j = 0; j < 3; j++){
        printf("%d", matriz[j]);
    }
    printf("\n");
}
printf("matriz_quartos");
printf("\n");

for(i = 0; i<2; i++){
    for(j = 0; j<4; j++){
        printf("%c", matriz_quartos[j]);
    }
    printf("\n");
}
    
printf("\n");
printf("insira o Rato \n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos[linha][coluna] = 'R';
printf("\n");

printf("insira o Gato \n");

printf("digite a linha: ");
scanf("%d", &linha);

printf("digite a coluna: ");
scanf("%d", &coluna);
matriz_quartos[linha][coluna] = 'G';
printf("\n");


for(i=0;i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos[j]);
    }
    printf("\n");

        }
    
    if(matriz_quartos[1][1] == 'R' && matriz_quartos[0][2] == 'G' ){
        printf("acertou");
    }
    
else{
        printf("errou");
    }

printf ("-------------------------------------------------------------------------------\n");
            getchar();printf ("Pressione \"enter\" para continuar...");
            getchar();system ("cls");

printf("\n");
printf("\n");    
printf("Na segunda fase o jogador deve alocar : cao, cao e osso.");

 

     char matriz_quartos_fase2[2][4] = {       {' ','X','X','X'},

                                                      {'X','C',' ',' '}};
                                                                         
                          

for(i = 0 ; i < 2;i++)        {
    printf("%d ", vetor);
}    

printf("\n");    

for(i=0;i < 2;i++){
    for(j = 0; j < 4;j++){
        printf("%d ", matriz[j]);
    }
}
    printf("\n");
    printf("Matriz_quartos_fase2 \n");


for(i=0;i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos_fase2[j]);
    }
}    
printf("\n");

printf("insira o cao\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase2[linha][coluna] = 'C';


printf("insira o cao\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase2[linha][coluna] = 'C';


printf("insira o osso\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase2[linha][coluna] = 'O';


for(i=0;i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos_fase2[j]);
    }
    printf("\n");
}

        if(matriz_quartos_fase2[1][2] == 'C' && matriz_quartos_fase2[1][3] == 'C' && matriz_quartos_fase2[0][0] == 'O' ){
        printf("acertou");
    
    }
            
    else{
        printf("errou");
}


printf("\n");
printf("Na fase 3 o jogador devera alocar : gato, rato e osso");
printf("\n");

char matriz_quartos_fase3[2][3] =      {{' ','X','X'},                                      
                                                            {' ','G',' '}};
                                                           
                                                                
for(i = 0; i < 3; i++) {
        printf("%d", vetor2);
    }                                      

printf("\n");

for(i = 0; i <2; i++){
    for(j = 0; j < 3; j++){
        printf("%d", matriz[j]);
    }
    printf("\n");
}
printf("matriz_quartos");
printf("\n");

for(i = 0; i<2; i++){
    for(j = 0; j<2; j++){
        printf("%c", matriz_quartos_fase3[j]);
}
printf("\n");
}
                                                                                                                  

printf("insira o gato\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase3[linha][coluna] = 'G';


printf("insira o rato\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase3[linha][coluna] = 'R';


printf("insira o osso\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase3[linha][coluna] = 'O';


 for(i = 0; i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos_fase3[j]);
    }
    printf("\n");
}

    if(matriz_quartos_fase3[1][2] == 'G' && matriz_quartos_fase3[0][0] == 'R' && matriz_quartos_fase3[1][0] == 'O' ){
        printf("acertou");
        printf("\n");
    }
        

else{
        printf("errou");
    }
    
    printf("\n" );
printf("na fase 4, o jogador devera alocar: queijo, queijo, osso");
 printf("\n");
 
 char matriz_quartos_fase4[2][3] =      {{' ',' ',' '},                                      
                                                            {'X','R','X'}};
                                                            
                                                            
   for(i = 0; i < 4; i++) {    
        printf("%d", vetor2);
    }                                      

printf("\n");

for(i = 0; i <2; i++){
    for(j = 0; j < 3; j++){
        printf("%d", matriz[j]);
    }
    printf("\n");
}
printf("matriz_quartos");
printf("\n");

for(i = 0; i<2; i++){
    for(j = 0; j<3; j++){
        printf("%c", matriz_quartos_fase4[j]);
    }
}
printf("\n");

printf("insira o queijo\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase4[linha][coluna] = 'Q';


printf("insira o queijo\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase4[linha][coluna] = 'Q';


printf("insira o osso\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase4[linha][coluna] = 'O';


for(i=0;i<2;i++){
    for(j = 0; j<3;j++){
        printf("%c ", matriz_quartos_fase4[j]);
    }
    printf("\n");
}


        if(matriz_quartos_fase4[0][0] == 'Q' && matriz_quartos_fase4[0][2] == 'Q' && matriz_quartos_fase4[0][1] == 'O' ){
        printf("acertou");
        printf("\n");
    }
        

else{
        printf("errou");
    }
    printf("\n");
    printf("Na fase 5, o jogador devera alocar: gato, rato, osso");
    printf("\n");
    
    char matriz_quartos_fase5[2][4] = {       {' ','Q',' ',' '}};
    
    
    for(i = 0 ; i <2;i++)        {
    printf("%d ", vetor2);
}    

printf("\n");    
    
//imprimir matriz
for(i=0;i < 2;i++){
    for(j = 0; j < 4;j++){
        printf("%d ", matriz[j]);
    }
    printf("\n");
}
printf("Matriz quarto hotel \n");

for(i=0;i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos_fase5[j]);
    
    }
    printf("\n");
}

printf("Insira o Gato \n");

printf("Digite a linha : ");
scanf("%d", &linha);

printf("Digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase5[linha][coluna] = 'G';
printf("Insira o Rato \n");

printf("Digite a linha : ");
scanf("%d", &linha);

printf("Digite a coluna : ");
scanf("%d", &coluna);
matriz_quartos_fase5[linha][coluna] = 'R';

printf("Insira o Osso \n");

printf("Digite a linha : ");
scanf("%d", &linha);

printf("Digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase5[linha][coluna] = 'O';

//mostra a matriz como o rato inserido na posição que o usuário digitou
//imprimir a matriz de char
for(i=0;i<2;i++){//percorrer linha
    for(j = 0; j<4;j++){//percorrer coluna
        printf("%c ", matriz_quartos_fase5[j]);
    }
    printf("\n");

}
    if(matriz_quartos_fase5[0][0] == 'G' && matriz_quartos_fase5[0][3] == 'R' && matriz_quartos_fase5[0][2] == 'O' ){
        printf("acertou");
    
        printf("\n");
    }
    else{
    
    printf("errou\n");
}
do{

    printf("deseja jogar novamente?[s-n]\n");
    scanf("%s", &res);
}while(res =='s');

}
 

 

  • Amei 1
Postado

@Francielle Doff Sotta  Seu problema é que você está tentando criar um jogo com 5 fases porém está usando apenas um método, o método principal. Para criar um jogo de níveis é necessário ter conhecimento em orientação ao objeto, no você poderia colocar para cada método os comportamentos do jogo como por exemplo, insiraUser(), modificUser(), deletUser(), imprimAcao() e por assim vai. É muito difícil fazer somente um método, você acaba entrando nesse problema de ter que usar vários loops e repetir diversas vezes o mesmo código. 

  • Obrigado 1
Postado
13 minutos atrás, Francielle Doff Sotta disse:

detalhe só pode ser em c++

 

Mas você postou um programa em C

 

4 minutos atrás, Vitor_TEC disse:

Para criar um jogo de níveis é necessário ter conhecimento em orientação ao objeto

 

Não é bem assim :) Os jogos precedem em muito a noção de programação orientada a objetos. A primeira versão de Unix na Bell Labs nos '60 foi escrita por Ken Thompson para faciliar escrever jogos num PDP-11... E para facilitar isso foi criada a linguagem e o primeiro compilador C

 

7 minutos atrás, Vitor_TEC disse:

você poderia colocar para cada método os comportamentos do jogo como por exemplo, insiraUser(), modificUser(), deletUser(), imprimAcao() e por assim vai

 

Tem razão. Mas isso não é OOP. Para implementar o jogo como objeto você cria uma Classe Jogo e coloca dentro dela os tabuleiros, a noção de fase e os movimentos do jogo. E cria os métodos associados a cada instância da classe. No construtor da classe cria o tabuleiro e preparar o jogo. 

 

10 minutos atrás, Vitor_TEC disse:

É muito difícil fazer somente um método, você acaba entrando nesse problema de ter que usar vários loops e repetir diversas vezes o mesmo código

 

É mais difícil, mas implica diretamente em repetir várias vezes o mesmo código. Veja fases com loop e sem repetição em C :) 

    int passou = 0;
fase1:
    // 1
    // logica da fase 1
    // ...
    passou = 1;
    goto fase2;
    // ...
    // logica da fase 1
    if (!passou) goto fase1;

    fase2 :
        passou = 0;
    // 2
    // logica da fase 2
    // ...
    passou = 1;
    goto fase3;
    // ...
    // logica da fase 2
    // ...
    if (!passou) goto fase2;

 fase3:

 

  • Obrigado 1
Postado
4 horas atrás, arfneto disse:

É mais difícil, mas implica diretamente em repetir várias vezes o mesmo código. Veja fases com loop e sem repetição em C :) 

 

Eu pretendia ter dito NÃO implica em repetir várias vezes o mesmo código. My bad.

  • Obrigado 1
Postado
Em 25/07/2020 às 11:39, arfneto disse:

 

Mas você postou um programa em C

 

 

Não é bem assim :) Os jogos precedem em muito a noção de programação orientada a objetos. A primeira versão de Unix na Bell Labs nos '60 foi escrita por Ken Thompson para faciliar escrever jogos num PDP-11... E para facilitar isso foi criada a linguagem e o primeiro compilador C

 

 

Tem razão. Mas isso não é OOP. Para implementar o jogo como objeto você cria uma Classe Jogo e coloca dentro dela os tabuleiros, a noção de fase e os movimentos do jogo. E cria os métodos associados a cada instância da classe. No construtor da classe cria o tabuleiro e preparar o jogo. 

 

 

É mais difícil, mas implica diretamente em repetir várias vezes o mesmo código. Veja fases com loop e sem repetição em C :) 


    int passou = 0;
fase1:
    // 1
    // logica da fase 1
    // ...
    passou = 1;
    goto fase2;
    // ...
    // logica da fase 1
    if (!passou) goto fase1;

    fase2 :
        passou = 0;
    // 2
    // logica da fase 2
    // ...
    passou = 1;
    goto fase3;
    // ...
    // logica da fase 2
    // ...
    if (!passou) goto fase2;

 fase3:

 

boa tarde sou iniciante ainda nesse curso ele está dando erro quando joguei no meu codigo

 

Em 25/07/2020 às 11:39, arfneto disse:

 

Mas você postou um programa em C

 

 

Não é bem assim :) Os jogos precedem em muito a noção de programação orientada a objetos. A primeira versão de Unix na Bell Labs nos '60 foi escrita por Ken Thompson para faciliar escrever jogos num PDP-11... E para facilitar isso foi criada a linguagem e o primeiro compilador C

 

 

Tem razão. Mas isso não é OOP. Para implementar o jogo como objeto você cria uma Classe Jogo e coloca dentro dela os tabuleiros, a noção de fase e os movimentos do jogo. E cria os métodos associados a cada instância da classe. No construtor da classe cria o tabuleiro e preparar o jogo. 

 

 

É mais difícil, mas implica diretamente em repetir várias vezes o mesmo código. Veja fases com loop e sem repetição em C :) 


    int passou = 0;
fase1:
    // 1
    // logica da fase 1
    // ...
    passou = 1;
    goto fase2;
    // ...
    // logica da fase 1
    if (!passou) goto fase1;

    fase2 :
        passou = 0;
    // 2
    // logica da fase 2
    // ...
    passou = 1;
    goto fase3;
    // ...
    // logica da fase 2
    // ...
    if (!passou) goto fase2;

 fase3:

 

bom dia, sou iniciante ainda nestes curso, coloquei esse código na só que esta dando erro no goto fase2 tenho que declarar cada fase?

  • Curtir 1
Postado
24 minutos atrás, Francielle Doff Sotta disse:

boa tarde sou iniciante ainda nesse curso ele está dando erro quando joguei no meu codigo

 

oh... Isso é só um exemplo de como ter as fases dentro de um código só sem usar funções. Não é algo que facá sentido. :( Desculpe.

 

25 minutos atrás, Francielle Doff Sotta disse:

bom dia, sou iniciante ainda nestes curso, coloquei esse código na só que esta dando erro no goto fase2 tenho que declarar cada fase?

 

Não. Essas coisas que terminam por dois pontos são declarações. Se chamam labels. Poste seu programa pra gente ajudar.

 

Sabe escrever funções? Sabe o que é uma classe já?

 

Leu o que eu disse sobre classes? Provavelmente esse é o caminho mais simples. Essa linguagem foi escrita para facilitar essas coisas, a abstração de modelos como o do seu jogo. Poste o código e te ajudo a escrever uma classe para este jogo

  • Curtir 1
Postado
3 minutos atrás, arfneto disse:

 

oh... Isso é só um exemplo de como ter as fases dentro de um código só sem usar funções. Não é algo que facá sentido. :( Desculpe.

 

 

Não. Essas coisas que terminam por dois pontos são declarações. Se chamam labels. Poste seu programa pra gente ajudar.

 

Sabe escrever funções? Sabe o que é uma classe já?

 

Leu o que eu disse sobre classes? Provavelmente esse é o caminho mais simples. Essa linguagem foi escrita para facilitar essas coisas, a abstração de modelos como o do seu jogo. Poste o código e te ajudo a escrever uma classe para este jogo

essa é a minha primeira matéria de programação  em c aprendi apenas dados, variáveis, operadores, decisão, seleção, estruturas de repetição, vetores e matrizes. lhe agradeço muito se puder me ajudar.

segue meu código:

ai no trabalho é pedido essa parte que não estou conseguindo:

O jogo é composto por 5 fases, onde cada fase (a partir da fase 2) só é desbloqueada se a anterior for concluída com êxito. Depois de desbloqueada uma fase, ela pode ser jogada quantas vezes o usuário desejar.

<code>

 

 

#include<stdio.h>
#include<stdlib.h>
#include <windows.h>

int main(void){

    printf("um hotel onde os hospedes tem algumas restricoes quanto a localizacao de seu quarto, seguindo as seguintes regras");
    printf("\n              \n");
    printf("O Rato nao pode ficar ao lado do gato");
    printf("\n           \n");
    printf("O cao nao pode ficar ao lado do osso");
    printf("\n             \n");
    printf("O gato nao pode ficar ao lado do cao");
    printf("\n              \n");
    printf("O queijo nao pode ficar ao lado do rato");
    printf("\n               \n");
    printf("As letras correspodem aos seguintes hospedes G-Gato, C-Cao, R-Rato, O-Osso, Q-Queijo");
    printf("\n                \n");
    printf("Em todas as fases as celulas com X representam os quartos indisponiveis portanto nao podem ser alocados  ");
    printf("\n                  \n");

    printf("Na Fase 1, o jogador deve alocar o rato e o gato na seguinte matriz que representa os quartos:");
    printf("\n        \n");
    int jogada;
bool jogadavalida;
char res;
bool gameover;
int ganhou=false;
int cont_jogadas;
int i = 0,
    j = 0;
    int linha, coluna;
    int vetor[4] = {1,3,5,4};
    int vetor2[3];
    vetor2[0] = 3;
    vetor2[1] = 3;
    vetor2[2] = 4;

                                                                                                                                    
                                          
    int matriz[2][3] = {{1,2,3},
                                          {4,5,6}};
                                          
    char matriz_quartos[2][4] ={   {'X','X',' ','G'},                                      
                                                            {'R',' ','X','X'}};
                                                            
 
                                                  
    for(i = 0; i < 4; i++) {
        printf("%d", vetor);
    }  

printf("\n");

for(i = 0; i <2; i++){
    for(j = 0; j < 3; j++){
        printf("%d", matriz[j]);
    }
    printf("\n");
}
printf("matriz_quartos");
printf("\n");

for(i = 0; i<2; i++){
    for(j = 0; j<4; j++){
        printf("%c", matriz_quartos[j]);
    }
    printf("\n");
}
    
printf("\n");
printf("insira o Rato \n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos[linha][coluna] = 'R';
printf("\n");

printf("insira o Gato \n");

printf("digite a linha: ");
scanf("%d", &linha);

printf("digite a coluna: ");
scanf("%d", &coluna);
matriz_quartos[linha][coluna] = 'G';
printf("\n");


for(i=0;i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos[j]);
    }
    printf("\n");

        }
    
    if(matriz_quartos[1][1] == 'R' && matriz_quartos[0][2] == 'G' ){
        printf("acertou");
    }
    
else{
        printf("errou");
    }

printf ("-------------------------------------------------------------------------------\n");
            getchar();printf ("Pressione \"enter\" para continuar...");
            getchar();system ("cls");

printf("\n");
printf("\n");    
printf("Na segunda fase o jogador deve alocar : cao, cao e osso.");

 

     char matriz_quartos_fase2[2][4] = {       {' ','X','X','X'},

                                                      {'X','C',' ',' '}};
                                                                         
                          

for(i = 0 ; i < 2;i++)        {
    printf("%d ", vetor);
}    

printf("\n");    

for(i=0;i < 2;i++){
    for(j = 0; j < 4;j++){
        printf("%d ", matriz[j]);
    }
}
    printf("\n");
    printf("Matriz_quartos_fase2 \n");


for(i=0;i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos_fase2[j]);
    }
}    
printf("\n");

printf("insira o cao\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase2[linha][coluna] = 'C';


printf("insira o cao\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase2[linha][coluna] = 'C';


printf("insira o osso\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase2[linha][coluna] = 'O';


for(i=0;i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos_fase2[j]);
    }
    printf("\n");
}

        if(matriz_quartos_fase2[1][2] == 'C' && matriz_quartos_fase2[1][3] == 'C' && matriz_quartos_fase2[0][0] == 'O' ){
        printf("acertou");
    
    }
            
    else{
        printf("errou");
}


printf("\n");
printf("Na fase 3 o jogador devera alocar : gato, rato e osso");
printf("\n");

char matriz_quartos_fase3[2][3] =      {{' ','X','X'},                                      
                                                            {' ','G',' '}};
                                                           
                                                                
for(i = 0; i < 3; i++) {
        printf("%d", vetor2);
    }                                      

printf("\n");

for(i = 0; i <2; i++){
    for(j = 0; j < 3; j++){
        printf("%d", matriz[j]);
    }
    printf("\n");
}
printf("matriz_quartos");
printf("\n");

for(i = 0; i<2; i++){
    for(j = 0; j<2; j++){
        printf("%c", matriz_quartos_fase3[j]);
}
printf("\n");
}
                                                                                                                  

printf("insira o gato\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase3[linha][coluna] = 'G';


printf("insira o rato\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase3[linha][coluna] = 'R';


printf("insira o osso\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase3[linha][coluna] = 'O';


 for(i = 0; i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos_fase3[j]);
    }
    printf("\n");
}

    if(matriz_quartos_fase3[1][2] == 'G' && matriz_quartos_fase3[0][0] == 'R' && matriz_quartos_fase3[1][0] == 'O' ){
        printf("acertou");
        printf("\n");
    }
        

else{
        printf("errou");
    }
    
    printf("\n" );
printf("na fase 4, o jogador devera alocar: queijo, queijo, osso");
 printf("\n");
 
 char matriz_quartos_fase4[2][3] =      {{' ',' ',' '},                                      
                                                            {'X','R','X'}};
                                                            
                                                            
   for(i = 0; i < 4; i++) {    
        printf("%d", vetor2);
    }                                      

printf("\n");

for(i = 0; i <2; i++){
    for(j = 0; j < 3; j++){
        printf("%d", matriz[j]);
    }
    printf("\n");
}
printf("matriz_quartos");
printf("\n");

for(i = 0; i<2; i++){
    for(j = 0; j<3; j++){
        printf("%c", matriz_quartos_fase4[j]);
    }
}
printf("\n");

printf("insira o queijo\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase4[linha][coluna] = 'Q';


printf("insira o queijo\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase4[linha][coluna] = 'Q';


printf("insira o osso\n");

printf("digite a linha : ");
scanf("%d", &linha);

printf("digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase4[linha][coluna] = 'O';


for(i=0;i<2;i++){
    for(j = 0; j<3;j++){
        printf("%c ", matriz_quartos_fase4[j]);
    }
    printf("\n");
}


        if(matriz_quartos_fase4[0][0] == 'Q' && matriz_quartos_fase4[0][2] == 'Q' && matriz_quartos_fase4[0][1] == 'O' ){
        printf("acertou");
        printf("\n");
    }
        

else{
        printf("errou");
    }
    printf("\n");
    printf("Na fase 5, o jogador devera alocar: gato, rato, osso");
    printf("\n");
    
    char matriz_quartos_fase5[2][4] = {       {' ','Q',' ',' '}};
    
    
    for(i = 0 ; i <2;i++)        {
    printf("%d ", vetor2);
}    

printf("\n");    
    
//imprimir matriz
for(i=0;i < 2;i++){
    for(j = 0; j < 4;j++){
        printf("%d ", matriz[j]);
    }
    printf("\n");
}
printf("Matriz quarto hotel \n");

for(i=0;i<2;i++){
    for(j = 0; j<4;j++){
        printf("%c ", matriz_quartos_fase5[j]);
    
    }
    printf("\n");
}

printf("Insira o Gato \n");

printf("Digite a linha : ");
scanf("%d", &linha);

printf("Digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase5[linha][coluna] = 'G';
printf("Insira o Rato \n");

printf("Digite a linha : ");
scanf("%d", &linha);

printf("Digite a coluna : ");
scanf("%d", &coluna);
matriz_quartos_fase5[linha][coluna] = 'R';

printf("Insira o Osso \n");

printf("Digite a linha : ");
scanf("%d", &linha);

printf("Digite a coluna : ");
scanf("%d", &coluna);

matriz_quartos_fase5[linha][coluna] = 'O';

//mostra a matriz como o rato inserido na posição que o usuário digitou
//imprimir a matriz de char
for(i=0;i<2;i++){//percorrer linha
    for(j = 0; j<4;j++){//percorrer coluna
        printf("%c ", matriz_quartos_fase5[j]);
    }
    printf("\n");

}
    if(matriz_quartos_fase5[0][0] == 'G' && matriz_quartos_fase5[0][3] == 'R' && matriz_quartos_fase5[0][2] == 'O' ){
        printf("acertou");
    
        printf("\n");
    }
    else{
    
    printf("errou\n");
}
do{

    printf("deseja jogar novamente?[s-n]\n");
    scanf("%s", &res);
}while(res =='s');

}
 

 

  • Curtir 1
Postado
19 minutos atrás, Francielle Doff Sotta disse:

ssa é a minha primeira matéria de programação  em c aprendi apenas dados

 

Em C ou C++? Que linguagem vai usar? São muito diferentes.

 

 

Eu já perguntei isso e você não respondeu

  • Curtir 2
Postado

@Francielle Doff Sotta     na hora de postar seu código  é melhor usar o botão  <>  que está desenhado lá na barra de ferramentas da janela de postar 

barap.jpg.876734227d15f27111921eb4aff8d3ea.jpg

para que seu código não fique faltando nenhum caractere como os [ i ] , que sumiram do seu código , e dizem que esse comando goto está em desuso ,  dizem que ele é confuso , e você poderia usar o do / while para substituí lo .

  • Curtir 1
Postado
Em 25/07/2020 às 11:39, arfneto disse:

É mais difícil, mas implica diretamente em repetir várias vezes o mesmo código. Veja fases com loop e sem repetição em C 

 

3 horas atrás, devair1010 disse:

e dizem que esse comando goto está em desuso ,  dizem que ele é confuso , e você poderia usar o do / while para substituí lo

 

:) :) 

 

Parece que não consegui me fazer entender... Isso era um exemplo de que é  possível escrever simplesmente loops sem escrever funções ou repetir o código em C. E sem usar for, loop ou do. Mas era isso: um exemplo de que era possível e até legível.

 

Dos tempos em que se programava muito em Assembler e o código era assim...

 

    passou = 0;
fase1:
    // codido da fase 
    if ( passou ) goto fase2
//  prepara reinicio na fase 1
    ...
    goto fase1;

fase2:
    ...

É só isso. Não estou recomendando que ninguém escreva isso. Só disse que é possível usar um único trecho de código, manter legível e fazer funcionar, mesmo sem esses comandos.

 

De modo semelhante uma função também é isso: empilha os argumentos, marca o endereço de retorno, vai para o endereço da função, recupera os argumentos, executa o código da função e retorna para a linha seguinte à linha que chamou a função.
 

7 horas atrás, Francielle Doff Sotta disse:

desculpe, é em linguagem c

 

Vou ver seu programa de novo, agora com essa confirmação. . . Em C++ seria mais fácil, mas está ok escrever isso em C

adicionado 5 minutos depois
Em 25/07/2020 às 11:10, Francielle Doff Sotta disse:

segue o código:  detalhe só pode ser em c++

 

Eu me lembrava disso mas depois fiquei confuso. Tem um enunciado mais preciso em relação às regras?

Postado

Li seu programa. Parece muito complicado assim. Minha sugestão é usar funções e arquivos para simplificar um pouco. Se não se lembra disso ou não estudou ainda sugiro o simples: estude isso em algum livro. Imagino que seu curso adote um. Se não adota é uma pena. E aí sugiro que você adote um. É importante. E algum site de referência. 

 

De volta ao programa


Escreva apenas a primeira fase. A cada fase vai ficar tudo mais fácil para você porque vai se acostumar com a mecânica da linguagem C e a mecânica do jogo. E ficará ais fácil de voltar atrás se o seu modelo pra o jogo não estiver bom.

 

Não entendi a progressão do jogo. Podia explicar melhor a primeira fase? 


Eis as regras de um modo mais compacto:


Num hotel os hospedes sao CAO, GATO, QUEIJO, OSSO e RATO

E a atribuicao dos quartos segue as seguintes regras:

    - O RATO nao pode ficar ao lado do GATO
    - O CAO nao pode ficar ao lado do OSSO
    - O GATO nao pode ficar ao lado do CAO
    - O QUEIJO nao pode ficar ao lado do rato

Legenda para os "hospedes" no Mapa:

G C R O Q com o significado esperado
Celulas com X representam quartos indisponiveis. 
Sao 5 fases sequenciais obrigatorias.

Acho que podia deixar isso como uma legenda pra ser mostrada com uma tecla. E preparar um desenho para o tabuleiro, no próprio IDE, antes de tentar programar.

 

  • Curtir 1
Postado
8 horas atrás, arfneto disse:

Li seu programa. Parece muito complicado assim. Minha sugestão é usar funções e arquivos para simplificar um pouco. Se não se lembra disso ou não estudou ainda sugiro o simples: estude isso em algum livro. Imagino que seu curso adote um. Se não adota é uma pena. E aí sugiro que você adote um. É importante. E algum site de referência. 

 

De volta ao programa


Escreva apenas a primeira fase. A cada fase vai ficar tudo mais fácil para você porque vai se acostumar com a mecânica da linguagem C e a mecânica do jogo. E ficará ais fácil de voltar atrás se o seu modelo pra o jogo não estiver bom.

 

Não entendi a progressão do jogo. Podia explicar melhor a primeira fase? 


Eis as regras de um modo mais compacto:


Num hotel os hospedes sao CAO, GATO, QUEIJO, OSSO e RATO

E a atribuicao dos quartos segue as seguintes regras:

    - O RATO nao pode ficar ao lado do GATO
    - O CAO nao pode ficar ao lado do OSSO
    - O GATO nao pode ficar ao lado do CAO
    - O QUEIJO nao pode ficar ao lado do rato

Legenda para os "hospedes" no Mapa:

G C R O Q com o significado esperado
Celulas com X representam quartos indisponiveis. 
Sao 5 fases sequenciais obrigatorias.

Acho que podia deixar isso como uma legenda pra ser mostrada com uma tecla. E preparar um desenho para o tabuleiro, no próprio IDE, antes de tentar programar.

 

Bom dia, vou lhe mandar o pedido do trabalho para ter uma noção melhor do jogo, segue em anexo.trabalho facul jogo.pdf

  • Curtir 1
Postado
9 horas atrás, arfneto disse:

Minha sugestão é usar funções e arquivos para simplificar um pouco. Se não se lembra disso ou não estudou ainda sugiro o simples: estude isso em algum livro. Imagino que seu curso adote um. Se não adota é uma pena. E aí sugiro que você adote um. É importante. E algum site de referência.

 

Entendeu isso? Você tem um livro?

 

9 horas atrás, arfneto disse:

Escreva apenas a primeira fase. A cada fase vai ficar tudo mais fácil para você porque vai se acostumar com a mecânica da linguagem C e a mecânica do jogo. E ficará ais fácil de voltar atrás se o seu modelo pra o jogo não estiver bom

 

Entendeu isso?

 

De volta ao programa:

 

A implementação é bem simples. Trata-se apenas de controlar o jogo e não do jogo em si. Deve se concentrar em 3 partes:

  • a representação dos quartos e atribuição dos hóspedes. A noção de "ao lado" parece envolver apenas esquerda e direita e não um quarto acima ou abaixo do outro. E o mapa é mínimo e muda de uma fase para outra. Então pode ser mais simples usar apenas uma lista de quartos. Deve escolher também uma maneira de mostrar o mapa na tela que seja legível.
     
  • a maneira de ler a opção do jogador. Pode usar scanf() e ler todos os valores de uma vez usando as letras da legenda mesmo. Ou ler linhas com fgets() e tratar o que veio. Ou mesmo ler letra a letra para cada caso.
     
  • uma maneira de conferir se uma configuração é legal ou não. Pode ser uma função como
    		int legal(Mapa* m, char fase);
    onde você passa o mapa e a fase e ela retorna 1 se tal mapa é legal --- não viola nenhuma regra
  • Curtir 1
Postado
16 minutos atrás, arfneto disse:

 

Entendeu isso? Você tem um livro?

 

 

Entendeu isso?

 

De volta ao programa:

 

A implementação é bem simples. Trata-se apenas de controlar o jogo e não do jogo em si. Deve se concentrar em 3 partes:

  • a representação dos quartos e atribuição dos hóspedes. A noção de "ao lado" parece envolver apenas esquerda e direita e não um quarto acima ou abaixo do outro. E o mapa é mínimo e muda de uma fase para outra. Então pode ser mais simples usar apenas uma lista de quartos. Deve escolher também uma maneira de mostrar o mapa na tela que seja legível.
     
  • a maneira de ler a opção do jogador. Pode usar scanf() e ler todos os valores de uma vez usando as letras da legenda mesmo. Ou ler linhas com fgets() e tratar o que veio. Ou mesmo ler letra a letra para cada caso.
     
  • uma maneira de conferir se uma configuração é legal ou não. Pode ser uma função como
    
    		int legal(Mapa* m, char fase);
    onde você passa o mapa e a fase e ela retorna 1 se tal mapa é legal --- não viola nenhuma regra

muito obrigada estou mexendo aqui e já deu certo esse laço de repetição, lhe agradeço muito pelas dicas.

  • Curtir 3
Postado

Seu programa já tem mais de 400 linhas e está bastante complicado. Notei também que tem apenas 4 linhas de comentário e nenhuma função. 

 

Nada disse sobre ter um livro

 

No programa temos matriz, matriz_quartos, vetor, vetor2, matriz_quartos_fase2, fase3, fase4 e fase5. Parece uma representação mais complicada que o necessário. E em torno de 40 loops for() para controlar o jogo. Espero que dê certo assim, mas pode ser um caminho mais difícil.

 

Exemplo
 

Essa estrutura fase[ ][ ] abaixo representa as 5 fases do jogo como descrito, usando um '-' para marcar "quartos" não existentes na fase, e acho que bastaria para controlar todo o jogo

char fase[5][8] =
{
    {   // fase 1
    'x', 'x', ' ', 'g',
    'r', ' ', 'x', 'x'
    },

    {   // fase 2
    ' ', 'x', 'x', 'x',
    'x', 'c', ' ', ' '
    },

    {   // fase 3
    ' ', 'x', 'x', ' ',
    ' ', ' ', '-', '-'
    },

    {   // fase 4
    ' ', ' ', ' ', 'x',
    'r', 'x', '-', '-'
    },

    {   // fase 5
    ' ', ' ', ' ', 'q',
    '-', '-', '-', '-'
    }
};

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!