JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes.

Slides:



Advertisements
Apresentações semelhantes
C# e Programação Genérica
Advertisements

Classes C++ Class nome da classe { private: membros privados
1. Classes 2. Membros estáticos 1.1. Palavra chave this
ADT – Arvore Binária de Pesquisa
Projeto de Sistemas de Software Luana Lachtermacher
Kleinner Farias e Raphael do Vale
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Orientação a Objetos: Modificador Final para Métodos e Classes
1 Java: Tratamento de Exceções Alcides Calsavara.
Percurso não recursivo e impressão em árvores binárias Drozdek.
Pilhas e Filas.
Classificação. 2 Métodos de Classificação Os métodos de classificação podem ser dos tipos: Classificação interna – quando toda a coleção de itens a classificar.
Estruturas Fundamentais
Filas circulares.
Listas Encadeadas Circulares Listas Duplamente Encadeadas
Singleton.
Polimorfismo e Classes Abstratas Profa
Capítulo 13 Pacotes. 2 Capítulo 13 – Pacotes Pacotes Pacote Cláusula package Cláusula import Executando uma classe de pacote Modificadores de acesso.
Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software
TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Como o AspectJ tece o código
1 Aula 3 Listas e iteradores (cont.). 2003/2004 Programação Orientada para Objectos 2 ListaDeInt : interface class ListaDeInt { public: typedef int Item;
Aula 8 Polimorfismo.
1 Aula 7 Herança. 2003/2004 Programação Orientada para Objectos 2 Conceitos fundamentais: Herança Polimorfismo Ligação dinâmica.
2002/2003 Programação Orientada para Objectos 1 Aula 3 Utilização de listas Melhorando a implementação das listas e iteradores Reflexão sobre interfaces.
A linguagem C#.
Usando Java no Oracle Por Edson Almeida Junior
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Introdução a linguagem Python
Departamento de Estatística e Informática
Threads, Gerenciamento de Threads Pool de Threads, Grupo de Threads Variáveis Locais à Threads.
C# Herança Sharp Shooters .NET Universidade Federal de Pernambuco Centro de Informática Recife, 23/09/2002 Autor: Marden Menezes Costa.
JAVA Orientação a Objetos
Uma classe para vectores
Hashing - Espalhamento
Análise Sintática – Parte 1
Scala Bruno Barros e Rebeka Gomes
Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é.
Capítulo 2. Generics  Novo recurso de linguagem surgida a partir da versão 5  Permite a utilização de tipos parametrizados por classes e métodos tornando-os.
RT-EXPERT Artis Corp. C calling program RTSUB [rule set subroutine] RTSUB [rule set subroutine] RTSUB [rule set subroutine]... DSL Decision Support Language.
Orientação a Objetos e Java Graduação em Ciência da Computação
Java Generics Adeline de Sousa Silva.
Tipos Especiais de Listas
© 2012 Autodesk Autodesk Revit para projetos executivos de arquitetura Módulo 2: Otimizando a modelagem para documentação Tiago Marçal Ricotta Gerente.
Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Orientação a Objetos: herança Professor: Sandro Rigo.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Paradigmas da Programação – Semestre 2 – Aula 13 Professor: Eduardo Mantovani Prof. Fábio de Paula Santos
Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo.
Java Kickstart, day 2 Semelhanças com linguagem C.
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Polimorfismo.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Ferramenta para Linhas de Produtos - FLiP Vilmar Nepomuceno – Andréa Menezes –
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Programação orientada a objetos Com Visual Studio.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Linha de Produção de Jogo Móveis Danilo Cavalcanti Torres - dct.
Revisão Mini-Prova 1 Monitoria IP/CC (~if669).
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Aprendendo como funciona o NHibernate Elvis Medeiros Programador .NET
Associação. 2 Desafio – Aula class Aluno { 2. private String nome; 3. private float nota; 4. public Aluno(String nome, float nota){ 5. this.nome.
Implementação Orientada a Objetos – Aula 07 Agregação e composição de objetos Prof. Danielle Martin Universidade de Mogi das Cruzes
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
1 Arquitetura e JSF Gustavo Wagner
IDENTIFICAÇÃO DOS RELACIONAMENTOS Nesta atividade devem ser definidos os relacionamentos entre as classes Podem ser representados pela: – associação, –
Java: Interfaces Alcides Calsavara.
Orientação a Objetos - Programação em C++
Transcrição da apresentação:

JMario Equipe Augusto Cesar Neves Lima Filho

JMario Jogo usando Java2D Fiel ao clássico Mario para snes

Feature Model

public void init(){... imagemInterfacePontuacao = resourceManager.loadImage( "interfacePontuacao.png"); imagemInterfaceTotal = resourceManager.loadImage( "interfaceTotal.png"); imagemInterfacePausa = resourceManager.loadImage( "interfacePausa.png" ); } Feature - Language

privileged abstract aspect LanguageSupport {... private Image GameManager.loadImageLang (String name, String language) {... } pointcut resourceInit(GameManager gm) : execution(* *.init()) &&... protected abstract String getLanguageCode(); after(GameManager gm) returning : resourceInit(gm){ gm.imagemInterfacePontuacao = gm.loadImageLang("interfacePontuacao.png", getLanguageCode ());... }... aspect EnglishSupport extends LanguageSupport{ protected String getLanguage(){ return "US"; }

Feature Model

Feature - Language

Feature – Changeable Language

privileged aspect ChangeLanguageAspect... private LanguageStrategy GameManager.languageStrategy; private LanguageFactory GameManager.languageFactory = new LanguageFactory(); before(GameManager gm) : checkInput(gm){ if (gm.language.isPressed()) {... }... private void GameManager.changeLanguage() { languageStrategy = languageFactory.createLanguageStrategy(); imagemInterfacePontuacao = languageStratrategy.loadImageLang("interfacePontuacao.png");... }

Feature Model

public void loadCreatureSprites() {... Image[][] imagensBat = new Image[4][]; Image[][] imagensTurtle = new Image[4][]; Image[][] imagensMummyTurtle = new Image[4][]; Image[][] imagensBlueDragon = new Image[4][];... imagensFlyGoomba[1] = new Image[imagensFlyGoomba[0].length]; imagensFlyGoomba[2] = new Image[imagensFlyGoomba[0].length]; imagensFlyGoomba[3] = new Image[imagensFlyGoomba[0].length]; imagensGoomba[1] = new Image[imagensGoomba[0].length]; imagensGoomba[2] = new Image[imagensGoomba[0].length]; imagensGoomba[3] = new Image[imagensGoomba[0].length]; imagensGreenKoopa[1] = new Image[imagensGreenKoopa[0].length]; imagensGreenKoopa[2] = new Image[imagensGreenKoopa[0].length]; imagensGreenKoopa[3] = new Image[imagensGreenKoopa[0].length];... Feature Model

Gráfico de Clones

Feature Model

Técnica : Code Generation and Transformation (CGT)

Feature – Static Enemy

public void loadCreatureSprites() { #foreach($enemy in $enemys) Image[][] imagens$enemy.Name = new Image[4][]; #end... #foreach($enemy in $enemys) imagens$enemy.Name[ 1 ] = new Image[ imagens$enemy. Name[ 0 ].length ]; imagens$enemy.Name[ 2 ] = new Image[ imagens$enemy. Name[ 0 ].length ]; imagens$enemy.Name[ 3 ] = new Image[ imagens$enemy. Name[ 0 ].length ]; #end...

Feature – Static Enemy...

Gráfico de Clones

Redução : 54%

Feature Model Técnica : Adaptive Object Model (AOM)

Feature: User-Defined enemys

public void loadCreatureSprites() { XMLEnemyHandler handler = new XMLEnemyHandler();... List enemys = handler.getEnemys(); for (int i = 0; i < enemys.size(); i++) { EnemyDescription enemyDescription = enemys.get(i);... EnemyType enemyType = new EnemyType(enemyDescription.getCodigo(), enemyDescription.getName(), enemyDescription.getSpeed(), enemyDescription.isFlyer());... Feature: User-Defined enemys

//#ifdef aom import variations.EnemyType; //#endif //#ifdef aom public class Creature extends Sprite { //#else abstract class Creature extends Sprite { //#endif Feature: User-Defined enemys

Dificuldades Uso de técnicas não definidas diretamente em decision models Flip-Pure-Variants

Atividades – Tempo AtividadeTécnica ou FerramentaTempo Identificação de featuresManualmente/CCFinder2 horas Desenho do modelo de features Captain Feature1 hora Configuração do ambiente e estudo de ferramentas Flip/Pure-Variants3 horas Extração da feature de Linguagem Flip2 horas Inclusão do ponto de variação para feature de inimigos Manualmente1 hora Extração da feature de StaticEnemys Flip/Manualmente3 horas Extração da feature de User-Defined enemys Manualmente6 horas Montagem do configuration knowledge Pure-Variants2 horas

Conclusões Uso de diversas técnicas em uma mesma variação Uso extensivo de AO