TÉCNICAS DE PROGRAMAÇÃO II TRABALHO 2

Documentos relacionados
IPRJ TÓPICOS ESPECIAIS EM LINGUAGENS DE PROGRAMAÇÃO TRABALHO 3 UNITY 3D

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 2 LÓGICA

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 1 BUSCA HEURÍSTICA

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 1 BUSCA HEURÍSTICA

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 2 LÓGICA

INF Fundamentos de Computação Gráfica /1

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 1 BUSCA HEURÍSTICA

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 1 BUSCA HEURÍSTICA

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 1 BUSCA HEURÍSTICA

PCI - Programação de Computadores I Trabalho Avaliativo - Semestral. Palavras Cruzadas

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Jogos baseados em plataforma (parte 1)

JOGOS DISTRIBUÍDOS. Aula 10. TECNOLOGIA EM JOGOS DIGITAIS JOGOS DISTRIBUÍDOS 2016 Marcelo Henrique dos Santos -

Manual do KBreakout. Fela Winkelmolen Stephanie Whiting Tradução: Luiz Fernando Ranghetti Tradução: André Marcelo Alvarenga

Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Fazer explodir a espaçonave inimiga quando um tiro acertá-la.

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

Capítulo 6: Arquivos

Introdução à Engenharia ENG1000

Manual do KSpaceDuel. Andreas Zehender Eugene Trounev Tradução: Stephen Killing

Game Design Document

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

GRADUAÇÃO EM ANÁLISE E DESENVOLVIMENTO PROGRAMAÇÃO DE COMPUTADORES I Trabalho Final Anual TFA

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Técnicas de Programação Avançada Trabalho de implementação

Criando fórum. Vamos aprender a criar um fórum. Siga os passos a seguir!

Visibilidade e Encapsulamento

Guerra dos Clones. Introdução. Scratch. Neste projeto você aprenderá a criar um jogo no qual você terá que salvar a Terra de monstros espaciais.

Game Design: Rali DaBus

PCS LABORATÓRIO DE PROGRAMAÇÃO ORIENTADA A OBJETOS PARA A ENGENHARIA ELÉTRICA

Capturando Bolinhas. Introdução. Scratch

Manual do KReversi. Clay Pradarits Desenvolvedor: Mario Weilguni Revisor: Lauri Watts Tradução: Stephen Killing

5ª Lista de Exercícios de Programação I

2 Versão 1: Funcionalidade Básica e Interface Web

Manual do Kiriki. Albert Astals Cid Eugene Trounev Tradução: Luiz Fernando Ranghetti

Engenharia de Software II

Ao selecionar o seu curso, aparecerá a página principal contendo as informações e as atividades disponíveis.

Marie van Langendonck (RA ) Superior de tecnologia em Jogos Digitais. Linguagem Audiovisual e Games. Professor Eliseu de Souza Lopes Filho

PROGRAMAÇÃO DE COMPUTADORES I BCC Aula Prática 15

LISTA DE ATIVIDADES Semestre Letivo 2018/1

A configuração é bem simples e é feita através de um painel onde cada gesto é associado a um comando do NetBeans.

INFORMÁTICA APLICADA AULA 05 WINDOWS XP

Trabalho Campeonato de Futebol Programação Orientada a Objetos (SCC204) Prof. Moacir Pereira Ponti Junior 26 de abril de 2011

ENSINO MÉDIO INTEGRADO INFORMÁTICA LINGUAGEM DE PROGRAMAÇÃO Trabalho Semestral

SOFTWARE EDUCATIVO. Ri-Li

INF 1620 Estruturas de Dados Semestre Segundo Trabalho: Jogo de Caça-Palavras

BLOGS. Blogs AMBIENTE VIRTUAL DE APRENDIZAGEM TUTORIAL DO. Autor(es) Scarlat Pâmela Silva

Figura 16 Niagara - Visão de grupos de notas.

JOGOS DISTRIBUÍDOS. Aula 8. TECNOLOGIA EM JOGOS DIGITAIS JOGOS DISTRIBUÍDOS 2016 Marcelo Henrique dos Santos -

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Material criado e organizado por: Suéllen Rodolfo Martinelli. Disponibilizado em:

Cartilha de Orientação para Gerenciar Liberação de Assinatura Externa. Brasília Agosto de 2019

UTILIZANDO LÓGICA FUZZY PARA CONTROLE DE JOGOS

SCC0504 Programação Orientada a Objetos Projeto

Trabalho Prático Data de Entrega : 30 de Maio

Interfaces e Classes Abstratas

SME Introdução à Programação de Computadores Primeiro semestre de Trabalho: jogo Semáforo

Bem-vindo ao tópico sobre como lidar com devoluções e trocas no processo de vendas.

Especificação do Trabalho Prático

IPRJ TÓPICOS ESPECIAIS EM ENGENHARIA DE SOFTWARE (JOGOS II) LISTA DE EXERCÍCIOS UNITY 3D

