Este repositório destina-se ao jogo de Tower Defense desenvolvido na unidade curricular “Laboratórios de Informática 1”.
Este jogo de Tower Defense desafia o jogador a defender a base de ondas de inimigos, usando torres para neutralizá-los. O utilizador tem a possibilidade de escolher o nível de dificuldade do jogo que pretende jogar e, quando este termina o jogo com sucesso além de ser registado num sistema de proezas tal conquista o utilizador é desafiado a avançar para um nível seguinte.
A interface inicial do jogo apresenta uma disposição apelativa de menus e opções, com o botão “Start” em destaque, direcionando o jogador para o menu de seleção de níveis previamente descrito. No lado direito da tela, encontram-se as secções dedicadas às conquistas e proezas, às regras e instruções do jogo, além dos créditos, onda consta a menção aos desenvolvedores do jogo.
O mapa é uma das bases do Tower Defense, sendo esta uma grelha constituída por três tipos de terrenos distintos, sendo eles a terra, a água e a relva. Além do mapa, elementos como torres, bases e portais são fundamentais para a estrutura do jogo.
As torres, colocadas sobre a relva, disparam automaticamente projéteis que causam dano ou aplicam efeitos como gelo (imobilizando os inimigos), fogo (dano contínuo ao inimigo) e resina (reduz a velocidade do inimigo). É de salientar que os projéteis podem ter efeitos combinados, os quais são designados por sinergias.
Os inimigos seguem trajetórias definidas ou seja deslocam-se sempre sobre posições de terra, salvaguardando-se o facto de que este caminha para a base. Durante o jogo, o jogador deparar-se-á com uma barra, localizada em cima de cada inimigo, de modo a que o utilizador saiba a vida do mesmo. Quando este é atingido por um projétil, a barra fica com a cor do mesmo. No decorrer do jogo, o jogador compra torres com créditos ganhos ao eliminar inimigos. Os créditos referidos são atualizados constantemente e são visíveis durante o jogo, bem como a vida da base.
Os portais de um Tower Defense são os pontos de entrada no mapa dos inimigos, surgindo e começando desta maneira o seu percurso em direção à base do jogador. Para que estes inimigos surjam são lançadas pelos portais ondas, cada uma composta por um grupo de inimigos que são libertados em intervalos regulares. O funcionamento dos portais é essencial para o ritmo do jogo, criando desafios constantes que o jogador precisa de enfrentar e superar.
Durante o jogo, o jogador utilizará o teclado para executar ações como a aquisição de torres, reinicialização do jogo e pausa.
- Para pausar o jogo, o jogador deve pressionar a tecla 'p' (de "pausar").
- Para adquirir uma torre, o jogador deve pressionar inicialmente a tecla 'c' (de "comprar"), momento em que um círculo amarelo é exibido no canto superior esquerdo. Esse círculo indica a posição proposta para a colocação da torre. O jogador deve utilizar as teclas direcionais para mover o círculo amarelo pelo mapa e escolher a localização desejada. Para concluir a compra de uma torre, o jogador deve pressionar uma das teclas numéricas, onde cada número corresponde a uma torre específica. Caso o jogador não possua créditos suficientes para a transação, o círculo mudará de amarelo para vermelho, indicando a impossibilidade de prosseguir com a compra.
- Para reiniciar o jogo, voltando ao ínicio do nível que se encontra, o jogador deve pressionar a tecla 'r' (de "reiniciar").
No contexto da estrutura do jogo, particularmente no que diz respeito à conclusão do nível, a vitória é obtida quando o jogador consegue eliminar todos os adversários, assegurando a defesa integral da base. Por sua vez, a derrota ocorre com a destruição da base pelas forças inimigas. Este documento apresenta todas as informações cruciais e necessárias para uma visão aprofundada da dinâmica e dos objetivos do jogo, garantindo que o jogador disponha de uma base sólida para tirar o máximo partido da experiência interativa.
Made with ❤️ by Diogo Azevedo & Vera Almeida
This repository is intended for the Tower Defense game developed as part of the academic course ‘Software Labs 1’.
The game's objective is to defend the base from waves of enemies using towers to neutralize them. Players can choose the difficulty level of the game they want to play. If they complete the game successfully, they will be registered in a system of achievements and be challenged to advance to the next level.
The game's initial interface is designed to be intuitive, featuring a well-organized arrangement of menus and options, with the prominent "Start" button directing the player to the level selection menu. On the right side of the screen, there are dedicated sections for achievements and feats, the game's rules and instructions, and the credits, which include a mention of the game's developers.
The map constitutes one of the fundamental components of Tower Defense, manifesting as a grid comprising three distinct terrain types: land, water, and grass. In addition to the map, elements such as towers, bases, and portals are instrumental in shaping the game's structure. Turrets, positioned on the grassy terrain, automatically discharge projectiles that inflict damage or implement effects such as ice, immobilizing enemies, fire, inflicting continuous damage to the enemy, and resin, which impedes the enemy's speed. Of particular note are the projectiles' potential synergies, whereby the combination of projectiles can result in more potent effects than the mere summation of their individual effects.
The antagonists follow predetermined trajectories, which means that they invariably move along predetermined paths, ensuring that they are heading towards the base. As the game progresses, the player will encounter a bar positioned above each enemy, thereby providing the user with a visual indication of their health status. In the event of being struck by a projectile, the bar undergoes a color change. As the game progresses, the player acquires credits through the elimination of enemies, which can then be utilized to purchase towers. The credits mentioned are constantly updated and remain visible during gameplay, as is the base's health.
The portals within a Tower Defense serve as the entry points for enemies, who materialize and commence their journey toward the player's base. The generation of these waves is initiated through the deployment of portals, each constituting a group of enemies that are released at regular intervals. The functioning of the portals is essential to the game's pace, creating constant challenges that the player must face and overcome.
During gameplay, the keyboard is employed for actions such as acquiring towers, restarting the game, and pausing the game.
- To initiate a pause in the game, the player must press the 'p' key, which is designated for the purpose of pausing the game.
- The player must first press the 'c' key (for "buy") to purchase a tower, at which point a yellow circle will appear in the top left corner. This circle indicates the proposed position for placing the tower. The player must then utilize the directional keys to maneuver the yellow circle across the map and select the desired location. To finalize the tower purchase, the player must press a number key corresponding to the desired tower. In the event that the player lacks the necessary credits to complete the transaction, the circle transitions from yellow to red, signifying that proceeding with the purchase is unfeasible.
- To restart the game and return to the beginning of the current level, the player must press the "r" key, which is designated as "restart."
Within the game's structural framework, particularly with respect to the completion of levels, victory is attained when the player successfully eliminates all opponents, thereby ensuring the comprehensive defense of the base. Conversely, defeat is marked by the destruction of the base by enemy forces. This document presents all the crucial information necessary for an in-depth look at the game's dynamics and objectives, ensuring that the player has a solid foundation to make the most of the interactive experience.
Made with ❤️ by Diogo Azevedo & Vera Almeida
[PT] Pode compilar e executar o programa através dos comandos build
e run
do Cabal.
[EN] You can compile and run the program using Cabal's build
and run
commands.
cabal run --verbose=0
[PT] Para abrir o interpretador do Haskell (GHCi) com o projeto carregado, utilize o comando repl
do Cabal.
[EN] To open the Haskell interpreter (GHCi) with the project loaded, use the Cabal repl
command.
cabal repl
[PT] O projecto utiliza a biblioteca HUnit para fazer testes unitários.
[EN] The project uses the HUnit library to perform unit testing.
[PT] Execute os testes com o comando test
do Cabal e utilize a flag --enable-coverage
para gerar um relatório de cobertura de testes.
[EN] Run the tests with the Cabal test
command and use the --enable-coverage
flag to generate a test coverage report.
cabal test --enable-coverage
[PT] Execute os exemplos da documentação como testes com a biblioteca doctest
. Para instalar o executável utilize o comando cabal install doctest
.
[EN] Run the documentation examples as tests against the library doctest
. To install the executable use the command cabal install doctest
.
cabal repl --build-depends=QuickCheck,doctest --with-ghc=doctest --verbose=0
[PT] A documentação do projeto pode ser gerada recorrendo ao Haddock.
[EN] Project documentation can be generated using Haddock.
cabal haddock
[PT] A criação de imagens para um jogo é um processo exigente que requer criatividade e precisão. Desde os primeiros esboços até à versão final, cada elemento é cuidadosamente desenvolvido para proporcionar uma melhor experiência ao utilizador.
[EN] Creating images for a game is a demanding process that requires creativity and precision. From the first sketches to the final version, each element is carefully developed to provide a better user experience.
[PT] Desenvolvido com recurso a tecnologias como o 'Canva'.
[EN] Developed using technologies such as 'Canva'.
[PT] Desenvolvido com recurso a tecnologias como o 'Canva'.
[EN] Developed using technologies such as 'Canva'.
[PT] Desenvolvido com recurso a tecnologias como o 'Canva'.
[EN] Developed using technologies such as 'Canva'.
[PT] Desenvolvido com recurso a tecnologias como o 'Canva'.
[EN] Developed using technologies such as 'Canva'.
[PT] Desenvolvido com recurso a tecnologias como o 'Canva'.
[EN] Developed using technologies such as 'Canva'.
[PT] Desenvolvido com recurso a tecnologias como o 'Canva' e tecnologia da própria biblioteca Gloss.
[EN] Developed using technologies such as 'Canva' and technology from the Gloss library itself.
[PT] Desenvolvido com recurso a tecnologias como o 'Canva' e tecnologia da própria biblioteca Gloss.
[EN] Developed using technologies such as 'Canva' and technology from the Gloss library itself.
[PT] Desenvolvido com recurso a tecnologias como o 'Canva'.
[EN] Developed using technologies such as 'Canva'.