1 Resumo. 2 Detalhes. 2.1 Tabuleiro. CMP Técnicas de Programação II Max Gontijo de Oliveira 1 o Trabalho - Jogo de Batalha

Documentos relacionados
XADREZ REGRAS BÁSICAS INTRODUÇÃO O xadrez, diferentemente de muitos jogos, não depende de sorte. O desenvolver do jogo não depende do resultado de

Especificação do Trabalho Prático

CAPÍTULO 1. Os elementos. O jogo de xadrez é um desafio para a mente. J. W. von Goethe O TABULEIRO DE XADREZ

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

livro das regras (provisório)

JOGOS LIVRO REGRAS M AT E M Á T I CO S. 11.º Campeonato Nacional

Distribuição de Jogos por Ciclo

Semáforo. Um tabuleiro retangular 4 por 3. 8 peças verdes, 8 amarelas e 8 vermelhas partilhadas pelos jogadores.

1ª Colocação 10 pontos. 2ª Colocação 08 pontos. 3ª Colocação 06 pontos

Tabuleiro. Movimento das peças (torre)

PROFESSORA: GEÓRGIA SOARES DISCIPLINA: EDUCAÇÃO FÍSICA CONTEÚDO: XADREZ AULA 2

REGRAS DOS JOGOS do CNJM15

Gatos & Cães Simon Norton, 1970s

Trabalho B Campo Minado

Gatos & Cães Simon Norton, 1970s

O usuário pode restringir dados a um determinado tipo, como números inteiros, números decimais ou texto, e definir limites para as entradas válidas.

1, caso haja uma mina na posição (i, j),

Configurar Ingressos

1. MATERIAIS NECESSÁRIOS

Manual do KFourInLine. Martin Heni Eugene Trounev Benjamin Meyer Johann Ollivier Lapeyre Anton Brondz Tradução: Marcus Gama Revisão: Stephen Killing

Campeonato de Gamão. 1. Regras. 2. Servidor

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 2 LÓGICA

Soluções da Lista de Exercícios Unidade 20

O Manual do KFourInLine. Martin Heni Eugene Trounev Benjamin Meyer Johann Ollivier Lapeyre Anton Brondz Tradução: José Pires


Enunciar e aplicar as regras dos movimentos dos bispos Usar as regras dos movimentos para calcular lances e capturas Resolver problemas usando bispos

INTELIGÊNCIA ARTIFICIAL 2008/09

Professor: Paulo Adolfo Kepler (Zé)

CI202 - Métodos Numéricos - Trabalho 2

UNIVERSIDADE FEDERAL DO PARANÁ Nível 1 - POTI Aula 1 - Combinatória

Torneio de Xadrez. Escola Básica Adriano Correia de Oliveira. Centro de Recursos Biblioteca Escolar

Documentação do processo de Balanço de Estoque

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

» O jogo: - é dividido em 3 semanas, cada uma com 7 dias/turnos. Cada turno divide-se em 2 fases:

MAC 115 Introdução à Ciência da Computação ROTHELO

Manual de utilização

Opte então pela opção Suplementos disponível do lado esquerdo da tela que se abriu.

Explique que as regras do xadrez são diferentes das regras do Jogo de Peões. Agora, não se ganha mais uma partida ao levar um peão à

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

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

Aula 01 Microsoft Excel 2016

Inteligência Artificial Projecto 2

Manual de instruções do

Aprendendo a jogar Xadrez

INTRODUÇÃO O MAGO SUPREMO DE AKIGAM! CONTEÚDO DA CAIXA

Calc. Interface, Formatação e Cálculos

Trabalho de Programação 2 Processador CESAR

Manual do Granatier. Mathias Kraus Tradução: Marcus Gama Tradução: André Marcelo Alvarenga

APÊNDICE C. Produto da Dissertação: Sequência de Atividades. Encontro 1 ( 2 períodos de 50 minutos)

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

Segundo Projeto Valor: 10% (1,0 pt) da 2ª V.A.

Infor LN Service Guia do usuário para o nivelamento da carga de trabalho

Breve Introdução à Programação em Scilab 6.0

1. Introdução. 2. Componentes do Jogo

Design de Interface - Avaliação Final