possibilidades e criatividade Moodle em minha sala de aula Atividades e Recursos Laboratório de avaliação Parte I Configurações gerais

Trabalho Computacional Jogo da Forca

Manual do KSquares. Matt Williams Revisor: Eugene Trounev Tradução: Luiz Fernando Ranghetti Tradução: André Marcelo Alvarenga

Unidade 9: Desenvolvendo um Game no App Inventor

Capítulo 02: Cadastro de Alunos

Manual Gerenciador de Aprendizagem Papel Professor Versão 2.5.3

Copyright Proibida Reprodução. Prof. Éder Clementino dos Santos

Introdução à Engenharia ENG1000

Tutorial ROBOCODE. Quando você executar o Robocode a seguinte tela será exibida:

Casa do Código Livros para o programador Rua Vergueiro, º andar Vila Mariana São Paulo SP Brasil

De Olho na Pista. Documento de Arquitetura. De Olho na Pista Documento de Arquitetura Data: 23/03/2013. AJA Software

Manual de utilização do portal NIX-UP para Upload de Notas Fiscais de Serviço

Questão 1 Exemplo de execução 1 (com N=6): Exemplo de execução 2 (com N=4):

Material de Apoio. Portal de Atendimento Betha Sistemas

Transcrição:

TÉCNICAS DE PROGRAMAÇÃO II TRABALHO 2 Descrição: O objetivo do trabalho 2 é desenvolver um jogo estilo shoot 'em up em Java, onde o jogador possa controlar uma espaçonave e destruir as espaçonaves inimigas que surgirem. A Figura 1 ilustra a interface e os elementos básicos do jogo. Pontos Quantidade de vidas Quantidade de misseis Nave do jogador Naves inimigas Background de estrelas dinâmicas Tiros disparados pelo jogador Figura 1: Interface e Gameplay. O jogo deve ser desenvolvido seguindo o paradigma de programação orientado a objetos, onde os diversos elementos da aplicação devem ser organizados e implementados em classes. Requisitos Básicos: O jogador deverá poder controlar a sua nave pelo teclado em todas as direções (right, left, up e down). O jogo não deve permitir que a nave controlada pelo jogador saia da região visível da tela.

As estrelas do background devem ser geradas aleatoriamente e movimentar-se dinamicamente de acordo com a velocidade da nave e distancia da estrela (criando a sensação de profundidade). Estrelas distantes devem mover-se mais lentamente e serem menos brilhantes, enquanto que estrelas próximas devem mover-se mais rapidamente e serem mais brilhantes. A nave controlada pelo jogador deve possuir um modo turbo que permita que a nave possa movimentar-se mais rapidamente. A nave controlada pelo jogador deve possuir pelo menos dois tipos de armas: o Tiro simples: segue uma trajetória em linha reta a partir da posição da nave até atingir um alvo ou sair dos limites da tela; o Míssil: segue uma trajetória na direção da nave inimiga que estiver mais próxima do jogador até atingi-la. O Tiro Simples é infinito, porém o Míssil é limitado. Inicialmente o jogador começa com 3 misseis. Os misseis utilizados podem ser recarregados ao pegar um item do tipo míssil que pode surgir ao destruir uma nave inimiga. Devem existir no jogo pelo menos 4 tipos de inimigos: Nome Comportamento Imagem RedUfo Movimenta-se apenas horizontalmente para frente e não possuí nenhuma arma. Um tiro é suficiente para ele ser destruído. GreenFire Movimenta-se apenas horizontalmente para frente e possui uma arma que dispara tiros em determinados intervalos de tempo. Um tiro é suficiente para ele ser destruído. BigBang Movimenta-se diagonalmente (cima e frente ou baixo e frente) e não possuí nenhuma arma. São necessários 3 tiros para destruí-lo ou 1 míssil. DeathFish Movimenta-se de forma ondular para frente e possui uma arma que dispara tiros em determinados intervalos de tempo. São necessários 5 tiros para destruí-lo ou 1 míssil. O jogo deve ser capaz de gerar os inimigos aleatoriamente de acordo com um nível de dificuldade incremental. Inicialmente, apenas RedUfos devem entrar aleatoriamente na tela. Após um tempo ou após o jogador acumular um determinado número de pontos, GreenFires devem começar a aparecer. Você

