Ir ao conteúdo
  • Cadastre-se

C Teclas W A S D (S e D nao funcionam!!!)


Evelyn Soares
Ir à solução Resolvido por MassakiMsk,

Posts recomendados

Então gente, to fazendo um jogo e o personagem tem que se movimentar por uma matriz usando W A S D, só que com o S e D, ele vai pro final da matriz (S -ele vai totalmente pra baixo  e D- ele vai totalmente pra direita).

Eu to basicamente fazendo matriz[y-1][x] pra mover pra cima e mapa[y][x-1] pra mover pra esquerda, só não funciona quando eu somo!!! (ex: mapa[y+1][x])


void movimentoC(){
    char movimento;
    int x, y;

    movimento = getch();

    for(y = 0; y < altura; y++){
        for (x = 0; x < largura; x++){
            if ((mapa[y][x] == JOGADOR) && (mapa[y][x-1] == '.' || mapa[y][x-1] == ITEM) && (movimento == 'a' || movimento == 'A')) {
                if (mapa[y][x-1] == ITEM){
                    pontos += VALOR_O;
                }        
                mapa[y][x] = '.';
                mapa[y][x-1] = JOGADOR;    
            }
            if ((mapa[y][x] == JOGADOR) && (mapa[y][x+1] == '.' || mapa[y][x+1] == ITEM) && (movimento == 'd' || movimento == 'D')){
                if (mapa[y][x+1] == ITEM){
                    pontos += VALOR_O;
                }        
                mapa[y][x] = '.';
                mapa[y][x+1] = JOGADOR;    
            }
            if ((mapa[y][x] == JOGADOR) && (mapa[y+1][x] == '.' || mapa[y+1][x] == ITEM) && (movimento == 's' || movimento == 'S')){
                if (mapa[y+1][x] == ITEM){
                    pontos += VALOR_O;
                }        
                mapa[y][x] = '.';
                mapa[y+1][x] = JOGADOR;    
            }
            if ((mapa[y][x] == JOGADOR) && (mapa[y-1][x] == '.' || mapa[y-1][x] == ITEM) && (movimento == 'w' || movimento == 'W')){
                if (mapa[y-1][x] == ITEM){
                    pontos += VALOR_O;
                }        
                mapa[y][x] = '.';
                mapa[y-1][x] = JOGADOR;    
            }
        }
    }
    jogadas--;
}

Link para o comentário
Compartilhar em outros sites

  • Solução

é por que você está trocando a posição do jogador e mesmo assim continua verificando as outras posições x;y

Pode resolver isso saindo do loop quando trocar a posição do jogador. Pode usar uma flag ou simplesmente fazer:

Citação

y = altura;

x = largura;

 

Link para o comentário
Compartilhar em outros sites

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