Primeiras aulas do curso Ruby III: Mais lógica de programação em um novo jogo

Ruby III: Mais lógica de programação em um novo jogo

Lidando com arrays - Introdução

Nesse curso, vamos desenvolver um projeto, um jogo, baseado no Pac-man, em que nosso herói foge dos fantasmas. Foge foge vai ser o nome. Preciso criar o código base e depois o mapa.

Primeiro vou criar o arquivo, que vai ter boas-vindas. Mostramos uma mensagem, lemos o nome do jogador, imprimimos algumas linhas em branco, e dizemos que vamos começar o jogo. Esse cara é a interface com o usuário.

Se vamos dar boas-vindas, precisamos da lógica que chama boas-vindas, que joga o jogo, etc. Então vamos criar o arquivo .rb, que vai ser relativo ao ui, vai ter a função joga, que recebe o nome, implementamos o jogo, e iniciamos o foge foge. Faltou criar o main.rb, que é o ponto inicial do jogo. O main vai dar um require_relative foge foge e chamar o inicia_fogefoge.

Precisamos criar o mapa, uma estrutura para ele. Todos eles vão ter uma linha, outra linha, uma coluna, outra coluna. Um grid. Nos jogos tradicionais, temos um grid com um número de linhas e número de colunas, sendo que nosso personagem pode estar em cada um dos quadrados. Por exemplo, posso criar um mapa 4x4, com casinhas vazias.

Queremos representar nesse mapa muros, então vou colocar um muro. Vou usar a letra X para representar. Tenho um mapa 4x4, com quatro linhas, quatro colunas, sendo que nas beiradas é tudo muro. Um personagem não consegue sair de lá dentro.

Agora, preciso representar meu herói. Vou representar com a letra H. E o fantasma vai ser F. Mas esse mapa parece sem graça demais. Vamos aumentar. Vai ser o mapa1. Ele tem dez linhas, cinco colunas. Tenho espaço para o herói e para o fantasma andar.

Teremos também um segundo mapa. Ele vai ter treze linhas e nove colunas. Vai ser o mapa2, com dois fantasmas. Quanto mais complicado o mapa, mais lógica vamos ter que escrever e mais bugs vamos ter, com certeza. Mas quanto mais corrigirmos, mais vamos aprender lógica de programação.

Lidando com arrays - Lendo mapas

Agora que já definimos a estrutura de um mapa, seja o mapa1 ou o mapa2, vamos lê-lo. Vamos ter uma lógica de negócios que se chamar lê mapa. Recebe o número do mapa, o nome do arquivo, lembrando sempre de extrair as strings para dizer alguma coisa. Vamos ler o arquivo dentro dele. O nosso mapa é o texto e quebra nas \n. É isso que vamos fazer. Estou quebrando meus \n e devolvendo um array de strings.

Muito cuidado com interpelação de string. Muitas vezes usamos sem dó e fica difícil entender o que a string quer dizer. Aqui fica bem claro se eu disser que esse cara é um arquivo. Extraia a variável sem medo. Fica bem mais legível no nosso código.

Quando vamos jogar, primeiro lemos o mapa. Começamos com o mapa1, mais divertido. Vamos ter que rodar um laço eterno. Enquanto for verdadeiro, vamos desenhar o mapa. Mas isso é interface com o usuário. Desenhamos o mapa com o puts mapa.

Agora quero pedir para o usuário para onde ele deseja ir. Isso é, a direção que você deseja ir é o pede movimento. Ela vai perguntar para onde deseja ir. Lemos o movimento e devolvemos para a função que invocou essa direção. Rodamos de novo para desenhar o mapa.

Ele não achou o desenha, porque eu tinha escrito errado. Tentando de novo, funciona bonitinho. Temos que implementar agora a lógica de negócio do nosso jogo. Por enquanto fomos capazes de ler o jogo e mostrar para o nosso jogador onde ele deseja ir.

Em programação, quando estamos usando uma array de arrays, com mais de uma dimensão, costumamos chamar de matriz. Na computação é comum usar o termo matriz quando temos mais de uma dimensão. E chamar uma única dimensão de vetor. Apesar de que na matemática poderíamos chamar o vetor de duas dimensões, podemos falar que a matriz tem uma dimensão. O conceito matemático por trás é usado com outro sentido. Para nós, chamamos tudo de array, e é comum usar a palavra vetor quando tem duas ou mais dimensões, usar a palavra matriz.

Esse é o uso corriqueiro dos dois termos na programação. Na matemática é diferente. Não se preocupe. Aqui estamos preocupados com outras coisas.

Lidando com arrays - Movimento

Agora que já temos o mapa, queremos movimentar nosso jogador. Toda vez que pedimos um movimento, queremos pegar o jogador, nosso herói naquela posição específica e mover ele para alguma direção. Mas se quero pegar o herói numa posição específica, cadê ele? Tenho que encontrar o jogador. Vamos escrever uma função de lógica que se chama def encontra o jogador dado o mapa.

Se eu quero procurar o jogador dentro do mapa, vou fazer um for. Em que linha ele está? Vai do zero até mapa.size menos um. Se o mapa nessa linha incluir o belíssimo H, ele está ali dentro. Se ele está nessa linha, tenho que procurar em que coluna? Vou fazer um for coluna vai do zero até o mapa linha.size menos um. Se o mapa nessa linha e nessa coluna for igual a H, aí sim achei a posição. Se não chegar, não achei.

Sobre o curso Ruby III: Mais lógica de programação em um novo jogo

O curso Ruby III: Mais lógica de programação em um novo jogo possui 196 minutos de vídeos, em um total de 64 atividades. Gostou? Conheça nossos outros cursos de Ruby & Rails 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 Ruby & Rails acessando integralmente esse e outros cursos, comece hoje!

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1247 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas