3
respostas

Jogo Zumbi

Olá, tenho esse codigo aqui: https://gist.github.com/rtomazini42/c0ebc80ef96141f2cfd3bfc587ac3dff

Ele está funcionando bem, mas tem um detalhe que incomoda muito. As vezes os zumbis (2) passam por cima do 7 e deixam 0 no lugar. Só que eu já tenho um if tentando evitar isso. O que está errado?

3 respostas

No caso eu troquei break pra return mas continou com o problema:

antes

                        case 1:
                            if (tabuleiro[i][j+1] !=0 && tabuleiro[i][j+1] !=1 || (j+1) > 9 || tabuleiro[i][j+1] ==7){
                                //printf("Bateu em obstaculo, nao pode passar\n");
                                break;}

depois

                        case 1:
                            if (tabuleiro[i][j+1] !=0 && tabuleiro[i][j+1] !=1 || (j+1) > 9 || tabuleiro[i][j+1] ==7){
                                //printf("Bateu em obstaculo, nao pode passar\n");
                                return;}

Acho que você deveria fazer mais funções para uma organização melhor do projeto, como nos cases do move_zomb, assim pode consertar o problema mais facilmente, e produzir um while para ele escolher outra direção caso o rand der em um lugar que ele não pode ir, vou tentar reproduzir este problema e te ajudar com uma solução mais específica...

inverti e modifiquei os condicionadores para em vez de estarem no começo englobarem todo o código e só executarem caso o espaço esteja vazio ou com o personagem... Pelos meus testes deu certo, ficou assim:

                        case 0:
                            if ((tabuleiro[i][j-1] == 0 || tabuleiro[i][j-1] == 1) &&  (j-1) >= 0 ){
                                if (tabuleiro[i][j-1] == 1){
                                    if (arma > 0){
                                        printf("\n Matou um zumbi!!!\n\n");
                                        arma--;
                                            }
                                    else if (arma == 0){
                                    printf("\n Um Zumbi pegou voce, fim de jogo\n\n morreu!");
                                    cabo = 1;
                                    }
                                }
                                tabuleiro[i][j] = 0;
                                j = j - 1;
                                tabuleiro[i][j] = 2;
                                break;
                            }

                        case 1:
                            if ((tabuleiro[i][j+1] == 0 || tabuleiro[i][j+1] == 1) && (j+1) <= 9 ){

                                if (tabuleiro[i][j+1] == 1){
                                    if (arma > 0){
                                        printf("\n Matou um zumbi!!!\n\n");
                                        arma--;
                                            }
                                    else if (arma == 0){
                                    printf("\n Um Zumbi pegou voce, fim de jogo\n\n morreu!");
                                    cabo = 1;
                                    }
                                }
                                tabuleiro[i][j] = 0;
                                j = j + 1;
                                tabuleiro[i][j] = 2;
                                break;
                            }


                        case 2:
                            if ((tabuleiro[i+1][j] == 0 || tabuleiro[i+1][j] == 1) && (i+1) <= 9 ){

                                if (tabuleiro[i+1][j] == 1){
                                    if (arma > 0){
                                        printf("\n Matou um zumbi!!!\n\n");
                                        arma--;
                                            }
                                    else if (arma == 0){
                                    printf("\n Um Zumbi pegou voce, fim de jogo\n\n morreu!");
                                    cabo = 1;
                                    }
                                }


                                tabuleiro[i][j] = 0;
                                i = i + 1;
                                tabuleiro[i][j] = 2;
                                break;
                            }

                        case 3:
                            if ((tabuleiro[i-1][j] == 0 || tabuleiro[i-1][j] == 1) && (i-1) >= 0 ){

                                if (tabuleiro[i-1][j] == 1){
                                    if (arma > 0){
                                        printf("\n Matou um zumbi!!!\n\n");
                                        arma--;
                                            }
                                    else if (arma == 0){
                                    printf("\n Um Zumbi pegou voce, fim de jogo\n\n morreu!");
                                    cabo = 1;
                                    }
                                }
                                tabuleiro[i][j] = 0;

                                i = i - 1;
                                tabuleiro[i][j] = 2;
                                break;

                            }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software