Alura > Cursos de Programação > Cursos de C e C++ > Conteúdos de C e C++ > Primeiras aulas do curso C: recursos avançados da linguagem

C: recursos avançados da linguagem

Matrizes - Introdução

Olá! Boas-vindas ao nosso Curso de C. Assim como os anteriores, aqui também implementaremos um jogo, e este será muito desafiador.

O jogo se chama "Foge-foge" e é um derivado do Pac-man, ou seja, um monstrinho no mapa deve sair correndo atrás de pílulas e fantasmas. Para implementarmos esse jogo temos um grade desafio pela frente, pois devemos escrever muitos algoritmos, como por exemplo o de movimento do personagem e outro de perseguição dos fantasmas. Além disso, aprenderemos mais sobre matrizes, structs, funções recursivas e até mesmo diretivas de compilação.

No final do curso teremos um jogo visualmente bonito para a pessoa usuária final. Você está pronto para este desafio? Então, vamos começar!

Matrizes - Entendendo as matrizes

O primeiro passo para a implementação do Foge-Foge é pensar no mapa que nosso herói andará. Nele, precisamos representar tudo o que pode existir por lá, como paredes, monstros, o próprio herói, e lugares pela qual ele pode passar.

Podemos representar um mapa por meio de várias linhas e colunas. E, em cada posição, teríamos um caractere que representaria o que tem ali. Veja o exemplo do mapa abaixo, onde o ponto (.) significa "caminho livre", o arroba (@) representa nosso herói e os caracteres | e - representam paredes:

  0123456789
0 |--------|
1 |...|..-.|
2 |..-|.@..|
3 |......-.|
4 |--------|

Nosso herói que está na linha 2, coluna 6, pode andar para esquerda, direita, cima ou baixo. Mas não pode andar duas vezes seguidas para a esquerda, por exemplo, pois há uma parede ali.

Podemos representar cada linha desse mapa por meio de um array de caracteres. Como cada linha tem 10 posições, um array de 10 posições resolveria. E como temos 5 linhas, precisamos de 5 desses arrays para representar todo o mapa:

char linha1[10];
char linha2[10];
char linha3[10];
char linha4[10];
char linha5[10];

Claramente essa não é uma boa solução. Imagine se tivéssemos um mapa com 50 linhas? Precisaríamos ter 50 variáveis dessas. E manipulá-las não seria fácil. A solução para isso é deixar de usar vetores e passar a usar matrizes. Matrizes, assim como na matemática, é uma estrutura retangular de dados, ou seja, nosso "linhas e colunas".

Se quisermos uma matriz de caracteres de 5x10, declaramos uma variável para tal. Para declararmos matrizes em C, basta repetirmos duas vezes o conjunto de [], um para linhas e outro para colunas, respectivamente:

char mapa[5][10];

Acessar e alterar valores das posições é análogo ao uso de vetores, com a diferença que agora passamos ambas as posições:

// armazenando na posicao 0x0
mapa[0][0] = '|';

// imprimindo a posição 2x3
printf("%c", mapa[2][3]);

Matrizes - Salvando e lendo dados de uma matriz

Para que nosso jogo fique interessante, vamos lê-lo de um arquivo. Nosso programa deve ler linha a linha e salvá-las na matriz mapa. Vamos começar abrindo o arquivo, do jeito que já conhecemos:

FILE* f;

f = fopen("mapa.txt", "r");
if(f == 0) {
    printf("Erro na leitura do mapa");
    exit(1);
}

Agora precisamos mudar a declaração do nosso mapa. Apesar do mapa acima ter 10 caracteres na linha, precisamos lembrar que quando usarmos o fscanf(), passando uma string como máscara, ele colocará um \n ao final. Podemos também usar as funções de leitura que vimos no final do capítulo de I/O, como a fread(), e ler byte a byte, mas isso nos daria um trabalho desnecessário. Vamos declarar o array com uma posição a mais em cada linha, apenas para guardar o enter:

char mapa[5][10+1];

Com isso em mãos, podemos agora fazer o loop para capturar as linhas do arquivo. Apontamos mapa[i] como o lugar onde os caracteres devem ser colocados:

for(int i = 0; i < 5; i++) {
    fscanf(f, "%s", mapa[i]);
}

Podemos imprimir o mapa, de maneira simples por enquanto:

for(int i = 0; i < 5; i++) {
    printf("%s\n", mapa[i]);
}

Por fim, precisamos fechar o arquivo:

fclose(f);

Pronto. Já estamos lendo a matriz de mapa de um arquivo. Mas podemos melhorar ainda mais.

Sobre o curso C: recursos avançados da linguagem

O curso C: recursos avançados da linguagem possui 154 minutos de vídeos, em um total de 52 atividades. Gostou? Conheça nossos outros cursos de C e C++ em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda C e C++ acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
por
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

Matricule-se

Pro

De
R$ 2.400
por
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, a inteligência artificial da Alura

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

Matricule-se

Ultra

12X
R$209
à vista R$2.508
  • Acesso a TODOS os cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, com mensagens ILIMITADAS

    Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.

  • Luri Vision, a IA que enxerga suas dúvidas

    Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

  • 6 Ebooks da Casa do Código

    Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas