SlideShare a Scribd company logo
1 of 15
Download to read offline
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Trabalho em
Greenfoot
“The Forbidden Book”
Grupo I 21
Discente: Vitor Faria nº 2110312
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 1
Índice
Introdução .................................................................................................................................... 2
Alterações à ideia inicial............................................................................................................... 2
Objetivos....................................................................................................................................... 3
Requisitos do Greenfoot .............................................................................................................. 3
Requisitos Programação Orientada por Objetos......................................................................... 7
Conclusão.................................................................................................................................... 13
Bibliografia.................................................................................................................................. 14
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 2
Introdução
Este trabalho feito é realizado no âmbito da disciplina “Programação Orientada por
Objetos”, incidindo na plataforma “Greenfoot” e em conceitos de programação orientada por
objetos.
Foi-nos proposto, pela regente da disciplina, que desenvolvêssemos uma aplicação, de
tema livre, usando a plataforma “Greenfoot” (aplicação Java que ajuda na escrita de programas
ou aplicações- Através desta, podemos interagir diretamente com os componentes, o que
facilita bastante a aprendizagem da “linguagem” Java).
Optámos por um jogo- sobre um tema de sobrenatural. Assim, o cenário decorre num
espaço imaginário onde dois amigos, num dia absolutamente normal de escola, fazem a
descoberta de um livro antigo japonês. Ao folhear o livro, numa página específica, é despoletada
toda a ação. São de imediato transportados para “Yomi-no-koni” ( palavra japonesa que
corresponde à "terra dos mortos", de acordo com a mitologia "Shinto"). Este, é o lugar para
onde os mortos vão depois da vida e uma vez indo ao coração de “Yomi”, não está ao alcance
de todos o retorno para a "terra dos vivos". Para conseguir voltar, o nosso protagonista (que
será o agente principal do jogo) terá de abater aqueles que estão em “Yomi-no-koni”, passando
por três estados (níveis) até chegar ao confronto final com “Satã”.
Na elaboração deste jogo recorremos, à regente da disciplina , aos slides
disponibilizados e à auto investigação, para conseguirmos atingir nossos objetivos.
Alterações à ideia inicial
No princípio tínhamos pensado num enredo diferente, mas com o desenrolar do
trabalho evoluímos para o atual. Assim, “Satã” estava pensado para ir perdendo a cor, mas
mantivemos a sua cor. No disparo acrescentámos características - Assim, e agora, depois de
atingir um certo número de inimigos (não é um número certo, visto ser calculado por
probabilidade) ficamos com a opção das “explosões”, opção assegurada através da utilização da
tecla “shift”. E, também, com a energia no máximo, temos a hipótese através de um “click”, no
rato, de mudar para metralhadora.
Finalmente, temos as evoluções normalmente decorrentes da elaboração do trabalho,
que também não estavam previstas, e pensadas, mas que, ou para cumprir com os objetivos de
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 3
programação orientada por objetos, ou para enriquecer o jogo acabaram por ir sendo
implementadas.
Objetivos
O nosso objetivo aquando da realização deste trabalho foi , não só conseguirmos
implementar um jogo aprazível de ser jogado, mas também demonstrar domínio da plataforma
“Greenfoot” e utilização das suas funcionalidades, como compreensão do paradigma de
programação por objetos e aplicação dos respetivos conceitos.
Requisitos do Greenfoot
 Manipulação de sons
Como podemos observar no exemplo da figura 1 para a música de fundo. Onde
declaramos uma variável “music” apenas para esta classe do tipo “GreenfootSound” em que
guarda a nossa música de fundo e depois é usada nos métodos criados para começar e parar
a musica.
Figura 1 implementação da música de fundo
 Manipulação de cores, como demonstra a figura 2
Tivemos de importar “java.awt.Color”, depois declaramos três variáveis red, green, blue,
para representarem as cores do modelo RGB, porque têm uma representação numérica,
dando-nos assim a hipótese de manipular a intensidade das cores. Depois no método
“private void drawScore()” criado para desenhar o “score” criamos um objeto da classe
“color” composto pelas nossas variáveis das cores “myColor = new Color ( red , green ,
blue)”. Variáveis essas que vão variando de valores, graças aos ciclos “if” criados dentro do
método “private void paint()” (como ilustrado na figura 2), criando o efeito desejado
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 4
Figura 2. Implementação do efeito das letras do “Score”
 Animação.
