terça-feira, 8 de maio de 2012

Simulador de aeronave - simples

Olá pessoal, abaixo postei o código do exercício 10 da lista de estruturas de dados compostas:

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

void _imprimeRota(char m[7][9]);

int main()
{
    int i, j, parar, linhaAtual, colunaAtual;

    parar = 1;
    linhaAtual = 5;
    colunaAtual = 1;

    char m[7][9] = {
        {'#','#','#','#','#','#','#','#','#'},
        {'#',' ',' ','#',' ',' ',' ','F','#'},
        {'#',' ',' ',' ',' ',' ','#',' ','#'},
        {'#','#',' ','#',' ',' ','#',' ','#'},
        {'#',' ',' ',' ',' ',' ',' ',' ','#'},
        {'#','I',' ',' ',' ','#',' ',' ','#'},
        {'#','#','#','#','#','#','#','#','#'},
    };

    _imprimeRota(m);

    do {
        printf("\nInforme as cordenadas que deseja sobrevoar [linha, coluna]:\n");
        scanf("%d%d", &i, &j);

        i--;
        j--;

        linhaAtual = linhaAtual - i;
        colunaAtual = j - colunaAtual;

        if((i > 7 || j > 9) || (i < 0 || j < 0))
            printf("\nEssa cordenada não é válida!\n");
        else if(linhaAtual > 1 || colunaAtual > 1)
            printf("\nEssa coordenada não segue uma rota!\n");
        else if(m[i][j] == '#') {
            system("clear");
            parar = 0;
            printf("\nO avião colidiu com um obstáculo!\n");
            m[i][j] = 'C';
        } else if(m[i][j] == 'F') {
            system("clear");
            parar = 0;
            printf("\nVocê chegou ao seu destino!\n");
        } else if(m[i][j] == 'I') {
            linhaAtual = i;
            colunaAtual = j;
            _imprimeRota(m);
            printf("\nVocê está no ponto de partida!\n");
        } else {
            m[i][j] = 'A';
            linhaAtual = i;
            colunaAtual = j;
            _imprimeRota(m);
        }

    }while(parar == 1);

    printf("\n\t\tEXIBINDO A ROTA FEITA PELA AERONAVE: \n\n");

    _imprimeRota(m);

    printf("\nLEGENDA:\n - A: [Por onde a aeronave passou]\n - C: [ponto de colisão]\n");

    return 0;
}

void _imprimeRota(char m[7][9]) {
    int i, j;

    for(i = 0; i < 7; i++) {
        for(j = 0; j < 9; j++) {
            printf("%c\t", m[i][j]);
        }
        printf("\n");
    }
}

Se você usa o sistema operacional Windows, substitua todos os system("clear") por system("cls").

Qualquer dúvida só postar um comentário... liberei os comentários anônimos :)

3 comentários:

Novidade!!! Agora vamos ter canal no Youtube =D

Fala pessoal tudo beleza, estou sumido a correria está forte por aqui. Estou querendo dar um start em um projeto antigo que vem desde o temp...