Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell."— Presentation transcript:

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

2 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

3 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

4 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

5 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

6 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.

7 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; }

8 Code Snippets - Josh private void handlePickups() { for (Iterator 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++; }

9 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 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); } } }

10 Code Snippets – Anthony, Cory Presenting from IDE

11 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)opengameart.orghttp://opengameart.org/content/3-form-rpg-boss- harlequin-epicycle

12 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

13 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)

14 Game Demonstration

15 Questions ?


Download ppt "Fury Fighter Group 7 Presentation Calvin McLain, Anthony Whitaker, Joshua Burton, Hannah Ringo, Cory Bridewell."

Similar presentations


Ads by Google