Para a animação começamos por declarar uma vetor do tipo GreenfootImage com o
nome anima1 (“private GreenfootImage [] anima1;”). No “construtor” definimos o vetor
com dimensão 3 com cada posição a ter uma imagem diferente e definimos a primeira
imagem como sendo a imagem da primeira posição do vetor. Depois implementamos um
método para ir navegando no vetor de maneira a ir mudando de imagem e criar a sensação
de animação, como exemplificado na figura 3.
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 5
Figura 3: Implementação da animação do Zombie_slime
 Transparência
Na implementação do efeito transparência começamos por declarar uma variável
“imagemFumo” do tipo “GreenfootImage”, depois implementamos o método onde a
variável do tipo “GreenfootImage” irá receber a própria imagem da classe (getImage()) de
seguida declaramos uma variável do tipo “inteiro” onde irá guardar o valor da textura
devolvido por “imagemFumo.getTransparency”. Depois com um ciclo “if” manipulamos
essa textura de forma a criar o efeito da transparência com a ajuda do “método
removeObject(this)”.
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 6
 Manipulação do Tamanho
Na classe “addpoints” usamos o método “scale()” (próprio do Greenfoot) para dar novo
tamanho a “image2” utilizamos também o valor da variável “totalPoints” para o cumprimento
ir variando .
 “image2.scale( totalPoints , 15);”
 Utilização do Rato e Teclado
Aqui implementamos dois métodos um para a utilização do rato que chamamos
“followmouse”, onde declaramos uma variável “follow” para guardar o valor devolvido pelo
método “getMouseInfo()” e depois com um ciclo “if” que só acontece se o valor de “follow” for
diferente de “0” definimos a localização do objeto da classe “student” com os valores da
variável follow. Para a utilização do teclado implementamos um método com dois ciclos “if”
condicionados pelo retorno do método “isKeyDown” (True ou False) e depis com a invocação
do método “turn()” colocamos o argumento que define o sentido do movimento
Utilização do Rato Utilização do Teclado
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 7
 Texto
Para criação de texto implementamos uma subclasse específica para o efeito servindo de
“construtor” do nosso texto para de seguida na classe “Menu” adicionarmos uma objeto desta
classe com as características que definimos em seu construtor tal como ilustra a figura 4.
Figura 4: Definição do Texto
Requisitos Programação Orientada por Objetos
 Métodos
Os métodos são criados para podermos interagir com os objetos e quando invocados
realizam um determinado comportamento nos objetos.
Para definir métodos precisamos declarar; o tipo de método, retorno, nome, parâmetros de
entrada. Quanto ao tipo pode ser private (só pode ser acedido dentro da classe em que foi
criado), protected (pode ser acedido dentro da sua classe e pelas suas subclasses) e public (pode
ser acedido por qualquer classe). Exemplificado na figura 5.
Assinatura do Método Corpo Método
Figura 5: Caracterização de Método
Implementamos vários métodos, salvo algumas exceções foi em todas as classes.
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 8
 Atributos
Podem ser locais (no corpo do método) ou globais fora dos métodos. O estado interno de
um objeto é dado pelos seus atributos, utilizando o “Inspect” podemos observar os atributos de
cada objeto. Um atributo tem um nome, um tipo de dados e a sua visibilidade (private,
protected, public).
Atributos Globais Atributos Locais
Figura 6. Atributos
 Inicialização de objetos usando os construtores
Um construtor é o método principal de uma classe pois sem ele nenhuma classe inicia. Como
o nome indica um construtor constrói a classe por isso ao criarmos um objeto,
Os construtores foram bastante importantes neste trabalho desde a simples atribuição de uma
imagem aos objetos como à passagem de parâmetros pelos construtores entre os mundos.
 Herança com um mínimo de 2 níveis além de Actor;
Herança é uma técnica no Java em que classes derivadas de uma superclasse podem herdar
métodos e atributos. Uma classe derivada de outra classe chama-se subclasse e a classe que
herda para as subclasses chama-se superclasse.
A palavra-chave na herança é “extends”, se fizermos por exemplo:
 “public class SubClass extends SuperClass”
