fury fighter group 7 presentation calvin mclain, anthony whitaker, joshua burton, hannah ringo, cory...

15
Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Upload: aldous-carroll

Post on 18-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Fury Fighter Group 7 Presentation

Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Page 2: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

The Things That Went Right•Team Dynamic / collaboration•We were able to split the tasks up among the members and everyone was reliable and completed the tasks that they were asked to on time.•During meetings the team was extremely efficient and did not waste time.•Every team member brought different skill sets to the team which helped us to use everyone’s strengths to complete tasks quicker.•Meeting once each week after class

Page 3: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Tools That Helped Make The Project Easier•Eclipse•TortoiseSVN•Sourceforge•Debugger•We used an overhead projector to review code for Fagan Inspections.•Junit Slides and examples•The Readme file in our Project was a very Helpful reference•Google Drive

Page 4: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Things That Could Have Gone Better•There was no commit approval so sometimes code was moved around by one member of the team and that sometimes had adverse effects on other parts of the code.• Several of us have different schedules so meeting in person was sometimes a challenge

Page 5: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Biggest Challenges•Once a week needing to reread and understand the code.•Debugging and finding all the errors.•Some individuals on the team had much less expose in writing tests and using the command line therefore for those individuals there was a much steeper learning curve.•Getting the game to run on a Mac when it was working and running on PC’s.•Lack of commenting - starting with old code instead of starting from scratch

Page 6: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Code Snippets•All tests were split between team members evenly.•All members of the team altered the code in several different areas so that it would fit all requirements, but the following is just a couple of code examples from each team members contributions.

Page 7: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Code Snippets-Hannah•public class Graphics2DMock extends Graphics2D{•

boolean setColorCalled = false;boolean setBackgroundCalled = false;

• boolean fillRectCalled = false;• boolean clearRectCalled = false;• boolean setFontCalled = false;• int drawStringCalled = 0;• int drawImageCalled = 0;• Color color;• Color background;• Font f;

• public Graphics2DMock(){•    @Override•    public void drawString(String str, int x, int y) {• drawStringCalled +=1;•           }•           @Override•    public void setBackground(Color color) {• setBackgroundCalled = true;• background = color;•           }

•           @Override•    public void setColor(Color c) {• setColorCalled = true;• color = c;•    }•           @Override•    public void setFont(Font font) {• this.setFontCalled = true;• this.f = font;•    }•           @Override•    public void fillRect(int x, int y, int width, int height) {• fillRectCalled = true;•    }•    @Override•    public void clearRect(int x, int y, int width, int height) {• clearRectCalled = true;•    }• }

Page 8: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Code Snippets - Josh•private void handlePickups() {

• for (Iterator<Pickup> pIter = this.levelModel.getLevelPickups().iterator(); pIter.hasNext(); ) {

• Pickup pickup = pIter.next();

• if (Utils.boxCollision(this, pickup)) {

• this.processPickupType(pickup.getType());

• if (pickup.getType() == PickupType.FRAGMENT) {

• increaseScore(ScoreTable.PICKUP_SCORE_FRAG);

• } else {

• increaseScore(ScoreTable.PICKUP_SCORE);

• }

• pIter.remove();

• }• }• }•private void increaseScore(int additionalPoints) {• this.score += additionalPoints;• if (this.score >= EXTRA_LIFE_SCORE_REQ * this.extraLifeScoreThreshold) {• SoundManager.INSTANCE.playSound("1-up");• this.lives += 1;• this.extraLifeScoreThreshold++;• }• }

Page 9: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Code Snippets - Calvin// LevelModel.java

private void loadMap(JSONArray layersArray) {

JSONObject backgroundLayer = (JSONObject) layersArray.get(0);

JSONArray mapData = (JSONArray) backgroundLayer.get("data");

this.tileMap = new Tile[this.getTileMapHeight()][this.getTileMapWidth()];

for (int y = 0, i = 0; y < this.getTileMapHeight(); y++) {

for (int x = 0; x < this.getTileMapWidth(); x++, i++) {

if (i > mapData.size()) throw new RuntimeException("Map load error: corrupted data.");

tileMap[y][x] = new Tile(y, x, ((Number) mapData.get(i)).intValue());

} } }

************************************************************************************

// LevelModel.java

private void updateQueuedEnemies() {

for (Iterator<EnemyModel> emIter = queuedEnemies.iterator(); emIter.hasNext(); ) {

EnemyModel em = emIter.next();

if (isEnemyComingOnScreen(em)) {

this.addEnemyModel(em);

emIter.remove();

} } }************************************************************************************

// LevelView.java

private void renderLevel(Graphics2D g2, float rw, float rh) {

int tileWidth = Tile.getTileWidth();

int tileHeight = Tile.getTileHeight();

int leftmostTileIndex = this.levelModel.getScrollDistanceX() / tileWidth;

int xOffset = this.levelModel.getScrollDistanceX();

for(int y = 0; y < SCREEN_TILE_HEIGHT; y++) {

for(int x = 0; x < SCREEN_TILE_WIDTH + 2; x++) {

Tile tile = this.levelModel.getTile(y, x + leftmostTileIndex);

BufferedImage img = tile.getImage();

g2.drawImage(img, (tile.x) - xOffset, tile.y, (int)(tileWidth * rw), (int)(tileHeight * rh), null);

} } }

Page 10: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Code Snippets – Anthony, Cory•Presenting from IDE

Page 11: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Boss Feature Implementation•For the boss image I just looked through opengameart.org until I found http://opengameart.org/content/3-form-rpg-boss-harlequin-epicycle which worked pretty well for a boss (different forms)

Page 12: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Boss Feature Implementation•I did some simple picture editing in Gimp and added the requirements:• Move around the screen via algorithmic or predetermined

movement• The boss has the same wave pattern as the normal enemies, but

stays in the middle of the screen• Be at least 3x3 tiles in dimension • Contain one swinging arm, that kills the player on impact.• The arm is really just a big bullet that circles the boss, but it works

like an arm. The image is just a lot of bomb pickups put together• Contain 3 “points of weakness” that when shot inflict damage.• For bosses instead of bullet collision being calculated using the

bounding box it uses a list of smaller boxes picked from looking at the images

• Fire bullets at the player same as the normal enemies

Page 13: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Boss Feature Implementation•Have a large amount of health. When low on health, the behavior must change in some way•Boss is also unaffected by bombs (although the spinning fire arm thing disappears)

Page 14: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Game Demonstration

Page 15: Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell

Questions ?