XADREZ NA UFG. Módulo I -Introdução. Prof. Dr. André Carlos Silva Profa. MSc. Elenice Maria Schons Silva

Tutorial para utilização do sistema de agendamentos

Manual do programa de cálculo de grelhas equivalentes

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

PACRU SÉRIE 302. Linguagens e Informação Extra. Três Jogos: Shacru, Azacru & Pacru

Introdução. Antes de começar

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

Processo de Balanço de Estoque (Inventário de Estoque)

ABC DO XADREZ GUIA DE APRENDIZAGEM

Componentes do jogo. Um jogo de Dirk Henn para 2-6 jogadores a partir de 8 anos. Componentes do jogo básico

Trabalho GA - Editor de Cenário Isométrico

Behavioral Patterns Chain of ofresponsability

Produção de tutoriais. Suellem Oliveira

Manual de Uso. Sistema de Gestão Hoteleira Online. FastHotel Sistema de Gestão Hoteleira Online FastHotel.com.br

d) A dama pode mover-se para qualquer casa ao longo da coluna, fileira ou diagonal em que se encontra.

VOLEIBOL 8º Ano. Voleibol. Origem e Evolução: 07/05/2013. William Morgan 1895 ACM s. Tênis Minonette

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

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

Boas práticas para codificação de classes. 1. Arquivo.h / Em um arquivo. h ( por exemplo, minha_lib. h ), DECLARE todas as

RAÇAS. Escolha 1 das seguintes Habilidades Especiais:

Implementação e Avaliação do Algoritmo MCTS-UCT para o jogo Chinese Checkers. Jhonny Moreira

INTRODUÇÃO O MAGO SUPREMO DE AKIGAM! CONTEÚDO DA CAIXA

Como Gerar Instruções de Boletos? - FS133.2

Universidade Federal do ABC BCM Processamento da Informação Prática Projeto Campo Minado Primeiro Quadrimestre de 2018

Instituto Federal de Minas Gerais - Campus Bambuí

Semáforo Autor: Alan Parr. Avanço Autor: Dan Troyka, Material Um tabuleiro quadrado 7 por peças brancas e 14 peças negras.

Produção de tutoriais. Suellem Oliveira

Produção de tutoriais. Suellem Oliveira

Manual do Picmi. Jakob Gruber Tradução: Marcus Gama

Inteligência Artificial Projecto 1

INF INTELIGÊNCIA ARTIFICIAL TRABALHO 2 LÓGICA

Módulo 1. Tabuleiro, peças, movimentos e capturas

O Manual do KNetWalk. Fela Winkelmolen Eugene Trounev Tradução: José Pires

(Sistema Especialista)

PARCERIA APEA/SP E APCEF/SP

PROJETO CLUBE DE MATEMÁTICA

Aula 01 Excel Prof. Claudio Benossi

Unidade 2: Navegação e Edição Básica

Problema A Bolhas e baldes Nome do arquivo fonte: bolhas.c, bolhas.cpp ou bolhas.java

Como começar a Jogar? Para iniciar o jogo a forma mais fácil é ir a e começar a jogar.

Produção de tutoriais. Suellem Oliveira

INTRODUÇÃO. Bem Vindo a CONEXÃO HACKER e boa sorte!

Sumário. Introdução O que é RPG? O Sistema Inilen Começando a jogar A Ficha do Jogador... 2

Produção de tutoriais. Suellem Oliveira

Transcrição:

CMP1056 - Técnicas de Programação II Max Gontijo de Oliveira 1 o Trabalho - Jogo de Batalha 1 Resumo Criar um programa em C++ utilizando conceitos de orientação à objetos que implemente um jogo de batalha de turnos entre dois jogadores. 2 Detalhes O jogo de batalha a ser implementado consiste em dois jogadores disponibilizados em um tabuleiro matricial se enfrentem até a morte. A batalha deverá ser realizada por meio de movimentos em turnos, de modo que, em cada turno, cada jogador deverá fazer jogadas relacionadas ao turno (um ataca e o outro defende). Ambos os jogadores escolhem suas jogadas em segredo e, quando nalizadas as escolhas, as jogadas são realizadas, começando por quem ataca. Outros elementos também estarão presentes no tabuleiro: rochas e baús. As rochas impedem o movimento de um jogador em sua direção. Contudo podem ser quebradas com um golpe. Os baús não impedem o movimento em sua direção, podendo o jogador ocupar a mesma célula que um baú ocupa. O atacante pode escolher entre as seguintes jogadas: Ataque (arma e direção devem ser informados) Movimento (direção deve ser informada) Uso de um item (item deve ser escolhido) Delay (não fazer nada) Abrir baú (deve estar em uma célula com um baú) O defensor pode escolher entre as seguintes jogadas: Bloqueio (arma/escudo e direção devem ser informados) Movimento (direção deve ser informada) Uso de um item (item deve ser escolhido) Delay (não fazer nada) Abrir baú (deve estar em uma célula com um baú) Os ataques realizados irão diminuir os pontos de vida do adversário (quando acertar). O jogo acaba quando um dos jogadores tiver seus pontos de vida zerados. A Figura 1 apresenta uma visualização do que seria o tabuleiro em algum instante de uma partida. Figura 1: Exemplo de tabuleiro Na gura, os elementos P1 e P2 são, respectivamente os jogadores 1 e 2. O jogador 1 carrega uma espada na mão esquerda e um escudo na mão direita, enquanto o jogador 2 carrega um machado na mão esquerda e um escudo na direita. Os símbolos amarelos representam baús e os cinzas representam rochas. 2.1 Tabuleiro O tabuleiro será matricial (como em damas ou xadrez). O tamanho N M do tabuleiro deverá ser informado antes da partida. Considerando i {0, 1, 2,..., N 1} o índice da linha e j {0, 1, 2,..., M 1} o índice da coluna, o jogador 1 deverá ser posicionado na posição (i, j) = (0, 0) do tabuleiro, enquanto o jogador 2 na posição (i, j) = (N 1, M 1). Os demais itens (rochas e baús) deverão ser inseridos no tabuleiro em posições aleatoriamente selecionadas (ver funções srand, time e rand). As quantidades de rochas e baús também devem ser conguradas antes da partida. Os jogadores começam a partida com uma arma relacionada a raça escolhida na mãe esquerda. A mão direita inicia sem nada. Os jogadores também começam sem nenhuma poção de cura.

2.2 Raças Cada jogador deverá escolher entre as raças Humano e Orc. Se escolher humano, o jogador terá ainda que escolher entre ser um Bárbaro ou um Rogue, enquanto se escolher Orc deverá escolher ainda entre ser um Uruk-Hai ou um Troll. O que diferencia um Humano de um Orc é apenas a quantidade de poções de cura que pode carregar. Humano pode carregar até três, enquanto Orc pode carregar até dois. O que difere Bárbaro, Rogue, Uruk-Hai e Troll são seus pontos de vida, força e destreza iniciais. A força irá interferir no dano de ataque com espadas ou machado e na capacidade de carregar a arma ou escudo por conta do peso; a destreza irá interferir na quantidade de células que o jogador pode avançar em um movimento e na capacidade de empunhar armas de maior complexidade (arcos). 2.3 Itens de Mão Os itens de mão são armas ou escudos que o jogador poderá empunhar durante a partida. Cada item de mão possui quatro atributos importantes: dano, defesa, força requerida e a destreza requerida. O dano denota o quanto de vida a arma poderá tirar do adversário. A defesa se refere a quantidade de dano que poderá ser evitada quando o jogador for atingido. A força requerida e a destreza requerida indicam o quanto de força e destreza que é necessário que o jogador tenha para poder empunhar e utilizar a arma/escudo. Caso uma dessas restrições não seja satisfeita, o jogador não poderá pegar o item, que cará onde ele o encontrou. Importante: Cada jogador deverá começar com uma arma na mão esquerda. Essa arma será xa em relação à raça/classe e a seus atributos. Raça Classe Arma Dano Defesa Força Requerida Destreza Requerida Humano Bárbaro Espada 7 3 20 50 Rogue Arco 5 1 15 60 Orc UrukHai Espada 8 2 40 50 Troll Machado 10 3 70 15 Observação: O arco possui echas innitas. 2.4 Poções de cura As poções de cura são itens que aumentam a vida do jogador em 50% do seu máximo de vida. Quando utilizada, a poção de cura irá sair do inventário do jogador, abrindo vaga para outra poção que possa ser encontrada no tabuleiro. Importante: Cada jogador deverá começar sem nenhuma poção de cura e só poderá pegar outra poção se tiver espaço em seu inventário. 2.5 Rochas As rochas são peças que obstruem o movimento de um jogador. Contudo, elas podem ser destruídas com um único golpe de espada ou machado ou com uma echa. Após destruída, a rocha sai do tabuleiro e não volta mais, possibilitando que um jogador possa passar por onde ela se encontrava. 2.6 Baús Os baús contém itens que só podem ser identicados quando abertos. Dentro deles podem haver uma poção de cura ou uma das armas ou um escudo ou uma bomba. Se o item do baú for uma poção de cura, o jogador irá imediatamente e automaticamente pegar a poção e adicionar em seu inventário se houver espaço. Caso não haja, a poção permanecerá dentro do baú. Se o item do baú for uma arma ou escudo, o jogador irá ver os atributos do item e poderá optar pegar o novo item e carregá-lo em uma de suas mãos. Se o jogador já tiver com as duas mãos ocupadas, será obrigado a se desfazer de um deles caso queira pegar o novo item. Se o item do baú for uma bomba (sim, uma bomba!), ocorrerá uma explosão que irá tirar em vida, a quantidade de dano que ela causar. Esse dano deverá ser atribuído à bomba de forma randômica, variando entre 5 e 15. Importante: O item dentro de cada baú deverá ser selecionado de forma randômica, entre as opções, bomba, poção, espada, arco, escudo e machado. Os atributos de cada item (com exceção da poção), deverão ser selecionados de forma randômica também, respeitando os intervalos de possíveis valores. 3 Implementação O programa deverá ser totalmente escrito em C++. Caso o aluno tenha interesse, poderá utilizar bibliotecas de interfaces grácas ricas, como QT, GTK ou OpenGL.