Estamos a declarar que “SuperClass” é a superclasse e “SubClass” é a subclasse.
A utilização de herança no “Greenfoot” é simplificada pois basta clicar numa classe e
escolher “New Subclass…” ou então simplesmente manipularmos o texto de declaração de
maneira a obtermos o pretendido.
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 9
Temos no nosso jogo várias superclasses => subclasses:
World => History
=> win
=> Yomi_no_Koni
=>History3
World => History2
=> GameOver
=> Menu
Actor => Upgrades
=> Slime
=> PaintWorlds
=> Bullet
=> Zombie
=> Student
=> Explosion
=> Score
Upgrades => Points
Points => Fog
PaintWorlds => Book
=> Title
=> PplayB
=> HowtoB
=> TryAgain
=> GameOverTitle
=> Click
=> YouWin
=> Exit
=> Help
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 10
PaintWorlds => Story
Help => Help2
=> Help1
Story => StoryWin
=> Story1
Story => Story2
=> Story3
Bullet => Bullet1
=> BossBullets
Zombie => Zombie_boss
=> Zombie_slime
=> Zombie_Weak
=> Zombie_strong
Student => DummyStudent
Score => AddPoints
=> PointsBoard
=> ScoreBoard
ScoreBoard => Level2
=> Level3
 "Overriding" de métodos;
“Overriding” acontece quando uma subclasse tem um método com o mesmo nome,
mesmos parâmetros e o mesmo tipo de retorno que a sua superclasse. O que acontece é que o
método que é herdado da superclasse é substituído pelo da subclasse, de modo que o método
que atua é o novo. Como demonstramos na figura 6 com um exemplo nosso do método
“moves”.
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 11
Figura 7: Overriding
 "Overloading" de métodos;
“Overloading” acontece quando dentro duma mesma classe temos duas funções com o
mesmo nome e tipos de retorno iguais, no entanto recebem argumentos diferentes. Esta técnica
pode servir quando criamos duas ou mais funções com comportamentos parecidos mas que
recebem diferentes tipos de argumentos. Como neste exemplo que utilizamos para quando o
“Zombie_boss” volta ao “mundo” pela segunda vez no lado contrário e diferente.
Figura 8: Overloading
 Encapsulamento
O encapsulamento é uma medida de segurança na linguagem Java, de forma que o código
não seja acedido de forma aleatória fora da sua classe. O encapsulamento pode ser
assegurado de três formas usando as palavas chave:
Private: Só pode ser acedido dentro da sua classe.
Protected: Pode ser acedido dentro da sua classe e pelas suas subclasses.
Public: Pode ser acedido por qualquer classe.
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 12
 Utilização de listas (List).
Estes exemplos apresentados na figura 8 foram os por nós utilizados no nosso jogo
Figura 9: Listas
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 13
Conclusão
Com a elaboração deste trabalho tivemos a oportunidade de entrar em
contacto com a plataforma “Greenfoot”, a necessidade de fazermos
investigação para conseguimos atingir os requisitos do enunciado fez-nos
ganhar uma maior consolidação de conhecimentos tanto, da plataforma como
sobre os conceitos de programação por objetos.
Pensamos nós ter conseguido desenvolver um jogo, na nossa opinião,
de acordo com o que nos propusemos, tendo sido capaz de cumprir com todos
os requisitos do enunciado.
Centro de Competências das Ciências Exatas e da Engenharia
Programação Orientada por Objetos
Licenciatura em Engenharia Informática (LEI)
Programação Orientada por Objetos Página 14
Bibliografia
[1] http://moodle.dme.uma.pt (disciplina Programação Orientada por Objetos).
[2] “Enunciado do Trabalho em Greenfoot 2015.pdf”, http://moodle.dme.uma.pt
(Programação Orientada por Objetos).
[3] Fóruns, http://www.greenfoot.org/topics

More Related Content

What's hot

Diretrizes cuidados de Idosos com Diabetes Mellitus: Atualização 2013
Diretrizes cuidados de Idosos com Diabetes Mellitus: Atualização 2013Diretrizes cuidados de Idosos com Diabetes Mellitus: Atualização 2013
Diretrizes cuidados de Idosos com Diabetes Mellitus: Atualização 2013Digão Pereira
 
PPT - Discussão da Tese de Mestrado-LNEG
PPT - Discussão da Tese de Mestrado-LNEGPPT - Discussão da Tese de Mestrado-LNEG
PPT - Discussão da Tese de Mestrado-LNEGTomé Salgueiro
 
