• Nenhum resultado encontrado

Programação Orientada pelos Objectos CodeRuler

N/A
N/A
Protected

Academic year: 2021

Share "Programação Orientada pelos Objectos CodeRuler"

Copied!
8
0
0

Texto

(1)

Programação Orientada pelos Objectos

CodeRuler

O trabalho deste guião consiste em implementar um jogo. Os objectivos do guião são os seguintes:

• Perceber o que é um motor de jogo. • Instalar um motor de jogo no eclipse • Rever o conceito de interface

• Discutir as interfaces oferecidas pelo motor de jogo instalado • Desenvolver um jogo de computador

• Testar o jogo num duelo emocionante.

O trabalho vai consistir em implementar uma estratégia para o jogo CodeRuler, testar essa estratégia contra a estratégia dos colegas e submeter o respectivo código ao servidor mooshak.

O que é um motor de jogo?

O motor de jogo é a componente central dos jogos de computador modernos, esse componente gere: o motor de gráficos 2D ou 3D; o motor de física, que permite detectar colisões; o gestor de som; o gestor de tarefas. Isto significa que os programadores de jogos apenas têm que programar a estratégia do jogo.

(2)

Porquê estudar jogos na cadeira de programação

orientada aos objectos?

Os jogos de computador são apelativos para muitos alunos de informática, facilitando assim a aprendizagem de alguns conceitos. Um dos conceitos importantes que queremos ensinar é a utilização de Application Programming

Interfaces (API), isto é, o uso de Classes e Interfaces desenvolvidas por terceiros

das quais não temos acesso ao código fonte, mas que mesmo assim pretendemos reutilizar. Tudo isto programando em Java, naturalmente. Por outro lado alguns dos alunos podem, no futuro, vir a trabalhar no desenvolvimento de jogos de computador.

Regras do CodeRuler

O CodeRuler é um jogo com até 6 jogadores que competem uns com os outros numa série de batalhas. Cada jogador começa com um castelo numa posição aleatória de uma grelha quadricular bidimensional. Cada jogador começa com o mesmo número de peões e cavaleiros. O trabalho de cada jogador consiste em dar ordens aos seus peões, cavaleiros e castelos.

Durante uma batalha o jogador acumula pontos. Os pontos podem ser obtidos de três formas: apoderar-se de terras através dos peões; capturando, através dos seus próprios cavaleiros, os peões, cavaleiros ou castelos dos outros jogadores; pelo numero de peões, cavaleiros e castelos que cada jogador detém no final da batalha. O jogador que obtiver mais pontos no final de uma batalha é declarado o vencedor.

Os pontos são atribuidos da seguinte forma:

Acção Pontos

Capturar um peão com o cavaleiro 4 Capturar um cavaleiro com um cavaleiro 6 Capturar um castelo com um cavaleiro 15

Terras obtidas no final do match 1 ponto por cada 10 quadrados Por cada peão detido no final do match 1

Por cada cavaleiro detido no final do match 2 Por cada castelo detido no final do match 25

Como instalar o plug-in no eclipse?

Se estiver num laboratório verifique se o plug-in já está instalado tentando criar um novo projecto.

Antes de se começar a programar é necessário fazer download e instalar o plug-in presente em: http://www.alphaworks.ibm.com/tech/coderuler/download .

- Em casa:

Após o download descompactar o zip e copiar os dois ficheiros presentes na directoria plugins para a directoria plugins do eclipse.

(3)

- Nos laboratórios:

Depois de ter efectuado o download, descompactar o zip para uma pasta chamada eclipse (tudo em minúsculas), criar um ficheiro

.eclipseextension em ASCII com a seguinte linha de texto: ---- id=org.eclipse.platform name=Eclipse Platform version=3.3.1.1 ----

Naturalmente a versão do eclipse é a que tiver instalada no seu computador. Nessa pasta é preciso criar a pasta features na pasta eclipse. Seguidamente entre no eclipse, vá a Help->Software Updates->Manage Configuration->Add an Extension Location e seleccione a directoria eclipse referida acima.

Como criar um novo projecto? (casa e laboratórios):

Para criar um projecto, abrir o eclipse, fazer File->New->ProjectFile,

seleccionar Other->GameProject e escolher o nome do projecto. No default package surge o ficheiro MyRuler.java onde podemos programar o

comportamento dos nossos peões, cavaleiros e castelos.

(4)

Como correr o jogo localmente?

Abrir a janela associada ao games.xml. Mude o seu name e ponha com

organization: FCT. Clique no botão de Add My Team, depois em Add Random e por fim em Run.

(5)

Para que serve o servidor de treino?

O servidor de treino serve para os alunos treinaram as suas estratégias contra outros alunos. Cada aluno submete o seu código ao servidor de treino e recebe o código dos seus colegas. A ligação ao servidor de treino é segura no sentido em que o código não fica disponivel para ser consultado pelos outros colegas, em vez disso cada aluno só recebe as classes compiladas e encriptadas.

Como ligar ao servidor de treino?

Abrir a janela associada ao games.xml. Clicar em Game server usar como Server host name: di169.di.fct.unl.pt e como server port: 1234.

(6)

Onde obter mais informações sobre o CodeRuler?

