Ir ao conteúdo

Posts recomendados

Postado

Eu tenho uma duvida de como posso finalizar meu programa quando o # do meu jogo estiver em cima do X se alguem pode me ajudar??


 

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


#define L 10
#define C 20


int main()
{

    ///ALERTA: NÃO MODIFICAR O TRECHO DE CÓDIGO, A SEGUIR.
        //INICIO: COMANDOS PARA QUE O CURSOR NÃO FIQUE PISCANDO NA TELA
        HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
        CONSOLE_CURSOR_INFO     cursorInfo;
        GetConsoleCursorInfo(out, &cursorInfo);
        cursorInfo.bVisible = false; // set the cursor visibility
        SetConsoleCursorInfo(out, &cursorInfo);
        //FIM: COMANDOS PARA QUE O CURSOR NÃO FIQUE PISCANDO NA TELA
        //INÍCIO: COMANDOS PARA REPOSICIONAR O CURSOR NO INÍCIO DA TELA
        short int CX=0, CY=0;
        COORD coord;
        coord.X = CX;
        coord.Y = CY;
        //FIM: COMANDOS PARA REPOSICIONAR O CURSOR NO INÍCIO DA TELA
    ///ALERTA: NÃO MODIFICAR O TRECHO DE CÓDIGO, ACIMA.


    //Posição inicial do personagem no console
    int x=5, y=3;
    // Posição inicial da caixa no console
    int n=2,m=2;
    // Posição inicial do final no console
    int v=8,b=18;

    //Variável para recla precionada
    char tecla;
    //Coordenadas para impressão na tela
    int i,j;

    while(1){

        ///Imprime o jogo: mapa e personagem.
        i=0;
        while (i<L) {
            j=0;
            while (j<C) {
                if (x==i && y==j){
                    printf("$");
                    }
                    else if (i==0 || i==L-1 || j==0 || j==C-1){
                    printf("°");
                }else if(n==i&& m==j){
                    printf("#");
                }
                else if(v==i&& b==j){
                    printf("X");
                }

                 else{
                     printf(" ");
                }
                j++;
            }
            printf("\n");
            i++;
        }


         if ( _kbhit() ){
            tecla = getch();
            switch(tecla)
            {
                case 'w': ///cima
                    x--;
                     if (x==n && y==m)
                    {
                      n--;

                    }

                break;
                case 's': ///baixo
                    x++;
                       if (x==n && y==m)
                    {
                        n++;
                    }

                break;
                case 'a': ///esquerda
                    y--;
                    if (x==n && y==m)
                    {
                        m--;
                    }
                break;
                case 'd': ///direita
                    y++;
                    if (x==n && y==m)
                    {
                        m++;
                    }
                break;
            }
         }


        if (n==0 && x==1)// NAO DEIXA O JOGADOR E A CAIXA SAIR PARA CIMA
        {
            n++;
            x++;
        }
             if (n==9 && x==8)// NAO DEIXA O JOGADOR E A CAIXA SAIR PARA BAIXO
        {
            n--;
            x--;
        }
              if (m==19 && y==18)// NAO DEIXA O JOGADOR E A CAIXA SAIR PARA DIREITA
        {
            m--;
            y--;
        }
        if (m==0 && y==1)// NAO DEIXA O JOGADOR E A CAIXA SAIR PARA ESQUERDA
        {
            m++;
            y++;
        }
        if(x==0) // NAO DEIXA O JOGADOR SAIR PARA CIMA
        {
            x++;
        }
         if(x==9)// NAO DEIXA O JOGADOR SAIR PARA BAIXO
        {
            x--;
        }
            if(y==0)// NAO DEIXA O JOGADOR SAIR PARA ESQUERDA
        {
            y++;
        }
        if(y==19)// NAO DEIXA O JOGADOR SAIR PARA DIREITA
        {
            y--;
        }

    printf("X %d Y %d n %d m %d", x,y,n,m);

        if (n==8 && m==18)
        {
            printf("vitoria");
            break;

            return 0;
        }

        /**
            Recoloca o mapa no inicio da tela,
            isso faz com que o jogo seja escrito sempre no mesmo lugar.
        */
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    }

    return 0;
}

 

Postado

eu gostaria porém a professora mandou usar o codigo da forma que veio,

·         O personagem deve ser capaz de se movimentar em todas as direções.

·         O personagem deve poder empurrar uma caixa e movimentá-la pelo cenário em todas as direções.

·         O personagem e a caixa não podem sair do mapa.

·       (  Quando a caixa for colocada no local designado no mapa o jogo deve terminar.)

·         Quando o jogo terminar, deve ser exibida uma mensagem de “Vitória” na tela.

·         Não é permitido utilizar variáveis globais.

Postado

entendi sua forma, porém eu nao posso fazer assim pois tenho que continuar o programa que a professora mandou, seria uma forma dela garantir que nao foi pego da internet .

eu recebi o programa assim dela:

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

#define L 10
#define C 20


int main()
{
    ///ALERTA: NÃO MODIFICAR O TRECHO DE CÓDIGO, A SEGUIR.
        //INICIO: COMANDOS PARA QUE O CURSOR NÃO FIQUE PISCANDO NA TELA
        HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE);
        CONSOLE_CURSOR_INFO     cursorInfo;
        GetConsoleCursorInfo(out, &cursorInfo);
        cursorInfo.bVisible = false; // set the cursor visibility
        SetConsoleCursorInfo(out, &cursorInfo);
        //FIM: COMANDOS PARA QUE O CURSOR NÃO FIQUE PISCANDO NA TELA
        //INÍCIO: COMANDOS PARA REPOSICIONAR O CURSOR NO INÍCIO DA TELA
        short int CX=0, CY=0;
        COORD coord;
        coord.X = CX;
        coord.Y = CY;
        //FIM: COMANDOS PARA REPOSICIONAR O CURSOR NO INÍCIO DA TELA
    ///ALERTA: NÃO MODIFICAR O TRECHO DE CÓDIGO, ACIMA.


    //Posição inicial do personagem no console
    int x=3, y=3;
    //Variável para recla precionada
    char tecla;
    //Coordenadas para impressão na tela
    int i,j;

    while(1){

        ///Imprime o jogo: mapa e personagem.
        i=0;
        while (i<L) {
            j=0;
            while (j<C) {
                if (x==i && y==j){
                    printf("*");
                } else if (i==0 || i==L-1 || j==0 || j==C-1){
                    printf("°");
                } else {
                     printf(" ");
                }
                j++;
            }
            printf("\n");
            i++;
        }


         if ( _kbhit() ){
            tecla = getch();
            switch(tecla)
            {
                case 'w': ///cima
                    x--;
                break;
                case 's': ///baixo
                    x++;
                break;
                case 'a': ///esquerda
                    y--;
                break;
                case 'd': ///direita
                    y++;
                break;
            }
         }

        /**
            Recoloca o mapa no inicio da tela,
            isso faz com que o jogo seja escrito sempre no mesmo lugar.
        */
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    }


    return 0;
}
 

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!