deve definir qual será o critério para aumentar dificuldade do jogo e fazer com que os diferentes tipos de inimigos apareçam. Lembre-se que a quantidade de inimigos que vão aparecer também pode ser usada para aumentar a dificuldade do jogo. O jogo deve detectar a colisão entre a nave controlada pelo jogador e os inimigos. Em caso de colisão, ambas as naves devem ser destruídas e o jogador perde uma vida. O jogo deve detectar a colisão entre os tiros disparados pelo jogador e os inimigos. Em caso de colisão, a nave inimiga deve ser destruída e o jogador ganha uma determinada quantidade de pontos: o RedUfo: +10 o GreenFire: +50 o BigBang: +100 o DeathFish: +200 O jogo deve detectar a colisão entre os tiros disparados pelos inimigos e o jogador. Em caso de colisão, a nave do jogador deve ser destruída e o jogador perde uma vida. Se o jogador ficar sem vidas, a tela de gameover deve ser exibida. Após destruir um inimigo, deve existir 10% de chance de um item do tipo Míssil surgir no local onde o inimigo estava. O jogo deve permitir que o jogador possa pegar esse item (ao colidir com ele). Ao pegar o item, a quantidade de misseis disponíveis deve ser incrementada. O jogador pode ter no máximo 3 misseis ao mesmo tempo. O jogo deve gerenciar e exibir na tela a quantidade de vidas do jogador, a pontuação e a quantidade de misseis. O jogo deve ser capaz de registrar e exibir as 10 melhores pontuações conseguidas pelos jogadores. Essa informação deve ser gravada e lida de um arquivo, de modo que os recordes continuem gravados mesmo quando o programa for fechado. Na tela de gameover, o jogo deve exibir a pontuação conseguida pelo jogador e, se ela estiver entre as 10 melhores pontuações, o jogo deve permitir que o jogador escreva o seu nome e registre a pontuação.

O jogo deve possuir uma tela de título com as seguintes opções: o Novo Jogo: inicia um novo jogo; o Recordes: mostrar uma nova tela com as 10 melhores pontuações conseguidas pelos jogadores (juntamente com os nomes dos jogadores); o Sair: fecha o jogo. Você é responsável pela tarefa de tornar o jogo divertido, então está livre para modificar e melhorar todos os requisitos básicos, podendo: o Criar novos inimigos ou melhorar o comportamento dos inimigos definidos no enunciado; o Criar novas armas e power-ups para o jogador; o Definir uma lógica própria para incrementar a dificuldade do jogo gradativamente ou definir fases para o jogo; o Adicionar chefões para cada nível de dificuldade ou fase; o Limitar o uso do turbo de acordo com alguma lógica (tempo prédeterminado, pegar itens que permitam usar o turbo, etc.); o Criar outros modos de jogo, como um modo multiplayer cooperativo ou competitivo; o Ou qualquer outra ideia que você tiver para tornar o jogo mais divertido! As imagens básicas necessárias para implementar o jogo estão disponíveis no seguinte link: http://www.inf.puc-rio.br/~elima/jogos/imagens_spaceshooter.zip Organização das Classes: Obrigatoriamente o jogo deve ser desenvolvido seguindo o paradigma de programação orientado a objetos, onde os diversos elementos da aplicação devem ser organizados e implementados em classes. Você é responsável por definir a estrutura e organização das classes necessárias para o jogo. Porém, pede-se que o jogo tenha no mínimo a seguinte hierarquia de classes para definir os elementos básicos do jogo:

Nave: classe base abstrata para representar naves espaciais; Player: classe que herda as características da classe Nave e implementa as funcionalidades necessárias para representar e controlar a nave do jogador; RedUfo: classe que herda as características da classe Nave e implementa os RedUfo; GreenFire: classe que herda as características da classe Nave e implementa os GreenFire; BigBang: classe que herda as características da classe Nave e implementa os BigBang; DeathFish: classe que herda as características da classe Nave e implementa os DeathFish; Tiro: classe base abstrata para representar tiros; TiroSimples: classe que herda as características da classe Tiro e implementa os métodos necessários para representar e definir o comportamento de um Tiro Simples; Míssil: classe que herda as características da classe Tiro e implementa os métodos necessários para representar e definir o comportamento de um Míssil; Nave --------- abstract abstract Player TiroSimples[] Míssil[] RedUfo GreenFire TiroSimples[] BigBang DeathFish TiroSimples[] Tiro --------- abstract abstract TiroSimples Míssil

Informações Adicionais: O trabalho deve ser feito individualmente. Obrigatoriamente o jogo desenvolvido deverá ser apresentado durante a aula. o O aluno que não comparecer no dia da apresentação receberá nota zero; o O aluno que não souber explicar algo importante relacionado ao trabalho receberá nota zero. Forma de Avaliação: Será avaliado se: (1) O trabalho atendeu a todos os requisitos especificados anteriormente; (2) O código foi devidamente implementado, organizado e documentado; (3) A interface com o usuário atende aos requisitos básicos de usabilidade; (4) O trabalho foi apresentado corretamente em sala de aula; Data de Entrega e Apresentação: 25/11 Forma de Entrega: O programa deve ser apresentado na aula do dia 25/11 (terça) e enviando até o mesmo dia pelo Moodle. Trabalhos entregues atrasados perderam 0.5 pontos para cada dia de atraso.