Análise de Fibra Bruta por diferentes Metodologias
Análise de Fibra Bruta  por diferentes MetodologiasAnálise de Fibra Bruta  por diferentes Metodologias
Análise de Fibra Bruta por diferentes MetodologiasKalliany Kellzer
 
Actividade Experimental nº2
Actividade Experimental nº2Actividade Experimental nº2
Actividade Experimental nº2Gabriela Bruno
 
Seguranca e prevenção- 9º ano
Seguranca e prevenção- 9º anoSeguranca e prevenção- 9º ano
Seguranca e prevenção- 9º anoYolanda Maria
 
Aula pos edu_3_realidade virtual
Aula pos edu_3_realidade virtualAula pos edu_3_realidade virtual
Aula pos edu_3_realidade virtualrauzis
 
apresentação Termômetro
apresentação Termômetro apresentação Termômetro
apresentação Termômetro Domingos Sérgio
 
Ap eve0316 iva na restauração- versão final
Ap eve0316   iva na restauração- versão finalAp eve0316   iva na restauração- versão final
Ap eve0316 iva na restauração- versão finalPaula Soares
 
Arc gis10.2 transparência de camada
Arc gis10.2 transparência de camadaArc gis10.2 transparência de camada
Arc gis10.2 transparência de camadaDanielle Corrêa
 
Relatório de estágio petroquímica - mario santana
Relatório  de estágio petroquímica - mario santanaRelatório  de estágio petroquímica - mario santana
Relatório de estágio petroquímica - mario santanaMario Santana
 
Exercicios de badminton.
Exercicios de badminton.Exercicios de badminton.
Exercicios de badminton.ameliasilva
 
SIICUSP 2014 - Desenvolvimento de exemplo trabalhado sobre proposições para e...
SIICUSP 2014 - Desenvolvimento de exemplo trabalhado sobre proposições para e...SIICUSP 2014 - Desenvolvimento de exemplo trabalhado sobre proposições para e...
SIICUSP 2014 - Desenvolvimento de exemplo trabalhado sobre proposições para e...Paulo Correia
 

What's hot (20)

Diretrizes cuidados de Idosos com Diabetes Mellitus: Atualização 2013
Diretrizes cuidados de Idosos com Diabetes Mellitus: Atualização 2013Diretrizes cuidados de Idosos com Diabetes Mellitus: Atualização 2013
Diretrizes cuidados de Idosos com Diabetes Mellitus: Atualização 2013
 
PPT - Discussão da Tese de Mestrado-LNEG
PPT - Discussão da Tese de Mestrado-LNEGPPT - Discussão da Tese de Mestrado-LNEG
PPT - Discussão da Tese de Mestrado-LNEG
 
Análise de Fibra Bruta por diferentes Metodologias
Análise de Fibra Bruta  por diferentes MetodologiasAnálise de Fibra Bruta  por diferentes Metodologias
Análise de Fibra Bruta por diferentes Metodologias
 
Defeitos da Visão
Defeitos da VisãoDefeitos da Visão
Defeitos da Visão
 
Actividade Experimental nº2
Actividade Experimental nº2Actividade Experimental nº2
Actividade Experimental nº2
 
1-Treinamento Pcts
1-Treinamento Pcts1-Treinamento Pcts
1-Treinamento Pcts
 
Aula 3 c. centesimal
Aula 3  c. centesimalAula 3  c. centesimal
Aula 3 c. centesimal
 
Seguranca e prevenção- 9º ano
Seguranca e prevenção- 9º anoSeguranca e prevenção- 9º ano
Seguranca e prevenção- 9º ano
 
Aula pos edu_3_realidade virtual
Aula pos edu_3_realidade virtualAula pos edu_3_realidade virtual
Aula pos edu_3_realidade virtual
 
apresentação Termômetro
apresentação Termômetro apresentação Termômetro
apresentação Termômetro
 
Ap eve0316 iva na restauração- versão final
Ap eve0316   iva na restauração- versão finalAp eve0316   iva na restauração- versão final
Ap eve0316 iva na restauração- versão final
 
Fermentação
FermentaçãoFermentação
Fermentação
 
Arc gis10.2 transparência de camada
Arc gis10.2 transparência de camadaArc gis10.2 transparência de camada
Arc gis10.2 transparência de camada
 
