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

SCC0504 Programação Orientada a Objetos Prof. Luiz Eduardo Virgilio da Silva / Estevam Arantes (Monitor) Projeto

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 1 BUSCA HEURÍSTICA

Figura 1: Jogo em acontecimento Servidor (Versão 1.0)

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 1 BUSCA HEURÍSTICA

Invasores Documentation

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

Controle de Ventilador de Fonte de PC em Malha Aberta

NIGHTMARE BEATS. Acadêmico do Curso de Bacharelado em Sistemas de Informação da Faculdade de Apucarana FAP 2

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

Jogos baseados em plataforma (parte 1)

Trabalho Prático 2015 Simulador de Circuitos Opção 1 Versão /11/2013

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

SSC Linguagem de Programação e Aplicações

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.

Trabalho 1 ALGORITMOS E ESTRUTURAS DE DADOS I (SCC-202)

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

Descrição Arquitetural

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

Primeira Parte do Trabalho Prático (Parte I) Valor: 30% Descrição do arquivo de dados

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

ESPECIFICAÇÃO DO TRABALHO DA DISCIPLINA DE ANÁLISE DE SISTEMAS ORIENTADOS A OBJETOS DO CURSO DE TECNOLOGIA EM DESENVOLVIMENTO DE SOFTWARE

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

LISTA DE ATIVIDADES Semestre Letivo 2018/1

Manual do KBreakout. Fela Winkelmolen Stephanie Whiting Tradução: José Pires

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

Projeto de Programação Entrega Intermédia

Criação de Testes APRENDIZAGEM TUTORIAL DO. Autor(es) Scarlat Pâmela Silva

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

Segunda Parte do Trabalho Prático (Parte II) Valor: 70%

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

SOFTWARE EDUCATIVO. Ri-Li

RAFAEL EMMENDOERFER FALCONE MAURO MARCELO MATTOS

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

Segundo Trabalho Prático Turma A

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

possibilidades e criatividade Moodle em minha sala de aula Atividades e Recursos Base de dados Parte I Configurações gerais

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

1. Estrutura do Projeto (0,2) pontos

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

MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DE GOIÁS FACULDADE DE NUTRIÇÃO. AtiCom 2.0. Software para preenchimento das atividades complementares

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

Primeiro Trabalho Prático Turma A. Descrição do Trabalho. Considere os seguintes dados a respeito de um livro:

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

possibilidades e criatividade em Moodle minha sala de aula Atividade e Recusos Atividade Escolha

Trabalho Prático. Primeira Parte do Trabalho (Parte I): peso 40%

Apoio. teteusbionic.com.br youtube.com/teteusbionic fb.com/teteusbionicoficial GAMES

A EXPERIMENTAÇÃO REMOTA COMO APOIO AO PROCESSO ENSINO-APREDIZAGEM DE FÍSICA NO ENSINO MÉDIO, UTILIZANDO O ROBOCAR

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.