3.1 Orientação à objetos O programa deverá ser desenvolvido utilizando os conceitos de orientação à objetos. Conforme já conversado em sala de aula, é obrigatório que sejam criadas e utilizadas as classes apresentadas no seguinte diagrama de classes: Importante: Note que esse diagrama não contempla todas as classes do jogo a ser implementado. Ele contempla apenas a parte lógica do jogo, que independe de interface gráca. Classes referentes à conguração, entrada e saída de dados deverão ser implementadas à parte. Dica geral: Para identicar qual é o tipo de um objeto especíco, utilize o comando typeid da biblioteca typeinfo. 3.2 Classe Raça A classe Raça possui alguns atributos bastante importantes. Atributo vida máximovida força destreza poções itemmãoesquerda itemmãodireita próximasjogadas Descrição Quando zerado, o jogador morre. Utilizada para determinar quanto uma poção cura. Utilizada para cálculo de ataque e para carregar itens de mão. Utilizada na defesa, no movimento e para carregar itens de mão. Poções carregadas pelo jogador. Arma ou escudo Arma ou escudo Jogadas que o jogador irá executar no turno A classe ainda conta com cinco métodos (um herdado). Método atacar bloquear tomarpoção mover abrirbaú seratingido Descrição Adiciona à próximasjogadas uma jogada Atacar. Adiciona à próximasjogadas uma jogada Bloquear. Adiciona à próximasjogadas uma jogada TomarPoção. Adiciona à próximasjogadas uma jogada Mover. Adiciona à próximasjogadas uma jogada AbrirBaú. Deve ser implementado de forma que o jogador atingido possa lidar com o ataque.

