Prévia do material em texto
BATALHA NAVAL um jogo feito a partir da lógica digital Freitas, Gabriel; Neves, João Victor; Ortega, LetíciaFreitas, Gabriel; Neves, João Victor; Ortega, Letícia UNIFESP - 2023 Apresentação O presente trabalho tem como fundamento apresentar de forma prática e detalhada como os circuitos digitais e as portas lógicas podem ser manipulados para o desenvolvimento de um jogo. Ao mergulharmos no fascinante mundo da tecnologia, descobriremos como é possível simular um jogo de batalha naval utilizando apenas portas lógicas. Durante esse projeto, seremos desafiados a explorar os fundamentos da lógica digital, compreendendo como portas lógicas se combinam para formar circuitos mais complexos. Através de um processo passo a passo, exploraremos como as aplicações das regras e dinâmica do jogo podem ser estabelecidas a partir da manipulação de portas lógicas. Ao finalizar essa experiência, teremos uma compreensão mais profunda dos princípios lógicos envolvidos no processo de design de circuitos e estrutura de jogos digitais. Ao manipular as portas lógicas e construir nosso próprio jogo de batalha naval, estaremos adquirindo habilidades práticas e conhecimentos valiosos para entender a lógica por trás de um dos jogos mais conhecidos de todos os tempos. Prepare-se para se aventurar em um mundo cheio de possibilidades e desafios estimulantes. Ao longo desta apostila, você será guiado passo a passo, fornecendo a base necessária para realizar esse projeto emocionante. Embarque conosco nessa jornada educativa e prática. Tenha em mãos sua curiosidade e vontade de aprender, pois juntos iremos explorar os intricados caminhos das portas lógicas e desvendar o funcionamento fascinante dos circuitos digitais. Sobre a batalha naval O jogo de batalha naval é um jogo de estratégia em que dois jogadores competem para afundar a frota do oponente. Cada jogador possui uma grade retangular, geralmente de tamanho 10x10, na qual eles posicionam seus navios. Antes de começar o jogo, os participantes colocam seus navios na grade de forma estratégica, sem que o oponente saiba a localização exata de cada um. Os navios assumem diferentes tamanhos, como um porta-aviões (geralmente ocupando 5 células), um encouraçado (ocupando 4 células), um submarino (3 células), um contratorpedeiro (3 células) e um barco de patrulha (2 células). Uma vez que os navios estão posicionados, os jogadores começam a se revezar para atacar. Cada jogador escolhe uma célula da grade do oponente para atacar, dizendo as coordenadas correspondentes. Se a célula estiver vazia, o ataque resulta em um "tiro na água". No entanto, se o ataque acertar uma parte de um navio inimigo, o jogador informa ao oponente que um navio foi atingido. O objetivo é afundar completamente todos os navios do oponente. Isso é feito atacando as células ao redor das partes já atingidas de um navio, a fim de descobrir sua orientação e posição exata. O jogador que conseguir afundar todos os navios do oponente primeiro é declarado vencedor. Mas então, como podemos implementar toda esta ideia e mecânica de jogo a circuitos digitais? ATENÇÃO! Antes de prosseguirmos com a explicação da lógica implementada para se desenvolver o circuito, é importante mencionar que os fundamentos BÁSICOS de circuitos digitais e de portas lógicas NÃO serão explicitamente aprofundados. O funcionamento das portas lógicas serão brevemente comentadas, porém, sem muita discussão. Portanto se você, leitor, ainda não domina os conceitos básicos de portas lógicas, como sobre o que são as portas AND, OR e IF, além de ideias primordiais sobre circuitos combinacionais e sequenciais, pare imediatamente! Literatura recomendada MAS NÃO SE DESESPERE! NÓS TEMOS A SOLUÇÃO PARA OS SEUS PROBLEMAS! Pensando em você, que pretende se aprofundar nos conceitos fundamentais de circuitos digitais e não sabe por onde começar, separamos algumas referências na literatura e em plataformas digitais que possam lhe auxiliar no aprendizado pleno deste campo de estudo! Livro: Sistemas Digitais - Circuitos Combinacionais e Sequenciais, por Francisco Gabriel Capuano, Editora Saraiva, 2014. Playlist: Aulas de Circuitos Digitais pelo youtube, apresentadas por Prof. Fábio Cappabianco, Ph. D. (ACESSE ATRAVÉS DO QRCODE AO LADO) QR Code com o link das aulas no youtube Figura: Livro Sistemas Digitais - Circuitos Combinacionais e Sequencionais Nós recomendamos, sobretudo, que ao se aprofundar nos ensinamentos desta apostila, você acompanhe paralelamente alguma das referências mencionadas! Torne seu estudo mais dinâmico e enriquecido desta forma. Voltando ao assunto... Como podemos implementar a ideia e mecânica de um jogo de batalha naval a circuitos digitais? Adaptando a ideia de grade aos circuitos digitais, cada participante terá acesso a uma mesma matriz de botões 4x4, que permitirá o posicionamento dos navios. Cada jogador terá a sua própria vez para fazer a jogada, controle este que é feito pelo switch correspondente de cada participante. O jogador 1, quando for estabelecer as posições de seus próprios navios deve, em primeiro lugar, habilitar o switch "Escolha Jogador 1", para conseguir registrar de fato que esta será sua disposição de embarcações. Ao finalizar a diagramação de suas posições, o jogador 1 deve desabilitar o switch "Escolha Jogador 1". Assim que o jogador 1 finaliza suas preparações, o jogador 2 deve prosseguir em habilitar o seu switch "Escolha Jogador 2" para conseguir estabelecer as posições de suas embarcações desta vez. Todo o processo mencionado para o jogador 1 se repete para o jogador 2. Para que os jogadores consigam enxergar as posições que de fato estão colocando suas peças, são implementadas duas matrizes 4x4 de LED's. Uma matriz corresponde às posições assumidas pelo jogador 1 naquela rodada, enquanto que a outra assume as posições feitas pelo jogador 2. A matriz à esquerda corresponde às posições adotadas pelo jogador 1 enquanto que a da direita correspondem ao do jogador 2. Interface do jogo No momento da montagem e organização de suas peças, o participante deve implementar seis peças no total, de três tipos. Cada jogador deve posicionar, em ordem: uma peça "Porta-avião", que ocupa 4 células em linha na matriz de LED's na cor azul; uma peça "Encouraçado", que ocupa 2 células na matriz de LED's na cor verde; e quatro peças de "Submarino", que ocupam apenas uma célula da matriz de LED's na cor vermelha. Cada botão na matriz de botões à esquerda, ao ser pressionado, corresponde a um LED aceso na matriz de LED's que ocupe a sua mesma posição. Ou seja, se pressiono o botão 01 da imagem abaixo, o LED L1 será aceso. Para estabelecer a peça "Porta-avião", por exemplo, foram pressionados os botões 04, 08, 12 e 16 para que os LED's L4, L8, L12 E L16 fossem acesos. Assim que todas as peças são posicionadas e o jogador desliga o switch de escolha correspondente à sua jogada, todos os LED's se apagam, escondendo a resposta referente à posição de seus navios. Estabelecidas as peças por parte de ambos os jogadores, a partida pode então de fato começar. Para que cada participante possa fazer os ataques ao arsenal de seu competidor, são implementados outras quatro novas matrizes 4x4. Duas matrizes são feitas de botões e pertencem individualmente uma para cada jogador, enquanto que as outras duas matrizes são compostas por LED's e também correspondem uma a cada jogador. Interface do jogo As duas matrizes de botões serão utilizadas para cada jogador executar os seus ataques às embarcações do oponente, selecionando um botão em alguma posição da matriz que acredite ter peças de embarcação. Já as duas matrizes de LED's terão suas células individualmente acesas caso o jogador selecione corretamente uma das posições na matriz que corresponde a uma posição ocupada por uma embarcação no diagrama de posições de seu competidor. Caso o jogador erre, o LED referente ao botão selecionado permanece apagado.Os jogadores saberão de quem é a vez de fazer o ataque através dos LED's "jogador 1" e "jogador 2". Caso o LED "jogador 1" esteja aceso, é porque é a vez do Jogador 1 fazer sua jogada e vice a versa. As jogadas de ambos os participantes serão feitas de forma intercalada, conforme indicarão os LED's "jogador 1" e "jogador 2", independentemente se houve um acerto ou erro. Caso um dos participantes pressione um botão para fazer sua jogada e o LED que corresponde à vez da jogada não mude para a vez do outro competidor, isso indica que aquela posição já foi selecionada anteriormente e deve-se escolher uma nova posição que ainda não foi computada, seja ela errada (LED apagado) ou correta (LED aceso), para assim passar a vez para o próximo jogador. Interface do jogo Assim, o jogo continua até que um dos participantes consiga bombardear todas as peças de seu oponente, acendendo todos os LED's referentes às posições originalmente propostas pelo seu adversário. Assim que todas as peças do oponente são destruídas, um novo LED apontando a vitória do jogador correspondente será aceso, seja o LED "VITORIA JOGADOR 1" ou "VITORIA JOGADOR 2". Ao final da partida, os participantes podem acionar o botão "Reset" para iniciarem um novo game. Interface do jogo Vitória jogador 1 Vitória jogador 2 A interface completa do jogo que acabamos de explicar pode ser vista nas imagens abaixo, em que uma está sem os fios de conexão visíveis enquanto que a outra consta com os fios. Sabemos que são muitos componentes e uma série de informações novas, mas não se preocupe! No tópico a seguir, explicaremos cada um dos componentes utilizados na projeção da interface do jogo que vemos acima. Não se esqueça de recorrer ao apoio literário que referenciamos mais cedo, caso surjam dúvidas! Interface do jogo Componentes Nesta seção, introduziremos os componentes utilizados em "boxes" ao longo do circuito utilizado para o projeto de batalha naval até então discutido. Dentre estes componentes, temos: Allow Gate Contador Escolha Trava Seletores Memória Muda 1. 2. 3. 4. 5. 6. 7. Componentes 1.Allow Gate Composto por pinos e botões associados a portas ANDs e um sistema de memória, em que o jogador apertará algum dos pinos para saber se acertou a posição da embarcação do adversário. Quando o jogador seleciona um dos pinos esse valor é armazenado em um Flip Flop D e em seguida, a partir da escolha da posição das embarcações do adversário que foram salvas na Memória e enviadas ao Allow Gate, esse jogador obtém a resposta se acertou ou não um dos pontos que o adversário escolheu. *Consultar Aula 16 - Flip-Flops do Prof. Cappabianco Componentes 2.Contador Essa componente tem a função de contar o número de acertos do jogador, em que se ele obtiver 10 acertos, será estabelecida a condição de vitória. O sistema é composto pelos dados dos botões apertados, esses dados são enviados para um contador composto por 4 flip flops JK que realizarão a contagem do número de acertos. Quando esse número em binário de 4 bits corresponder ao algarismo 10 decimal, será enviado a condição de vitória do jogador em questão. *Consultar Aula 18 - Contadores do Prof. Cappabianco Componentes 3.Escolha Essa componente representa um habilitador para cada jogador ter a vez certa de fazer suas escolhas, tendo um seletor que, ao habilitar a chave para um dos jogares iniciar, somente os LEDs da matriz deste irão acender com as devidas cores das embarcações. Além disso, dentro dessa componente, existe uma lógica composta por MUXs para permitir que todas as possibilidades de escolhas possam ser feitas. *Consultar Aulas 9, 10, 11, 12 e 13 do Prof. Cappabianco Componentes 4.Trava Assim como a componente Escolha, a Trava é um habilitador, mas dessa vez para a Memória, em que cada escolha de cada jogador é armazenada separadamente. A composição do seu sistema também é muito parecida com a da Escolha, sendo formada pelas entradas dos botões e uma lógica de MUXs para habilitar todas as possibilidades. *Consultar Aulas 9, 10, 11, 12 e 13 do Prof. Cappabianco Componentes 5.Seletores No início do jogo, cada jogador precisa escolher a posição de cada embarcação, primeiro a do Porta Aviões (4 espaços), depois o Encouraçado (2 espaços) e por último 4 Submarinos (1 espaço cada). Ao escolher esses espaços, os dados são enviados para essa componente, onde primeiramente cada botão selecionado é enviado para armazená-los em um flip flop. Conforme a sequência, os quatro primeiros botões serão associados a LEDs de cor azul para representar o Porta Aviões, os dois seguintes de cor verde para o Encouraçado e os quatro últimos de cor vermelha para os Submarinos. Além dos Flip Flops presentes, no sistema também há uma disposição de portas lógicas AND, OR e MUX. Componentes 5.Seletores Além dos Flip Flops presentes, no sistema também há uma disposição de portas lógicas AND, OR e MUX. *Consultar Aulas 4, 9, 10, 11, 12 e 13 do Prof. Cappabianco A memória é um componente relativamente simples. Assim que o jogador selecionado começar a posicionar a configuração de sua frota, através da matriz de botões superior, a memória será responsável por armazenar as informações de entrada nos flip-flops, além de possuir um botão "limpa", que funcionará como um Reset. A memória serve, portanto, para armazenar as posições estabelecidas por cada jogador, sobretudo na configuração inicial de cada jogador. Componentes 6.Memória *Consultar Aulas 9 e 16 do Prof. Cappabianco Componentes 7.Muda *Consultar Aulas 9 e 16 do Prof. Cappabianco O componente "Muda" é responsável por fazer a seleção de vez entre o "Jogador 1" e o "Jogador 2" no momento dos ataques na partida. A configuração de seu circuito proporciona numa mudança de valores entre 0 e 1. Com o uso das portas-lógicas XOR, essa mudança de valores proporciona uma saída verdadeira para a vez do jogador 1 e uma saída falsa para a vez do jogador 2 quando for a vez do jogador 1 fazer sua jogada e vice e versa quando for a vez do jogador 2 fazer a sua jogada. Apresentado todo o processo esquemático da montagem de nosso jogo de batalha naval, esperamos que todas as explicações e aventuras por dentro do funcionamento de circuitos digitais neste jogo de batalha naval tenham lhe proporcionado notas esclarecedoras sobre portas lógicas ou ao menos instigado sua curiosidade no assunto. Este projeto adotou uma série de conceitos fundamentais sobre circuitos digitais e os expandiu para uma aplicação divertida, porém nada simplória. O jogo de batalha naval pode ter sua análise expandida para aplicações em outros jogos que utilizam apenas portas lógicas, circuitos combinacionais e sequenciais para sua consolidação. Conclusões Está curioso para saber como ficou o funcionamento do circuito em uma partida de verdade? Tire foto do QR Code ao lado e acesse o vídeo de nosso circuito em ação! Link para o vídeo Disponibilizamos, também, outro QR Code que possui o link para o drive contendo o circuito e todos seus componentes utilizados neste projeto Link para o drive