Giter Site home page Giter Site logo

iac-project's Introduction

Introdução à Arquitetura de Computadores - Projeto

Chuva de meteoros - Objetivos

Este projeto pretende exercitar os fundamentos da área de Arquitetura de Computadores, nomeadamente a programação em linguagem assembly , os periféricos e as interrupções.

O objetivo deste projeto consiste em concretizar um jogo de simulação de um rover a defender o planeta X, que deve obter energia de meteoros bons e destruir meteoros maus, que não são mais do que naves robô enviadas para invadir o planeta. A interface consiste num ecrã, um teclado para controlo do jogo e um conjunto de displays, para mostrar a energia do rover.

O módulo MediaCenter do simulador possui variadas capacidades multimédia, permitindo definir imagens de fundo, reproduzir sons e vídeos, vários planos de imagens construídas pixel a pixel, um cenário frontal para letreiros, etc. O guião de laboratório 4 fornece mais detalhes sobre este módulo.

O teclado permite, fazendo clique em algumas das teclas, fazer o comando do jogo ( start , pause e stop , para além de controlar a posição do rover).

Os displays permitem exibir a energia atual do rover, que vai variando com o tempo.

Cada estado do jogo (inicial, a jogar, em pausa, terminado, etc.) deve ter um cenário ou vídeo de fundo diferente, ou um letreiro (cenário frontal, uma imagem com letras e fundo transparente), de forma a dar uma indicação visual do estado do jogo. A figura da página anterior ilustra um possível cenário de entrada, em que o utilizador tem de premir a tecla C para iniciar o jogo. Também pode ser um vídeo, com as letras sobrepostas por meio de um cenário frontal (com fundo transparente).

A ideia genérica do jogo é a seguinte:

Figura 1

  • O rover está no fundo ecrã (superfície do planeta) e só pode movimentar-se (por teclas) para a esquerda e para a direita;
  • Do topo de ecrã vão aparecendo os meteoros vindos de muito longe, pelo que quando aparecem são apenas um pixel cinzento. Estes meteoros vão descendo na vertical e aumentando de tamanho à medida que se vão aproximando do rover. No segundo tamanho (2 x 2 pixels) ainda estão distantes e são cinzentos e indistintos, mas a partir daí mudam de forma e cor consoante sejam meteoros bons (verdes) ou maus (naves inimigas, vermelhas), tal como ilustrado pela figura seguinte;
  • O objetivo do rover é destruir as naves inimigas (disparando um míssil), para defender o planeta, e obter energia dos meteoros bons (permitindo que eles colidam consigo);

Figura 2

  • A colisão de um míssil com um meteoro (bom ou nave inimiga) implica a sua destruição e do meteoro, com um efeito de explosão. Atenção, que o míssil tem um alcance limitado (não pode assim atingir meteoros distantes);
  • As naves inimigas não destruídas e meteoros bons não aproveitados perdem-se pelo fundo do ecrã. Sempre que uma nave inimiga é destruída, um meteoro bom colide com o rover ou qualquer deles se perde no fundo, um novo nasce no topo, com tipo (meteoro bom ou nave inimiga) escolhido de forma pseudo-aleatória (25% meteoro bom, 75% nave inimiga);
  • O rover tem uma energia inicial ( 100 %). Essa energia vai-se gastando ao longo do tempo, só pelo facto de o rover estar em funcionamento. Disparar um míssil gasta energia adicional. No entanto, colidir com um meteoro bom e destruir uma nave inimiga aumenta essa energia;
  • O jogo termina se uma nave inimiga colidir com o rover ou se a energia chegar a zero. O objetivo do jogo consiste assim em aguentar o rover durante tanto tempo quanto possível, obtendo energia dos meteoros bons e naves destruídas e evitando colidir com uma nave inimiga;
  • O jogador deve ter hipótese de fazer pausa ao jogo, bem como recomeçar após pausa, terminar o jogo em qualquer altura e começar novo jogo após o anterior terminar.

iac-project's People

Contributors

pereira0x avatar

Watchers

 avatar

Forkers

miguelparece

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.