jmario equipe augusto cesar neves lima filho. jmario jogo usando java2d fiel ao clássico mario para...
TRANSCRIPT
![Page 1: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/1.jpg)
JMario
Equipe Augusto Cesar Neves Lima Filho
![Page 2: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/2.jpg)
JMario• Jogo usando Java2D• Fiel ao clássico Mario para snes
![Page 3: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/3.jpg)
Feature Model
![Page 4: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/4.jpg)
Feature Model
![Page 5: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/5.jpg)
public void init(){...imagemInterfacePontuacao = resourceManager.loadImage("interfacePontuacao.png");
imagemInterfaceTotal = resourceManager.loadImage( "interfaceTotal.png");
imagemInterfacePausa = resourceManager.loadImage( "interfacePausa.png" );
}
Feature - Language
![Page 6: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/6.jpg)
Feature - Language
![Page 7: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/7.jpg)
Feature - Languageprivileged 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";
}
![Page 8: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/8.jpg)
Feature Model
![Page 9: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/9.jpg)
Feature Model
![Page 10: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/10.jpg)
Feature - Language
![Page 11: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/11.jpg)
LanguageStrategy
PortugueseLanguageStrategy EnglishLanguageStrategy
LanguageFactory GameManager
Feature – Changeable Language
![Page 12: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/12.jpg)
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");
...}
![Page 13: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/13.jpg)
Feature Model
![Page 14: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/14.jpg)
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
![Page 15: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/15.jpg)
Gráfico de Clones
![Page 16: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/16.jpg)
Gráfico de Clones
![Page 17: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/17.jpg)
Feature Model
![Page 18: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/18.jpg)
Feature Model
![Page 19: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/19.jpg)
Feature Model
Técnica : Code Generation and Transformation (CGT)
![Page 20: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/20.jpg)
Feature – Static Enemy
![Page 21: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/21.jpg)
Feature – Static Enemypublic 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
...
![Page 22: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/22.jpg)
Feature – Static Enemy<?xml version="1.0"?> <Enemys>
<Enemy NAME="Goomba" CODIGO="1" SPEED="0.1" FLYER="false">
<Frame NAME="goomba1.png"/> <Frame NAME="goomba2.png"/>
</Enemy>
<Enemy NAME="Fly Goomba" CODIGO="2" SPEED="0.1" FLYER="false">
<Frame NAME="flyGoomba1.png"/> <Frame NAME="flyGoomba2.png"/>
</Enemy>...
![Page 23: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/23.jpg)
Gráfico de Clones
![Page 24: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/24.jpg)
Gráfico de Clones
![Page 25: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/25.jpg)
Gráfico de Clones
Redução : 54%
![Page 26: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/26.jpg)
Feature Model
Técnica : Adaptive Object Model (AOM)
![Page 27: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/27.jpg)
Feature: User-Defined enemys
![Page 28: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/28.jpg)
Feature: User-Defined enemys
![Page 29: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/29.jpg)
public void loadCreatureSprites() { XMLEnemyHandler handler = new XMLEnemyHandler();
...List<EnemyDescription> 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
![Page 30: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/30.jpg)
//#ifdef aomimport variations.EnemyType;//#endif
//#ifdef aompublic class Creature extends Sprite {//#else//@public abstract class Creature extends Sprite {//#endif
Feature: User-Defined enemys
![Page 31: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/31.jpg)
Dificuldades
• Uso de técnicas não definidas diretamente em decision models
• Flip-Pure-Variants
![Page 32: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/32.jpg)
Atividades – Tempo Atividade Técnica ou Ferramenta Tempo
Identificação de features Manualmente/CCFinder 2 horas
Desenho do modelo de features
Captain Feature 1 hora
Configuração do ambiente e estudo de ferramentas
Flip/Pure-Variants 3 horas
Extração da feature de Linguagem
Flip 2 horas
Inclusão do ponto de variação para feature de inimigos
Manualmente 1 hora
Extração da feature de StaticEnemys
Flip/Manualmente 3 horas
Extração da feature de User-Defined enemys
Manualmente 6 horas
Montagem do configuration knowledge
Pure-Variants 2 horas
![Page 33: JMario Equipe Augusto Cesar Neves Lima Filho. JMario Jogo usando Java2D Fiel ao clássico Mario para snes](https://reader035.vdocuments.mx/reader035/viewer/2022070311/552fc142497959413d8df70e/html5/thumbnails/33.jpg)
Conclusões
• Uso de diversas técnicas em uma mesma variação
• Uso extensivo de AO