3.2.1 Método seratingido da classe Alvo Jogadores (Raça) e rochas (Rocha) podem ser atingidos por ataques. Assim, quando uma jogada do tipo Atacar é executada com sucesso, o alvo terá o método seratingido invocado. Na classe Rocha, o método deve implementar apenas a remoção da rocha do tabuleiro. Na classe Raça, o método deverá calcular a intensidade do ataque, considerando dano da arma, o bloqueio do escudo/arma do alvo e a destreza do alvo. Paralelamente, no mesmo turno, o alvo poderá ter efetuado um bloqueio. Caso o alvo tenha efetuado um bloqueio na direção em que veio o ataque, a quantidade de vida perdida deverá ser calculada da seguinte forma: vidap erdida = max(0, danoarma (def esaitemm aoesquerdaalvo+def esaitemm aodireitaalvo) (destrezaalvo p+1)) onde p é um número randômico entre 0 e 1; Caso o alvo não tenha bloqueado ou tenha efetuado o bloqueio para um lado errado, o cálculo será o mesmo, sendo que def esaitemm aoesquerdaalvo e def esaitemm aodireitaalvo terão valor zero. 3.3 Jogadas Em cada turno, um jogador assumirá o papel de atacante e o outro de defensor. O atacante terá o direito de efetuar quatro jogadas, enquanto o defensor poderá efetuar três. As jogadas de cada jogador devem ser escolhidas. Após a escolha das jogadas, o jogo irá executar as jogadas uma a uma, alternadamente, começando e terminando pelo atacante. Após o término das jogadas, os papeis se invertem e, quem era atacante vira defensor, quem era defensor vira atacante. 3.3.1 Atacar Um ataque pode ser realizada a partir de qualquer célula do tabuleiro quando se está no papel de atacante. Contudo, o ataque só irá atingir um alvo se algumas restrições forem respeitadas. A direção em que o ataque é realizado precisa ter um alvo. Os possíveis valores para o parâmetro direção são: `E', `D', `C' e `B'. Se for um ataque utilizando espada ou machado, a célula onde se encontra o alvo precisa estar adjacente. Se for um ataque utilizando arco, a célula precisa apenas estar na mesma direção. Nesse caso, o alvo será o primeiro que aparecer naquela direção. Escudo ou mão limpa não podem ser utilizados para atacar. Quando o ataque atinge um alvo, então as consequências disso devem ser executadas, conforme descrito na Seção 3.2.1. 3.3.2 Bloquear Um bloqueio pode ser realizado a partir de qualquer célula do tabuleiro quando se está no papel de defensor. Se trata de uma jogada com certo delay, pois o jogador estará bloqueando na jogada seguinte de seu atacante. Se no momento desse ataque o defensor estiver bloqueando na MESMA DIREÇÃO de onde vem o ataque, então os pontos de defesa e destreza serão ignorados, conforme descrito na Seção 3.2.1. Caso o bloqueio seja executado e, na jogada seguinte, o atacante não efetue um ataque ou não acerte o alvo, então o bloqueio simplesmente não terá causado efeito algum. 3.3.3 Tomar poção Essa jogada se refere a usar uma poção de cura que o jogador tenha guardado em seu inventário. Caso não haja nenhuma poção, a jogada irá acontecer da mesma forma, contudo, será perdida pois nada vai acontecer. Quando a poção é tomada, os pontos de vida do jogador são acrescidos em 50% da quantidade de pontos de vida máximo que o jogador pode ter. Obviamente, esse aumento está limitado a esse mesmo máximo de pontos de vida. 3.3.4 Mover Essa jogada recebe direção e quantidade de células que o jogador deseja avançar na direção informada. movimento possui algumas restrições. Contudo, o A quantidade de células que são efetivamente avançadas são limitadas ao resultado da seguinte operação: destreza/20. Se o método de movimentar for chamado com uma quantidade superior ao limite de células imposto pela destreza, a quantidade de células a serem avançadas será o limite.

Se alguma célula tiver algo que bloqueie o avança do jogador, o movimento irá se limitar a esse bloqueio. Somente duas coisas podem bloquear o movimento de um jogador: rochas e o outro jogador. Cada movimento só pode ser realizado em uma única direção. Se, por exemplo, o jogador poder andar três células, ele não pode andar duas para a direita e uma para baixo em uma única jogada. Para fazer isso, ele teria que realizar duas jogadas de movimento, sendo a primeira com 2 células à direita e a segunda, com uma para baixo. 3.3.5 Abrir baú Quando existe um baú em uma célula, se o jogador estiver na mesma célula, poderá realizar essa jogada. Se essa jogada for realizada fora de uma célula que tenha um baú, ela simplesmente não terá efeito. Essa jogada consiste no seguinte uxo: 1. Baú e aberto, exibindo o item ao jogador. 2. Se for um item de mão: (a) Jogo mostra atributos dos itens de mão do jogador e do item que ela acaba de pegar. (b) Jogador decide se vai querer car com item. (c) Se o jogador quiser o item, deverá escolher a mão que irá segurar o item. (d) Se houver um item de mão na mão escolhida para o novo item, o item que estava na mão é deixado na mesma célula, podendo ser, posteriormente, pegado por outro jogador ou ele mesmo. (e) Jogador só poderá pegar o item se ele tiver força e destreza suciente. 3. Se for uma poção: (a) O jogador só poderá pegar a poção se ele tiver espaço para carregar mais uma poção. (b) Se pegar a poção, poderá deixar um item de mão, se ele quiser. 4. Se for uma bomba: (a) A bomba simplesmente explode e causará no jogador o dano que ela tiver descrito em seu atributo. (b) Nesse caso, o jogador não poderá deixar nada dentro do baú na mesma jogada. 5. Baú é fachado novamente, vazio ou não. O baú jamais sai do tabuleiro. Mesmo que ele esteja vazio. Só cabe um item dentro do baú. 4 Fluxo de execução do programa O programa deverá efetuar a seguinte sequência de passos: 1. Programa possibilita conguração de uma nova partida. Tamanho tabuleiro Quantidade de rochas Quantidade de baús 2. Jogador 1 escolher seu personagem, entre Bárbaro, Rogue, Uruk-Hai e Troll. Escolhe ainda seu nome. 3. Jogador 2 escolher seu personagem, entre Bárbaro, Rogue, Uruk-Hai e Troll. Escolhe ainda seu nome. 4. Tabuleiro é criado (a) Cria tabuleiro no tamanho especicado. (b) Insere o jogador 1 na posição (i, j) = (0, 0). (c) Insere o jogador 2 na posição (i, j) = (N 1, N 1). (d) Insere rochas no tabuleiro em posições randômicas. (e) Insere baús no tabuleiro em posições randômicas. (f) Para cada baú, selecione randomicamente o seu conteúdo. i. Selecionar randomicamente entre espada, arco, escudo, machado, poção ou bomba. ii. Selecionar randomicamente os atributos dos itens (exceto se for poção, pois não tem atributo). 5. Jogo é iniciado

6. Jogador 1 inicia no papel de Atacante e jogador 2, no papel de Defensor. (a) O Atacante escolhe suas quatro jogadas. (b) O Defensor escolher suas três jogadas. (c) As sete jogadas são executadas alternando entre jogada do Atacante e jogada do Defensor, começando pela primeira jogada do Atacante. (d) Se em alguma jogada o Atacante ou o Defensor zerar os pontos de vida, o jogo termina com a vitória, obviamente, de quem não zerou os pontos de vida. (e) Se ninguém zerar os pontos de vida dentro das sete jogadas, o uxo de jogadas recomeça, retornando ao passo 6(a), trocando os papeis dos jogadores (quem era Atacante passa a ser Defensor e vice-versa). 7. Programa apresenta uma mensagem de informando vitorioso e derrotado. 5 Entrega O trabalho deverá ser entregue em duas etapas: a primeira é a entrega dos arquivos de código fonte via e-mail; a segunda é a apresentação do trabalho em sala de aula diretamente para o professor. 5.1 Código fonte Os arquivos de código fonte deverão ser compactados em um único arquivo (ZIP, RAR, 7Z, etc.) e enviados até o dia 12/12/2014 às 20:30. Caso sejam enviados após essa data, o valor da nota total conquistada pelo aluno será multiplicada por 0.7. 5.2 Apresentação Todos os alunos deverão apresentar o trabalho ao professor em sala de aula ATÉ o dia 15/12/2014. Nenhum trabalho será avaliado após essa data. Se o aluno quiser apresentar antes da data nal, poderá fazê-lo. Basta informar ao professor. A apresentação será em duplas e irá considerar a capacidade de CADA aluno de explicar todo o código desenvolvido ou partes especícas determinadas pelo professor. 6 Avaliação A avaliação será realizada em duas etapas: uma referente à entrega do programa em si; a outra referente à apresentação. A entrega vai considerar o respeito ao prazo e o uso de orientação a objetos de forma correta. A apresentação vai considerar a explicação dos alunos acerca do código desenvolvido e a capacidade de os alunos responderem perguntas sobre o código e/ou os algoritmos. O professor poderá ainda solicitar alterações no código que os alunos deverão ser capazes de realizar.