Prevenção rodoviária
Prevenção rodoviáriaPrevenção rodoviária
Prevenção rodoviária
 
Relatório de estágio petroquímica - mario santana
Relatório  de estágio petroquímica - mario santanaRelatório  de estágio petroquímica - mario santana
Relatório de estágio petroquímica - mario santana
 
[c7s] Diabetes
[c7s] Diabetes [c7s] Diabetes
[c7s] Diabetes
 
Trocas de calor
Trocas de calorTrocas de calor
Trocas de calor
 
Exercicios de badminton.
Exercicios de badminton.Exercicios de badminton.
Exercicios de badminton.
 
Diabetes mellitus
Diabetes mellitusDiabetes mellitus
Diabetes mellitus
 
SIICUSP 2014 - Desenvolvimento de exemplo trabalhado sobre proposições para e...
SIICUSP 2014 - Desenvolvimento de exemplo trabalhado sobre proposições para e...SIICUSP 2014 - Desenvolvimento de exemplo trabalhado sobre proposições para e...
SIICUSP 2014 - Desenvolvimento de exemplo trabalhado sobre proposições para e...
 

Similar to Trabalho em greenfoot

Introducao a Linguagem Kotlin
Introducao a Linguagem KotlinIntroducao a Linguagem Kotlin
Introducao a Linguagem KotlinCalebeMiquissene
 
Aplicando camadas de processamento durante o Aumento Sintético de uma base de...
Aplicando camadas de processamento durante o Aumento Sintético de uma base de...Aplicando camadas de processamento durante o Aumento Sintético de uma base de...
Aplicando camadas de processamento durante o Aumento Sintético de uma base de...Fernando Feltrin
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Odair Bonin Borges
 
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Matheus Calegaro
 
Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3Odair Bonin Borges
 
Tutorial 2 - Manipulando imagens 2D no jogo [26.09.2011]
Tutorial 2 - Manipulando imagens 2D no jogo [26.09.2011]Tutorial 2 - Manipulando imagens 2D no jogo [26.09.2011]
Tutorial 2 - Manipulando imagens 2D no jogo [26.09.2011]Elen Arantza
 
Estudo de-Funções-Quadráticas-Utilizando-o-Geogebra.
Estudo de-Funções-Quadráticas-Utilizando-o-Geogebra.Estudo de-Funções-Quadráticas-Utilizando-o-Geogebra.
Estudo de-Funções-Quadráticas-Utilizando-o-Geogebra.Alexandre Mazzei
 
Processo de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdfProcesso de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdfJean Marie Jhon
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11Luis Ferreira
 
Criação de jogos scratch - férias
Criação de jogos   scratch - fériasCriação de jogos   scratch - férias
Criação de jogos scratch - fériasInstituto Inovar
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#biandamakengo08
 
Por que você deveria aprender python?
Por que você deveria aprender python?Por que você deveria aprender python?
Por que você deveria aprender python?Felipe Volpone
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)Mario Sergio
 
POO-FundamentosPOO.pdf
POO-FundamentosPOO.pdfPOO-FundamentosPOO.pdf
POO-FundamentosPOO.pdfFausto Ayres
 

Similar to Trabalho em greenfoot (20)

Introducao a Linguagem Kotlin
Introducao a Linguagem KotlinIntroducao a Linguagem Kotlin
Introducao a Linguagem Kotlin
 
Aplicando camadas de processamento durante o Aumento Sintético de uma base de...
Aplicando camadas de processamento durante o Aumento Sintético de uma base de...Aplicando camadas de processamento durante o Aumento Sintético de uma base de...
Aplicando camadas de processamento durante o Aumento Sintético de uma base de...
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2
 
TESTE
TESTETESTE
TESTE
 
11477 41952-1-pb
11477 41952-1-pb11477 41952-1-pb
11477 41952-1-pb
 
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2
 
Guia xna
Guia xnaGuia xna
Guia xna
 
Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3
 
Tutorial 2 - Manipulando imagens 2D no jogo [26.09.2011]
Tutorial 2 - Manipulando imagens 2D no jogo [26.09.2011]Tutorial 2 - Manipulando imagens 2D no jogo [26.09.2011]
Tutorial 2 - Manipulando imagens 2D no jogo [26.09.2011]
 
Minicurso pygame
Minicurso pygameMinicurso pygame
Minicurso pygame
 