No eclipse click Help->Help Contents. No pane de Contents escolha CodeRuler->CodeRuler Manual. Vai obter uma descrição permenorizada do funcionamento do jogo.

(7)

Onde posso obter exemplos de estratégias para o

CodeRuler?

Consulte o help mencionado acima. Reproduzimos aqui o exemplo dessa página.

// move peasants and knights all in random directions import java.util.*;

protected Random rand = new Random();

public void orderSubjects(int lastMoveTime) { IKnight[] knights = getKnights();

int size = knights.length; for (int i = 0; i < size; i++) {

move(knights[i], rand.nextInt(8) + 1); }

IPeasant[] peasants = getPeasants(); size = peasants.length;

for (int i = 0; i < size; i++) {

move(peasants[i], rand.nextInt(8) + 1); }

}

// for a particular knight, attempt to capture the first opposing peasant or knight

// that is in an adjacent square. Returns true if it was able to find something to // capture, and false if there were no opponents surrounding it.

import java.awt.Point;

public boolean knightCapture(IKnight knight) { for (int i = 1; i < 9; i++) {

// find the position

Point np = World.getPositionAfterMove(knight.getX(), knight.getY(), i); // make sure the position is a valid move

if (np != null) {

IObject object = World.getObjectAt(np.x, np.y);

if (object != null && !object.getRuler().equals(knight.getRuler())) { capture(knight, i); return true; } } } return false; }

// for a particular knight, move toward and then capture the given opposing peasant. This

// method will not attempt to capture any other peasants or knights and will keep trying

// to move toward the peasant even if there is another peasant or knight in the way

import java.awt.Point;

public void moveAndCapture(IKnight knight, IPeasant peasant) { // return if the peasant is null or has already been captured if (peasant == null || !peasant.isAlive())

return;

// find the next position in the direction of the peasant

int dir = knight.getDirectionTo(peasant.getX(), peasant.getY());

Point np = World.getPositionAfterMove(knight.getX(), knight.getY(), dir); if (np != null) {

//if the peasant is in the adjacent square, capture it. Otherwise, try to keep moving

(8)

capture(knight, dir); else

move(knight, dir); }

}

Naturalmente podemos e devemos fazer melhor do que esta estratégia, como por exemplo tentar mover os peões para longe de outros peões e cavaleiros. Tentar apropriar-se do maior número de terras possiveis. Utilizar os cavaleiros para capturar castelos, cavaleiros e peões de forma sistemática.

Como submeter o trabalho ao Mooshak?

Este trabalho é para ser realizado em grupos de dois elementos. Portanto vai ser necesário criar novos users no mooshak. O nome do utilizar vai consistir nos números dos alunos do grupo separados um underscore, por exemplo

28251_28241 seria um user válido para o grupo com os alunos 28251 e 28241. A submissão deve consistir num ficheiro zip com a classe MyRuler.java, que não está dentro de uma directoria poo. Pode submeter mais que uma versão da sua implementação, a que será usada na competição é a última que enviar.

Quanto vale este trabalho?

Este trabalho vale 5 pontos. Para quem submeter uma implementação que apresente um comportamento razoável serão atribuídos 3 pontos. As equipas presentes na primeira metade da tabela obtêm mais 2 pontos.

Existem 4 pontos de bónus que são dados extra. Os finalistas (batalha final) obtêm um bónus de 2 pontos e o vencedor do jogo recebe um bónus de outros 2 pontos.

Qual é o prazo de entrega?

O servidor de mooshak será encerrado às 23h55 do dia 13 de Abril de 2009.

Aviso importante:

Este trabalho, enquanto actividade educativa da licenciatura em engenharia informática, deve ser desenvolvido com o mais estrito respeito pelo código de ética da licenciatura. Serão reprovados os todos os alunos que entreguem plágios. A equipa de POO vai verificar activamente esta situação com auxilio da

Referências

Documentos relacionados

• Revisão profunda e abrangente do sistema da tributação das empresas, de forma a promover, entre outros, a simplificação do IRC, a redefinição da respetiva base tributável,

Nesse congresso foi deliberado que não ocorreria nenhuma vinculação a partidos (ou a um modelo ou diretriz proletária), sendo que o congresso via “como ’única base

Juntamen- te com nossas organizações parceiras, sensibilizamos atoras/es políticas/os e sociedades no mundo inteiro, para as consequências globais da mudança climática.. Abdul

Distinção para ideias e projetos que “nasçam do conhecimento” e empresas, produtos, serviços e processos que se destaquem em atividades de investigação e

Durante alguns anos, a atividade formal denominada ''teste de software&#34; perdeu um pouco de espaço como instrumento de garantia de qualidade, ocorrendo a

Brincadeira refere-se, basicamente, à ação de brincar, ao comporta- mento espontâneo que resulta de uma atividade não-estruturada; jogo é compreendido como uma brincadeira que

A estratégia brotou da guerra, um primeiro paradoxo, visto de uma figura do mal ressaltar um suposto bem: suposto, dado que a ponderação que o autor vê na

A resposta do Grupo de Peritos às três perguntas formuladas inicialmente (a estratégia, tipo de missões e lugar da Aliança Atlântica no século xxi ) foi que a nato não deve