Estudo de-Funções-Quadráticas-Utilizando-o-Geogebra.
Estudo de-Funções-Quadráticas-Utilizando-o-Geogebra.Estudo de-Funções-Quadráticas-Utilizando-o-Geogebra.
Estudo de-Funções-Quadráticas-Utilizando-o-Geogebra.
 
Processo de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdfProcesso de desenvolvimento de Jogos.pdf
Processo de desenvolvimento de Jogos.pdf
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11
 
Criação de jogos scratch - férias
Criação de jogos   scratch - fériasCriação de jogos   scratch - férias
Criação de jogos scratch - férias
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
Geogebra
GeogebraGeogebra
Geogebra
 
Interface grafica
Interface graficaInterface grafica
Interface grafica
 
Por que você deveria aprender python?
Por que você deveria aprender python?Por que você deveria aprender python?
Por que você deveria aprender python?
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
POO-FundamentosPOO.pdf
POO-FundamentosPOO.pdfPOO-FundamentosPOO.pdf
POO-FundamentosPOO.pdf
 

Trabalho em greenfoot

  • 1. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Trabalho em Greenfoot “The Forbidden Book” Grupo I 21 Discente: Vitor Faria nº 2110312
  • 2. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 1 Índice Introdução .................................................................................................................................... 2 Alterações à ideia inicial............................................................................................................... 2 Objetivos....................................................................................................................................... 3 Requisitos do Greenfoot .............................................................................................................. 3 Requisitos Programação Orientada por Objetos......................................................................... 7 Conclusão.................................................................................................................................... 13 Bibliografia.................................................................................................................................. 14
  • 3. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 2 Introdução Este trabalho feito é realizado no âmbito da disciplina “Programação Orientada por Objetos”, incidindo na plataforma “Greenfoot” e em conceitos de programação orientada por objetos. Foi-nos proposto, pela regente da disciplina, que desenvolvêssemos uma aplicação, de tema livre, usando a plataforma “Greenfoot” (aplicação Java que ajuda na escrita de programas ou aplicações- Através desta, podemos interagir diretamente com os componentes, o que facilita bastante a aprendizagem da “linguagem” Java). Optámos por um jogo- sobre um tema de sobrenatural. Assim, o cenário decorre num espaço imaginário onde dois amigos, num dia absolutamente normal de escola, fazem a descoberta de um livro antigo japonês. Ao folhear o livro, numa página específica, é despoletada toda a ação. São de imediato transportados para “Yomi-no-koni” ( palavra japonesa que corresponde à "terra dos mortos", de acordo com a mitologia "Shinto"). Este, é o lugar para onde os mortos vão depois da vida e uma vez indo ao coração de “Yomi”, não está ao alcance de todos o retorno para a "terra dos vivos". Para conseguir voltar, o nosso protagonista (que será o agente principal do jogo) terá de abater aqueles que estão em “Yomi-no-koni”, passando por três estados (níveis) até chegar ao confronto final com “Satã”. Na elaboração deste jogo recorremos, à regente da disciplina , aos slides disponibilizados e à auto investigação, para conseguirmos atingir nossos objetivos. Alterações à ideia inicial No princípio tínhamos pensado num enredo diferente, mas com o desenrolar do trabalho evoluímos para o atual. Assim, “Satã” estava pensado para ir perdendo a cor, mas mantivemos a sua cor. No disparo acrescentámos características - Assim, e agora, depois de atingir um certo número de inimigos (não é um número certo, visto ser calculado por probabilidade) ficamos com a opção das “explosões”, opção assegurada através da utilização da tecla “shift”. E, também, com a energia no máximo, temos a hipótese através de um “click”, no rato, de mudar para metralhadora. Finalmente, temos as evoluções normalmente decorrentes da elaboração do trabalho, que também não estavam previstas, e pensadas, mas que, ou para cumprir com os objetivos de
  • 4. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 3 programação orientada por objetos, ou para enriquecer o jogo acabaram por ir sendo implementadas. Objetivos O nosso objetivo aquando da realização deste trabalho foi , não só conseguirmos implementar um jogo aprazível de ser jogado, mas também demonstrar domínio da plataforma “Greenfoot” e utilização das suas funcionalidades, como compreensão do paradigma de programação por objetos e aplicação dos respetivos conceitos. Requisitos do Greenfoot  Manipulação de sons Como podemos observar no exemplo da figura 1 para a música de fundo. Onde declaramos uma variável “music” apenas para esta classe do tipo “GreenfootSound” em que guarda a nossa música de fundo e depois é usada nos métodos criados para começar e parar a musica. Figura 1 implementação da música de fundo  Manipulação de cores, como demonstra a figura 2 Tivemos de importar “java.awt.Color”, depois declaramos três variáveis red, green, blue, para representarem as cores do modelo RGB, porque têm uma representação numérica, dando-nos assim a hipótese de manipular a intensidade das cores. Depois no método “private void drawScore()” criado para desenhar o “score” criamos um objeto da classe “color” composto pelas nossas variáveis das cores “myColor = new Color ( red , green , blue)”. Variáveis essas que vão variando de valores, graças aos ciclos “if” criados dentro do método “private void paint()” (como ilustrado na figura 2), criando o efeito desejado
  • 5. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 4 Figura 2. Implementação do efeito das letras do “Score”  Animação. Para a animação começamos por declarar uma vetor do tipo GreenfootImage com o nome anima1 (“private GreenfootImage [] anima1;”). No “construtor” definimos o vetor com dimensão 3 com cada posição a ter uma imagem diferente e definimos a primeira imagem como sendo a imagem da primeira posição do vetor. Depois implementamos um método para ir navegando no vetor de maneira a ir mudando de imagem e criar a sensação de animação, como exemplificado na figura 3.
  • 6. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 5 Figura 3: Implementação da animação do Zombie_slime  Transparência Na implementação do efeito transparência começamos por declarar uma variável “imagemFumo” do tipo “GreenfootImage”, depois implementamos o método onde a variável do tipo “GreenfootImage” irá receber a própria imagem da classe (getImage()) de seguida declaramos uma variável do tipo “inteiro” onde irá guardar o valor da textura devolvido por “imagemFumo.getTransparency”. Depois com um ciclo “if” manipulamos essa textura de forma a criar o efeito da transparência com a ajuda do “método removeObject(this)”.
  • 7. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 6  Manipulação do Tamanho Na classe “addpoints” usamos o método “scale()” (próprio do Greenfoot) para dar novo tamanho a “image2” utilizamos também o valor da variável “totalPoints” para o cumprimento ir variando .  “image2.scale( totalPoints , 15);”  Utilização do Rato e Teclado Aqui implementamos dois métodos um para a utilização do rato que chamamos “followmouse”, onde declaramos uma variável “follow” para guardar o valor devolvido pelo método “getMouseInfo()” e depois com um ciclo “if” que só acontece se o valor de “follow” for diferente de “0” definimos a localização do objeto da classe “student” com os valores da variável follow. Para a utilização do teclado implementamos um método com dois ciclos “if” condicionados pelo retorno do método “isKeyDown” (True ou False) e depis com a invocação do método “turn()” colocamos o argumento que define o sentido do movimento Utilização do Rato Utilização do Teclado
  • 8. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 7  Texto Para criação de texto implementamos uma subclasse específica para o efeito servindo de “construtor” do nosso texto para de seguida na classe “Menu” adicionarmos uma objeto desta classe com as características que definimos em seu construtor tal como ilustra a figura 4. Figura 4: Definição do Texto Requisitos Programação Orientada por Objetos  Métodos Os métodos são criados para podermos interagir com os objetos e quando invocados realizam um determinado comportamento nos objetos. Para definir métodos precisamos declarar; o tipo de método, retorno, nome, parâmetros de entrada. Quanto ao tipo pode ser private (só pode ser acedido dentro da classe em que foi criado), protected (pode ser acedido dentro da sua classe e pelas suas subclasses) e public (pode ser acedido por qualquer classe). Exemplificado na figura 5. Assinatura do Método Corpo Método Figura 5: Caracterização de Método Implementamos vários métodos, salvo algumas exceções foi em todas as classes.
  • 9. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 8  Atributos Podem ser locais (no corpo do método) ou globais fora dos métodos. O estado interno de um objeto é dado pelos seus atributos, utilizando o “Inspect” podemos observar os atributos de cada objeto. Um atributo tem um nome, um tipo de dados e a sua visibilidade (private, protected, public). Atributos Globais Atributos Locais Figura 6. Atributos  Inicialização de objetos usando os construtores Um construtor é o método principal de uma classe pois sem ele nenhuma classe inicia. Como o nome indica um construtor constrói a classe por isso ao criarmos um objeto, Os construtores foram bastante importantes neste trabalho desde a simples atribuição de uma imagem aos objetos como à passagem de parâmetros pelos construtores entre os mundos.  Herança com um mínimo de 2 níveis além de Actor; Herança é uma técnica no Java em que classes derivadas de uma superclasse podem herdar métodos e atributos. Uma classe derivada de outra classe chama-se subclasse e a classe que herda para as subclasses chama-se superclasse. A palavra-chave na herança é “extends”, se fizermos por exemplo:  “public class SubClass extends SuperClass” Estamos a declarar que “SuperClass” é a superclasse e “SubClass” é a subclasse. A utilização de herança no “Greenfoot” é simplificada pois basta clicar numa classe e escolher “New Subclass…” ou então simplesmente manipularmos o texto de declaração de maneira a obtermos o pretendido.
  • 10. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 9 Temos no nosso jogo várias superclasses => subclasses: World => History => win => Yomi_no_Koni =>History3 World => History2 => GameOver => Menu Actor => Upgrades => Slime => PaintWorlds => Bullet => Zombie => Student => Explosion => Score Upgrades => Points Points => Fog PaintWorlds => Book => Title => PplayB => HowtoB => TryAgain => GameOverTitle => Click => YouWin => Exit => Help
  • 11. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 10 PaintWorlds => Story Help => Help2 => Help1 Story => StoryWin => Story1 Story => Story2 => Story3 Bullet => Bullet1 => BossBullets Zombie => Zombie_boss => Zombie_slime => Zombie_Weak => Zombie_strong Student => DummyStudent Score => AddPoints => PointsBoard => ScoreBoard ScoreBoard => Level2 => Level3  "Overriding" de métodos; “Overriding” acontece quando uma subclasse tem um método com o mesmo nome, mesmos parâmetros e o mesmo tipo de retorno que a sua superclasse. O que acontece é que o método que é herdado da superclasse é substituído pelo da subclasse, de modo que o método que atua é o novo. Como demonstramos na figura 6 com um exemplo nosso do método “moves”.
  • 12. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 11 Figura 7: Overriding  "Overloading" de métodos; “Overloading” acontece quando dentro duma mesma classe temos duas funções com o mesmo nome e tipos de retorno iguais, no entanto recebem argumentos diferentes. Esta técnica pode servir quando criamos duas ou mais funções com comportamentos parecidos mas que recebem diferentes tipos de argumentos. Como neste exemplo que utilizamos para quando o “Zombie_boss” volta ao “mundo” pela segunda vez no lado contrário e diferente. Figura 8: Overloading  Encapsulamento O encapsulamento é uma medida de segurança na linguagem Java, de forma que o código não seja acedido de forma aleatória fora da sua classe. O encapsulamento pode ser assegurado de três formas usando as palavas chave: Private: Só pode ser acedido dentro da sua classe. Protected: Pode ser acedido dentro da sua classe e pelas suas subclasses. Public: Pode ser acedido por qualquer classe.
  • 13. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 12  Utilização de listas (List). Estes exemplos apresentados na figura 8 foram os por nós utilizados no nosso jogo Figura 9: Listas
  • 14. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 13 Conclusão Com a elaboração deste trabalho tivemos a oportunidade de entrar em contacto com a plataforma “Greenfoot”, a necessidade de fazermos investigação para conseguimos atingir os requisitos do enunciado fez-nos ganhar uma maior consolidação de conhecimentos tanto, da plataforma como sobre os conceitos de programação por objetos. Pensamos nós ter conseguido desenvolver um jogo, na nossa opinião, de acordo com o que nos propusemos, tendo sido capaz de cumprir com todos os requisitos do enunciado.
  • 15. Centro de Competências das Ciências Exatas e da Engenharia Programação Orientada por Objetos Licenciatura em Engenharia Informática (LEI) Programação Orientada por Objetos Página 14 Bibliografia [1] http://moodle.dme.uma.pt (disciplina Programação Orientada por Objetos). [2] “Enunciado do Trabalho em Greenfoot 2015.pdf”, http://moodle.dme.uma.pt (Programação Orientada por Objetos). [3] Fóruns, http://www.greenfoot.org/topics