From 9c6e536bffecfce634b9ecd169be213fd4b4143a Mon Sep 17 00:00:00 2001 From: Brett Laptop Date: Wed, 1 Mar 2023 12:38:32 -0500 Subject: [PATCH] init repo --- Assignment 1/A1_TowerDefenseGame v2.uml | 6561 ++++++++++++++ Assignment 1/A1_TowerDefenseGame v2.uml~ | 6561 ++++++++++++++ Assignment 1/A1_TowerDefenseGame.uml | 6470 +++++++++++++ Assignment 1/A1_TowerDefenseGame.uml~ | 6503 +++++++++++++ Assignment 1/A1_TowerDefenseGame_final.uml | 6561 ++++++++++++++ Assignment 1/A1_TowerDefenseGame_final_v2.uml | 7991 ++++++++++++++++ .../A1_TowerDefenseGame_final_v2.uml~ | 7991 ++++++++++++++++ Assignment 1/A1_TowerDefenseGame_final_v3.uml | 8033 +++++++++++++++++ .../A1_TowerDefenseGame_final_v3.uml~ | 6865 ++++++++++++++ .../COSC3P91-A1_Description_BrettMichael.pdf | Bin 0 -> 451496 bytes Assignment 1/Submission.zip | Bin 0 -> 453123 bytes Assignment 1/Submission_v2.zip | Bin 0 -> 507449 bytes .../A1_TowerDefenseGame_final_v3.uml | 8033 +++++++++++++++++ .../COSC3P91-A1_Description_BrettMichael.pdf | Bin 0 -> 451496 bytes .../Submission_v2/UMLClassDiagram.png | Bin 0 -> 79794 bytes .../Submission_v2/code/game/GameEngine.java | 25 + Assignment 1/Submission_v2/code/game/Map.java | 36 + .../code/gameobjects/Archer.java | 4 + .../code/gameobjects/ArcherTower.java | 4 + .../code/gameobjects/Building.java | 50 + .../code/gameobjects/Cannon.java | 4 + .../code/gameobjects/Catapult.java | 4 + .../code/gameobjects/Collector.java | 13 + .../code/gameobjects/DefenseBuilding.java | 13 + .../code/gameobjects/DefenseStage.java | 15 + .../Submission_v2/code/gameobjects/Farm.java | 9 + .../code/gameobjects/GoldMine.java | 7 + .../code/gameobjects/Infantry.java | 23 + .../code/gameobjects/Inhabitant.java | 14 + .../code/gameobjects/IronMine.java | 7 + .../code/gameobjects/Knight.java | 4 + .../code/gameobjects/LumberMine.java | 11 + .../code/gameobjects/ResourceBuidling.java | 13 + .../code/gameobjects/ResourceStage.java | 11 + .../code/gameobjects/Soldier.java | 4 + .../Submission_v2/code/gameobjects/Stage.java | 34 + .../Submission_v2/code/gameobjects/Tile.java | 13 + .../code/gameobjects/VillageStage.java | 23 + .../code/gameobjects/Village_Hall.java | 23 + .../code/gameobjects/Worker.java | 11 + .../Submission_v2/code/player/Player.java | 11 + .../code/userinterface/GuiManager.java | 4 + Assignment 1/Submission_v2/command.txt | 4 + Assignment 1/code/game/GameEngine.java | 25 + Assignment 1/code/game/Map.java | 36 + Assignment 1/code/gameobjects/Archer.java | 4 + .../code/gameobjects/ArcherTower.java | 4 + Assignment 1/code/gameobjects/Building.java | 50 + Assignment 1/code/gameobjects/Cannon.java | 4 + Assignment 1/code/gameobjects/Catapult.java | 4 + Assignment 1/code/gameobjects/Collector.java | 13 + .../code/gameobjects/DefenseBuilding.java | 13 + .../code/gameobjects/DefenseStage.java | 15 + Assignment 1/code/gameobjects/Farm.java | 9 + Assignment 1/code/gameobjects/GoldMine.java | 7 + Assignment 1/code/gameobjects/Infantry.java | 23 + Assignment 1/code/gameobjects/Inhabitant.java | 14 + Assignment 1/code/gameobjects/IronMine.java | 7 + Assignment 1/code/gameobjects/Knight.java | 4 + Assignment 1/code/gameobjects/LumberMine.java | 11 + .../code/gameobjects/ResourceBuidling.java | 13 + .../code/gameobjects/ResourceStage.java | 11 + Assignment 1/code/gameobjects/Soldier.java | 4 + Assignment 1/code/gameobjects/Stage.java | 34 + Assignment 1/code/gameobjects/Tile.java | 13 + .../code/gameobjects/VillageStage.java | 23 + .../code/gameobjects/Village_Hall.java | 23 + Assignment 1/code/gameobjects/Worker.java | 11 + Assignment 1/code/player/Player.java | 11 + .../code/userinterface/GuiManager.java | 4 + Assignment 2/assignment2.pdf | Bin 0 -> 55204 bytes Assignment 2/suggestedSolutionA1.png | Bin 0 -> 82400 bytes 72 files changed, 72353 insertions(+) create mode 100644 Assignment 1/A1_TowerDefenseGame v2.uml create mode 100644 Assignment 1/A1_TowerDefenseGame v2.uml~ create mode 100644 Assignment 1/A1_TowerDefenseGame.uml create mode 100644 Assignment 1/A1_TowerDefenseGame.uml~ create mode 100644 Assignment 1/A1_TowerDefenseGame_final.uml create mode 100644 Assignment 1/A1_TowerDefenseGame_final_v2.uml create mode 100644 Assignment 1/A1_TowerDefenseGame_final_v2.uml~ create mode 100644 Assignment 1/A1_TowerDefenseGame_final_v3.uml create mode 100644 Assignment 1/A1_TowerDefenseGame_final_v3.uml~ create mode 100644 Assignment 1/COSC3P91-A1_Description_BrettMichael.pdf create mode 100644 Assignment 1/Submission.zip create mode 100644 Assignment 1/Submission_v2.zip create mode 100644 Assignment 1/Submission_v2/A1_TowerDefenseGame_final_v3.uml create mode 100644 Assignment 1/Submission_v2/COSC3P91-A1_Description_BrettMichael.pdf create mode 100644 Assignment 1/Submission_v2/UMLClassDiagram.png create mode 100644 Assignment 1/Submission_v2/code/game/GameEngine.java create mode 100644 Assignment 1/Submission_v2/code/game/Map.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Archer.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/ArcherTower.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Building.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Cannon.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Catapult.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Collector.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/DefenseBuilding.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/DefenseStage.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Farm.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/GoldMine.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Infantry.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Inhabitant.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/IronMine.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Knight.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/LumberMine.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/ResourceBuidling.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/ResourceStage.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Soldier.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Stage.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Tile.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/VillageStage.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Village_Hall.java create mode 100644 Assignment 1/Submission_v2/code/gameobjects/Worker.java create mode 100644 Assignment 1/Submission_v2/code/player/Player.java create mode 100644 Assignment 1/Submission_v2/code/userinterface/GuiManager.java create mode 100644 Assignment 1/Submission_v2/command.txt create mode 100644 Assignment 1/code/game/GameEngine.java create mode 100644 Assignment 1/code/game/Map.java create mode 100644 Assignment 1/code/gameobjects/Archer.java create mode 100644 Assignment 1/code/gameobjects/ArcherTower.java create mode 100644 Assignment 1/code/gameobjects/Building.java create mode 100644 Assignment 1/code/gameobjects/Cannon.java create mode 100644 Assignment 1/code/gameobjects/Catapult.java create mode 100644 Assignment 1/code/gameobjects/Collector.java create mode 100644 Assignment 1/code/gameobjects/DefenseBuilding.java create mode 100644 Assignment 1/code/gameobjects/DefenseStage.java create mode 100644 Assignment 1/code/gameobjects/Farm.java create mode 100644 Assignment 1/code/gameobjects/GoldMine.java create mode 100644 Assignment 1/code/gameobjects/Infantry.java create mode 100644 Assignment 1/code/gameobjects/Inhabitant.java create mode 100644 Assignment 1/code/gameobjects/IronMine.java create mode 100644 Assignment 1/code/gameobjects/Knight.java create mode 100644 Assignment 1/code/gameobjects/LumberMine.java create mode 100644 Assignment 1/code/gameobjects/ResourceBuidling.java create mode 100644 Assignment 1/code/gameobjects/ResourceStage.java create mode 100644 Assignment 1/code/gameobjects/Soldier.java create mode 100644 Assignment 1/code/gameobjects/Stage.java create mode 100644 Assignment 1/code/gameobjects/Tile.java create mode 100644 Assignment 1/code/gameobjects/VillageStage.java create mode 100644 Assignment 1/code/gameobjects/Village_Hall.java create mode 100644 Assignment 1/code/gameobjects/Worker.java create mode 100644 Assignment 1/code/player/Player.java create mode 100644 Assignment 1/code/userinterface/GuiManager.java create mode 100644 Assignment 2/assignment2.pdf create mode 100644 Assignment 2/suggestedSolutionA1.png diff --git a/Assignment 1/A1_TowerDefenseGame v2.uml b/Assignment 1/A1_TowerDefenseGame v2.uml new file mode 100644 index 0000000..b00617e --- /dev/null +++ b/Assignment 1/A1_TowerDefenseGame v2.uml @@ -0,0 +1,6561 @@ + + + + + + + 0.35.1 + + + + + + UML 1.4 + false + true + true + true + false + false + false + true + false + true + 1 + true + Dialog + 12 + 0 + Class Diagram + + + + + + + + + + + + + + UML 1.4 + + + GoodPractices + + + CodeGeneration + + + + + ArgoUML (using Netbeans XMI Writer version 1.0) + 0.35.1(6) revised on $Date: 2012-12-30 14:06:01 +0100 (Sun, 30 Dec 2012) $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstraction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gameobjects + + + + + + + + + + + enclosingFig="Fig0" + + + + + Catapult + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Knight + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Archer + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Soldier + + + + + + + + + + + + + + + + + + + + +newOperation() + + + + + + + + + Collector + + + + + + + + + + + + + + + + + + + + + + + + + + + + Worker + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Infantry + + + + + + + + + + + + + -health : int + -damage : int + -range : int + + + + + + + + +attack(Building) + +getHealth() + +getDamage() + +getRange() + + + + + enclosingFig="Fig0" + + + + + Inhabitant + + + + + + «interface» + + + + + + + + +move(Tile) + +getPosition() + + + + + sourcePortFig="Fig7.0" + destPortFig="Fig8.0" + sourceFigNode="Fig7" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig5.0" + destPortFig="Fig8.0" + sourceFigNode="Fig5" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig6.0" + destPortFig="Fig8.0" + sourceFigNode="Fig6" + destFigNode="Fig8" + + + + + + + + + + enclosingFig="Fig0" + + + + + ArcherTower + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Cannon + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + DefenseBuilding + + + + + + + + + + + + + +damage : int + +range : int + + + + + + + + +attack(Infantry) + + + + + sourcePortFig="Fig12.0" + destPortFig="Fig14" + sourceFigNode="Fig12" + destFigNode="Fig14" + + + + + + + + + + sourcePortFig="Fig13.0" + destPortFig="Fig14" + sourceFigNode="Fig13" + destFigNode="Fig14" + + + + + + + + + + enclosingFig="Fig0" + + + + + Village_Hall + + + + + + + + + + + + + +goldCapacity : int + +ironCapacity : int + +woodCapacity : int + + + + + + + + +getGoldCapacity() + +getIronCapacity() + +getWoodCapacity() + + + + + enclosingFig="Fig0" + + + + + GoldMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + LumberMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + IronMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Farm + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + ResourceBuidling + + + + + + + + + + + + + +resource : String + -harvest_rate : int + + + + + + + + +harvest() + + + + + sourcePortFig="Fig21.0" + destPortFig="Fig22" + sourceFigNode="Fig21" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig18.0" + destPortFig="Fig22" + sourceFigNode="Fig18" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig19.0" + destPortFig="Fig22" + sourceFigNode="Fig19" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig20.0" + destPortFig="Fig22" + sourceFigNode="Fig20" + destFigNode="Fig22" + + + + + + + + + + + + + + + + + + + + + + Player + + + + + + + + + + + enclosingFig="Fig0" + + + + + Building + + + + + + + + + + + + + -level : int + -health : int + -stages : Stage + +cost : int + + + + + + + + +getLevel() + +getHealth() + +getCost() + +getUpgradeCost() + +upgrade() + + + + + sourcePortFig="Fig17.0" + destPortFig="Fig28" + sourceFigNode="Fig17" + destFigNode="Fig28" + + + + + + + + + + sourcePortFig="Fig22.0" + destPortFig="Fig28" + sourceFigNode="Fig22" + destFigNode="Fig28" + + + + + + + + + + sourcePortFig="Fig14.0" + destPortFig="Fig28" + sourceFigNode="Fig14" + destFigNode="Fig28" + + + + + + + + + + enclosingFig="Fig0" + + + + ~ Stage + + + + + + + + + + + + + #dHealth : int + #cost : int + #requiredVillageLevel : int + + + + + + + + +getHealthChange() + +getCost() + +getRequiredVillageLevel() + + + + + enclosingFig="Fig0" + + + + + gameobjects::Tile + + + + + + + + + + + + + +x : int + +y : int + + + + + + + + + + + + sourcePortFig="Fig28" + destPortFig="Fig32" + sourceFigNode="Fig28" + destFigNode="Fig32" + + + + + + + + + + + + + + + + + ~ DefenseStage + + + + + + + + + + + + + #dDamge : int + #dRange : int + + + + + + + + +getDamageChange() + +getRangeChange() + + + + + sourcePortFig="Fig35.0" + destPortFig="Fig32" + sourceFigNode="Fig35" + destFigNode="Fig32" + + + + + + + + + + + + + + + + + + + + + + UserInterface + + + + + + + + + + + enclosingFig="Fig37" + + + + + GuiManager + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig27" + + + + + Player + + + + + + + + + + + + + +currentGold : int + +currentIron : int + +currentWood : int + + + + + + + + + + + + + + + + + + + + + + + + game + + + + + + + + + + + sourcePortFig="Fig40.0" + destPortFig="Fig37" + sourceFigNode="Fig40" + destFigNode="Fig37" + + + + + + + + + + + enclosingFig="Fig40" + + + + + GameEngine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig40" + + + + + Map + + + + + + + + + + + + + + + + + + + + +move(Infantry,Tile) + +inRange(Infantry,Building) + + + + + sourcePortFig="Fig0" + destPortFig="Fig37" + sourceFigNode="Fig0" + destFigNode="Fig37" + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig0" + sourceFigNode="Fig27" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig37" + destPortFig="Fig0" + sourceFigNode="Fig37" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig40" + destPortFig="Fig0" + sourceFigNode="Fig40" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig2.0" + destPortFig="Fig7" + sourceFigNode="Fig2" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig7" + sourceFigNode="Fig1" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig3.0" + destPortFig="Fig7" + sourceFigNode="Fig3" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig4.0" + destPortFig="Fig7" + sourceFigNode="Fig4" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig33" + destPortFig="Fig28" + sourceFigNode="Fig33" + destFigNode="Fig28" + + + + + + + + + + + + + + sourcePortFig="Fig43" + destPortFig="Fig28" + sourceFigNode="Fig43" + destFigNode="Fig28" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig43" + sourceFigNode="Fig42" + destFigNode="Fig43" + + + + + + + + + + + + + + sourcePortFig="Fig43" + destPortFig="Fig8" + sourceFigNode="Fig43" + destFigNode="Fig8" + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment 1/A1_TowerDefenseGame v2.uml~ b/Assignment 1/A1_TowerDefenseGame v2.uml~ new file mode 100644 index 0000000..1d19609 --- /dev/null +++ b/Assignment 1/A1_TowerDefenseGame v2.uml~ @@ -0,0 +1,6561 @@ + + + + + + + 0.35.1 + + + + + + UML 1.4 + false + true + true + true + false + false + false + true + false + true + 1 + true + Dialog + 12 + 0 + Class Diagram + + + + + + + + + + + + + + UML 1.4 + + + GoodPractices + + + CodeGeneration + + + + + ArgoUML (using Netbeans XMI Writer version 1.0) + 0.35.1(6) revised on $Date: 2012-12-30 14:06:01 +0100 (Sun, 30 Dec 2012) $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstraction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gameobjects + + + + + + + + + + + enclosingFig="Fig0" + + + + + Catapult + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Knight + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Archer + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Soldier + + + + + + + + + + + + + + + + + + + + +newOperation() + + + + + + + + + Collector + + + + + + + + + + + + + + + + + + + + + + + + + + + + Worker + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Infantry + + + + + + + + + + + + + -health : int + -damage : int + -range : int + + + + + + + + +attack(Building) + +getHealth() + +getDamage() + +getRange() + + + + + enclosingFig="Fig0" + + + + + Inhabitant + + + + + + «interface» + + + + + + + + +move(Tile) + +getPosition() + + + + + sourcePortFig="Fig7.0" + destPortFig="Fig8.0" + sourceFigNode="Fig7" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig5.0" + destPortFig="Fig8.0" + sourceFigNode="Fig5" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig6.0" + destPortFig="Fig8.0" + sourceFigNode="Fig6" + destFigNode="Fig8" + + + + + + + + + + enclosingFig="Fig0" + + + + + ArcherTower + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Cannon + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + DefenseBuilding + + + + + + + + + + + + + +damage : int + +range : int + + + + + + + + +attack(Infantry) + + + + + sourcePortFig="Fig12.0" + destPortFig="Fig14" + sourceFigNode="Fig12" + destFigNode="Fig14" + + + + + + + + + + sourcePortFig="Fig13.0" + destPortFig="Fig14" + sourceFigNode="Fig13" + destFigNode="Fig14" + + + + + + + + + + enclosingFig="Fig0" + + + + + Village_Hall + + + + + + + + + + + + + +goldCapacity : int + +ironCapacity : int + +woodCapacity : int + + + + + + + + +getGoldCapacity() + +getIronCapacity() + +getWoodCapacity() + + + + + enclosingFig="Fig0" + + + + + GoldMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + LumberMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + IronMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Farm + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + ResourceBuidling + + + + + + + + + + + + + +resource : String + -harvest_rate : int + + + + + + + + +harvest() + + + + + sourcePortFig="Fig21.0" + destPortFig="Fig22" + sourceFigNode="Fig21" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig18.0" + destPortFig="Fig22" + sourceFigNode="Fig18" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig19.0" + destPortFig="Fig22" + sourceFigNode="Fig19" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig20.0" + destPortFig="Fig22" + sourceFigNode="Fig20" + destFigNode="Fig22" + + + + + + + + + + + + + + + + + + + + + + Player + + + + + + + + + + + enclosingFig="Fig0" + + + + + Building + + + + + + + + + + + + + -level : int + -health : int + -stages : Stage + +cost : int + + + + + + + + +getLevel() + +getHealth() + +getCost() + +getUpgradeCost() + +upgrade() + + + + + sourcePortFig="Fig17.0" + destPortFig="Fig28" + sourceFigNode="Fig17" + destFigNode="Fig28" + + + + + + + + + + sourcePortFig="Fig22.0" + destPortFig="Fig28" + sourceFigNode="Fig22" + destFigNode="Fig28" + + + + + + + + + + sourcePortFig="Fig14.0" + destPortFig="Fig28" + sourceFigNode="Fig14" + destFigNode="Fig28" + + + + + + + + + + enclosingFig="Fig0" + + + + ~ Stage + + + + + + + + + + + + + #dHealth : int + #cost : int + #requiredVillageLevel : int + + + + + + + + +getHealthChange() + +getCost() + +getRequiredVillageLevel() + + + + + enclosingFig="Fig0" + + + + + gameobjects::Tile + + + + + + + + + + + + + +x : int + +y : int + + + + + + + + + + + + sourcePortFig="Fig28" + destPortFig="Fig32" + sourceFigNode="Fig28" + destFigNode="Fig32" + + + + + + + + + + + + + + + + + ~ DefenseStage + + + + + + + + + + + + + #dDamge : int + #dRange : int + + + + + + + + +getDamageChange() + +getRangeChange() + + + + + sourcePortFig="Fig35.0" + destPortFig="Fig32" + sourceFigNode="Fig35" + destFigNode="Fig32" + + + + + + + + + + + + + + + + + + + + + + UserInterface + + + + + + + + + + + enclosingFig="Fig37" + + + + + GuiManager + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig27" + + + + + Player + + + + + + + + + + + + + +currentGold : int + +currentIron : int + +currentWood : int + + + + + + + + + + + + + + + + + + + + + + + + game + + + + + + + + + + + sourcePortFig="Fig40.0" + destPortFig="Fig37" + sourceFigNode="Fig40" + destFigNode="Fig37" + + + + + + + + + + + enclosingFig="Fig40" + + + + + GameEngine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig40" + + + + + Map + + + + + + + + + + + + + + + + + + + + +move(Infantry,Tile) + +inRange(Infantry,Building) + + + + + sourcePortFig="Fig0" + destPortFig="Fig37" + sourceFigNode="Fig0" + destFigNode="Fig37" + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig0" + sourceFigNode="Fig27" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig37" + destPortFig="Fig0" + sourceFigNode="Fig37" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig40" + destPortFig="Fig0" + sourceFigNode="Fig40" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig2.0" + destPortFig="Fig7" + sourceFigNode="Fig2" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig7" + sourceFigNode="Fig1" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig3.0" + destPortFig="Fig7" + sourceFigNode="Fig3" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig4.0" + destPortFig="Fig7" + sourceFigNode="Fig4" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig33" + destPortFig="Fig28" + sourceFigNode="Fig33" + destFigNode="Fig28" + + + + + + + + + + + + + + sourcePortFig="Fig43" + destPortFig="Fig28" + sourceFigNode="Fig43" + destFigNode="Fig28" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig43" + sourceFigNode="Fig42" + destFigNode="Fig43" + + + + + + + + + + + + + + sourcePortFig="Fig43" + destPortFig="Fig8" + sourceFigNode="Fig43" + destFigNode="Fig8" + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment 1/A1_TowerDefenseGame.uml b/Assignment 1/A1_TowerDefenseGame.uml new file mode 100644 index 0000000..a5d3ddf --- /dev/null +++ b/Assignment 1/A1_TowerDefenseGame.uml @@ -0,0 +1,6470 @@ + + + + + + + 0.35.1 + + + + + + UML 1.4 + false + true + true + true + false + false + false + true + false + true + 1 + true + Dialog + 12 + 0 + Class Diagram + + + + + + + + + + + + + + UML 1.4 + + + GoodPractices + + + CodeGeneration + + + + + ArgoUML (using Netbeans XMI Writer version 1.0) + 0.35.1(6) revised on $Date: 2012-12-30 14:06:01 +0100 (Sun, 30 Dec 2012) $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstraction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gameobjects + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Catapult + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Knight + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Archer + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Soldier + + + + + + + + + + + + + + + + + + + + +newOperation() + + + + + enclosingFig="LAYER_NULL" + + + + + Collector + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Worker + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Infantry + + + + + + + + + + + + + +health : float + +damage : float + +range : Tile + + + + + + + + +attack() + + + + + enclosingFig="LAYER_NULL" + + + + + Inhabitant + + + + + + «interface» + + + + + + + + + + + + sourcePortFig="Fig7.0" + destPortFig="Fig8.0" + sourceFigNode="Fig7" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig5.0" + destPortFig="Fig8.0" + sourceFigNode="Fig5" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig6.0" + destPortFig="Fig8.0" + sourceFigNode="Fig6" + destFigNode="Fig8" + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + ArcherTower + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Cannon + + + + + + + + + + + + + + + + + + + + +newOperation() + + + + + enclosingFig="LAYER_NULL" + + + + + DefenseBuilding + + + + + + + + + + + + + +damage : int + +range : int + + + + + + + + + + + + sourcePortFig="Fig12.0" + destPortFig="Fig14" + sourceFigNode="Fig12" + destFigNode="Fig14" + + + + + + + + + + sourcePortFig="Fig13.0" + destPortFig="Fig14" + sourceFigNode="Fig13" + destFigNode="Fig14" + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Village_Hall + + + + + + + + + + + + + +goldCapacity : int + +ironCapacity : int + +woodCapacity : int + + + + + + + + +getGoldCapacity() + +getIronCapacity() + +getWoodCapacity() + + + + + enclosingFig="LAYER_NULL" + + + + + GoldMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + LumberMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + IronMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Farm + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + ResourceBuidling + + + + + + + + + + + + + +resource : String + -harvest_rate : int + + + + + + + + + + + + sourcePortFig="Fig21.0" + destPortFig="Fig22" + sourceFigNode="Fig21" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig18.0" + destPortFig="Fig22" + sourceFigNode="Fig18" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig19.0" + destPortFig="Fig22" + sourceFigNode="Fig19" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig20.0" + destPortFig="Fig22" + sourceFigNode="Fig20" + destFigNode="Fig22" + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + + + + + + + + + + + + + + + + + + + + Should possibly +consider replacing infantry with +enum? + + + + + + + + + + + + + + + + Player + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Building + + + + + + + + + + + + + -level : int + -health : int + -stages : Stage + +cost : int + + + + + + + + +getLevel() + +getHealth() + +getCost() + +getUpgradeCost() + +upgrade() + + + + + sourcePortFig="Fig17.0" + destPortFig="Fig29" + sourceFigNode="Fig17" + destFigNode="Fig29" + + + + + + + + + + sourcePortFig="Fig22.0" + destPortFig="Fig29" + sourceFigNode="Fig22" + destFigNode="Fig29" + + + + + + + + + + sourcePortFig="Fig14.0" + destPortFig="Fig29" + sourceFigNode="Fig14" + destFigNode="Fig29" + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + ~ Stage + + + + + + + + + + + + + #dHealth : int + #cost : int + #requiredVillageLevel : int + + + + + + + + +getHealthChange() + +getCost() + +getRequiredVillageLevel() + + + + + enclosingFig="LAYER_NULL" + + + + + gameobjects::Tile + + + + + + + + + + + + + +x : int + +y : int + + + + + + + + + + + + sourcePortFig="Fig34" + destPortFig="Fig29" + sourceFigNode="Fig34" + destFigNode="Fig29" + + + + + + + + + + + + + + sourcePortFig="Fig29" + destPortFig="Fig33" + sourceFigNode="Fig29" + destFigNode="Fig33" + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + ~ DefenseStage + + + + + + + + + + + + + #dDamge : int + #dRange : int + + + + + + + + +getDamageChange() + +getRangeChange() + + + + + sourcePortFig="Fig37.0" + destPortFig="Fig33" + sourceFigNode="Fig37" + destFigNode="Fig33" + + + + + + + + + + + + + + + + + + + + + + UserInterface + + + + + + + + + + + enclosingFig="Fig39" + + + + + GuiManager + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig28" + + + + + Player + + + + + + + + + + + + + +currentGold : int + +currentIron : int + +currentWood : int + + + + + + + + + + + + + + + + + + + + + + + + Game + + + + + + + + + + + sourcePortFig="Fig42.0" + destPortFig="Fig39" + sourceFigNode="Fig42" + destFigNode="Fig39" + + + + + + + + + + + enclosingFig="Fig42" + + + + + GameEngine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig42" + + + + + Map + + + + + + + + + + + + + + + + + + + + + + + + sourcePortFig="Fig45" + destPortFig="Fig29" + sourceFigNode="Fig45" + destFigNode="Fig29" + + + + + + + + + + + + + + sourcePortFig="Fig44" + destPortFig="Fig45" + sourceFigNode="Fig44" + destFigNode="Fig45" + + + + + + + + + + + + + + sourcePortFig="Fig0" + destPortFig="Fig39" + sourceFigNode="Fig0" + destFigNode="Fig39" + + + + + + + + + + sourcePortFig="Fig28" + destPortFig="Fig0" + sourceFigNode="Fig28" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig39" + destPortFig="Fig0" + sourceFigNode="Fig39" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig0" + sourceFigNode="Fig42" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig2.0" + destPortFig="Fig7" + sourceFigNode="Fig2" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig7" + sourceFigNode="Fig1" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig3.0" + destPortFig="Fig7" + sourceFigNode="Fig3" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig4.0" + destPortFig="Fig7" + sourceFigNode="Fig4" + destFigNode="Fig7" + + + + + + + + + + + + + + + + + diff --git a/Assignment 1/A1_TowerDefenseGame.uml~ b/Assignment 1/A1_TowerDefenseGame.uml~ new file mode 100644 index 0000000..44e02f0 --- /dev/null +++ b/Assignment 1/A1_TowerDefenseGame.uml~ @@ -0,0 +1,6503 @@ + + + + + + + 0.35.1 + + + + + + UML 1.4 + false + true + true + true + false + false + false + true + false + true + 1 + true + Dialog + 12 + 0 + Class Diagram + + + + + + + + + + + + + + UML 1.4 + + + GoodPractices + + + CodeGeneration + + + + + ArgoUML (using Netbeans XMI Writer version 1.0) + 0.35.1(6) revised on $Date: 2012-12-30 14:06:01 +0100 (Sun, 30 Dec 2012) $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstraction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gameobjects + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Catapult + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Knight + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Archer + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Soldier + + + + + + + + + + + + + + + + + + + + +newOperation() + + + + + enclosingFig="LAYER_NULL" + + + + + Collector + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Worker + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Infantry + + + + + + + + + + + + + +health : float + +damage : float + +range : Tile + + + + + + + + +attack() + + + + + enclosingFig="LAYER_NULL" + + + + + Inhabitant + + + + + + «interface» + + + + + + + + + + + + sourcePortFig="Fig7.0" + destPortFig="Fig8.0" + sourceFigNode="Fig7" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig5.0" + destPortFig="Fig8.0" + sourceFigNode="Fig5" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig6.0" + destPortFig="Fig8.0" + sourceFigNode="Fig6" + destFigNode="Fig8" + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + ArcherTower + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Cannon + + + + + + + + + + + + + + + + + + + + +newOperation() + + + + + enclosingFig="LAYER_NULL" + + + + + DefenseBuilding + + + + + + + + + + + + + +damage : int + +range : int + + + + + + + + + + + + sourcePortFig="Fig12.0" + destPortFig="Fig14" + sourceFigNode="Fig12" + destFigNode="Fig14" + + + + + + + + + + sourcePortFig="Fig13.0" + destPortFig="Fig14" + sourceFigNode="Fig13" + destFigNode="Fig14" + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Village_Hall + + + + + + + + + + + + + +goldCapacity : int + +ironCapacity : int + +woodCapacity : int + + + + + + + + +getGoldCapacity() + +getIronCapacity() + +getWoodCapacity() + + + + + enclosingFig="LAYER_NULL" + + + + + GoldMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + LumberMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + IronMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Farm + + + + + + + + + + + + + +resource : String + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + ResourceBuidling + + + + + + + + + + + + + +resource : String + -harvest_rate : int + + + + + + + + + + + + sourcePortFig="Fig21.0" + destPortFig="Fig22" + sourceFigNode="Fig21" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig18.0" + destPortFig="Fig22" + sourceFigNode="Fig18" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig19.0" + destPortFig="Fig22" + sourceFigNode="Fig19" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig20.0" + destPortFig="Fig22" + sourceFigNode="Fig20" + destFigNode="Fig22" + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + + + + + + + + + + + + + + + + + + + + Should possibly +consider replacing infantry with +enum? + + + + + + + + + + + + + + + + Player + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + + Building + + + + + + + + + + + + + -level : int + -health : int + -stages : Stage + +cost : int + + + + + + + + +getLevel() + +getHealth() + +getCost() + +getUpgradeCost() + +upgrade() + + + + + sourcePortFig="Fig17.0" + destPortFig="Fig29" + sourceFigNode="Fig17" + destFigNode="Fig29" + + + + + + + + + + sourcePortFig="Fig22.0" + destPortFig="Fig29" + sourceFigNode="Fig22" + destFigNode="Fig29" + + + + + + + + + + sourcePortFig="Fig14.0" + destPortFig="Fig29" + sourceFigNode="Fig14" + destFigNode="Fig29" + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + ~ Stage + + + + + + + + + + + + + #dHealth : int + #cost : int + #requiredVillageLevel : int + + + + + + + + +getHealthChange() + +getCost() + +getRequiredVillageLevel() + + + + + enclosingFig="LAYER_NULL" + + + + + gameobjects::Tile + + + + + + + + + + + + + +x : int + +y : int + + + + + + + + + + + + sourcePortFig="Fig34" + destPortFig="Fig29" + sourceFigNode="Fig34" + destFigNode="Fig29" + + + + + + + + + + + + + + sourcePortFig="Fig29" + destPortFig="Fig33" + sourceFigNode="Fig29" + destFigNode="Fig33" + + + + + + + + + + + + + + enclosingFig="LAYER_NULL" + + + + ~ DefenseStage + + + + + + + + + + + + + #dDamge : int + #dRange : int + + + + + + + + +getDamageChange() + +getRangeChange() + + + + + sourcePortFig="Fig37.0" + destPortFig="Fig33" + sourceFigNode="Fig37" + destFigNode="Fig33" + + + + + + + + + + + + + + + + + + + + + + UserInterface + + + + + + + + + + + enclosingFig="Fig39" + + + + + GuiManager + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig28" + + + + + Player + + + + + + + + + + + + + +currentGold : int + +currentIron : int + +currentWood : int + + + + + + + + + + + + + + + + + + + + + + + + Game + + + + + + + + + + + sourcePortFig="Fig42.0" + destPortFig="Fig39" + sourceFigNode="Fig42" + destFigNode="Fig39" + + + + + + + + + + + enclosingFig="Fig42" + + + + + GameEngine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig42" + + + + + Map + + + + + + + + + + + + + + + + + + + + + + + + sourcePortFig="Fig45" + destPortFig="Fig29" + sourceFigNode="Fig45" + destFigNode="Fig29" + + + + + + + + + + + + + + sourcePortFig="Fig44" + destPortFig="Fig45" + sourceFigNode="Fig44" + destFigNode="Fig45" + + + + + + + + + + + + + + sourcePortFig="Fig0" + destPortFig="Fig39" + sourceFigNode="Fig0" + destFigNode="Fig39" + + + + + + + + + + sourcePortFig="Fig28" + destPortFig="Fig0" + sourceFigNode="Fig28" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig39" + destPortFig="Fig0" + sourceFigNode="Fig39" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig0" + sourceFigNode="Fig42" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig2.0" + destPortFig="Fig7" + sourceFigNode="Fig2" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig7" + sourceFigNode="Fig1" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig3.0" + destPortFig="Fig7" + sourceFigNode="Fig3" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig4.0" + destPortFig="Fig7" + sourceFigNode="Fig4" + destFigNode="Fig7" + + + + + + + + + + + + + + + + + diff --git a/Assignment 1/A1_TowerDefenseGame_final.uml b/Assignment 1/A1_TowerDefenseGame_final.uml new file mode 100644 index 0000000..ac9ce2d --- /dev/null +++ b/Assignment 1/A1_TowerDefenseGame_final.uml @@ -0,0 +1,6561 @@ + + + + + + + 0.35.1 + + + + + + UML 1.4 + false + true + true + true + false + false + false + true + false + true + 1 + true + Dialog + 12 + 0 + Class Diagram + + + + + + + + + + + + + + UML 1.4 + + + GoodPractices + + + CodeGeneration + + + + + ArgoUML (using Netbeans XMI Writer version 1.0) + 0.35.1(6) revised on $Date: 2012-12-30 14:06:01 +0100 (Sun, 30 Dec 2012) $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstraction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gameobjects + + + + + + + + + + + enclosingFig="Fig0" + + + + + Catapult + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Knight + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Archer + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Soldier + + + + + + + + + + + + + + + + + + + + +newOperation() + + + + + + + + + Collector + + + + + + + + + + + + + + + + + + + + + + + + + + + + Worker + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Infantry + + + + + + + + + + + + + -health : int + -damage : int + -range : int + + + + + + + + +attack(Building) + +getHealth() + +getDamage() + +getRange() + + + + + enclosingFig="Fig0" + + + + + Inhabitant + + + + + + «interface» + + + + + + + + +move(Tile) + +getPosition() + + + + + sourcePortFig="Fig7.0" + destPortFig="Fig8.0" + sourceFigNode="Fig7" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig5.0" + destPortFig="Fig8.0" + sourceFigNode="Fig5" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig6.0" + destPortFig="Fig8.0" + sourceFigNode="Fig6" + destFigNode="Fig8" + + + + + + + + + + enclosingFig="Fig0" + + + + + ArcherTower + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Cannon + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + DefenseBuilding + + + + + + + + + + + + + +damage : int + +range : int + + + + + + + + +attack(Infantry) + + + + + sourcePortFig="Fig12.0" + destPortFig="Fig14" + sourceFigNode="Fig12" + destFigNode="Fig14" + + + + + + + + + + sourcePortFig="Fig13.0" + destPortFig="Fig14" + sourceFigNode="Fig13" + destFigNode="Fig14" + + + + + + + + + + enclosingFig="Fig0" + + + + + Village_Hall + + + + + + + + + + + + + +goldCapacity : int + +ironCapacity : int + +woodCapacity : int + + + + + + + + +getGoldCapacity() + +getIronCapacity() + +getWoodCapacity() + + + + + enclosingFig="Fig0" + + + + + GoldMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + LumberMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + IronMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Farm + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + ResourceBuidling + + + + + + + + + + + + + +resource : String + -harvest_rate : int + + + + + + + + +harvest() + + + + + sourcePortFig="Fig21.0" + destPortFig="Fig22" + sourceFigNode="Fig21" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig18.0" + destPortFig="Fig22" + sourceFigNode="Fig18" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig19.0" + destPortFig="Fig22" + sourceFigNode="Fig19" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig20.0" + destPortFig="Fig22" + sourceFigNode="Fig20" + destFigNode="Fig22" + + + + + + + + + + + + + + + + + + + + + + player + + + + + + + + + + + enclosingFig="Fig0" + + + + + Building + + + + + + + + + + + + + -level : int + -health : int + -stages : Stage + +cost : int + + + + + + + + +getLevel() + +getHealth() + +getCost() + +getUpgradeCost() + +upgrade() + + + + + sourcePortFig="Fig17.0" + destPortFig="Fig28" + sourceFigNode="Fig17" + destFigNode="Fig28" + + + + + + + + + + sourcePortFig="Fig22.0" + destPortFig="Fig28" + sourceFigNode="Fig22" + destFigNode="Fig28" + + + + + + + + + + sourcePortFig="Fig14.0" + destPortFig="Fig28" + sourceFigNode="Fig14" + destFigNode="Fig28" + + + + + + + + + + enclosingFig="Fig0" + + + + ~ Stage + + + + + + + + + + + + + #dHealth : int + #cost : int + #requiredVillageLevel : int + + + + + + + + +getHealthChange() + +getCost() + +getRequiredVillageLevel() + + + + + enclosingFig="Fig0" + + + + + gameobjects::Tile + + + + + + + + + + + + + +x : int + +y : int + + + + + + + + + + + + sourcePortFig="Fig28" + destPortFig="Fig32" + sourceFigNode="Fig28" + destFigNode="Fig32" + + + + + + + + + + + + + + + + + ~ DefenseStage + + + + + + + + + + + + + #dDamge : int + #dRange : int + + + + + + + + +getDamageChange() + +getRangeChange() + + + + + sourcePortFig="Fig35.0" + destPortFig="Fig32" + sourceFigNode="Fig35" + destFigNode="Fig32" + + + + + + + + + + + + + + + + + + + + + + userinterface + + + + + + + + + + + enclosingFig="Fig37" + + + + + GuiManager + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig27" + + + + + Player + + + + + + + + + + + + + +currentGold : int + +currentIron : int + +currentWood : int + + + + + + + + + + + + + + + + + + + + + + + + game + + + + + + + + + + + sourcePortFig="Fig40.0" + destPortFig="Fig37" + sourceFigNode="Fig40" + destFigNode="Fig37" + + + + + + + + + + + enclosingFig="Fig40" + + + + + GameEngine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig40" + + + + + Map + + + + + + + + + + + + + + + + + + + + +move(Infantry,Tile) + +inRange(Infantry,Building) + + + + + sourcePortFig="Fig0" + destPortFig="Fig37" + sourceFigNode="Fig0" + destFigNode="Fig37" + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig0" + sourceFigNode="Fig27" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig37" + destPortFig="Fig0" + sourceFigNode="Fig37" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig40" + destPortFig="Fig0" + sourceFigNode="Fig40" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig2.0" + destPortFig="Fig7" + sourceFigNode="Fig2" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig7" + sourceFigNode="Fig1" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig3.0" + destPortFig="Fig7" + sourceFigNode="Fig3" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig4.0" + destPortFig="Fig7" + sourceFigNode="Fig4" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig33" + destPortFig="Fig28" + sourceFigNode="Fig33" + destFigNode="Fig28" + + + + + + + + + + + + + + sourcePortFig="Fig43" + destPortFig="Fig28" + sourceFigNode="Fig43" + destFigNode="Fig28" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig43" + sourceFigNode="Fig42" + destFigNode="Fig43" + + + + + + + + + + + + + + sourcePortFig="Fig43" + destPortFig="Fig8" + sourceFigNode="Fig43" + destFigNode="Fig8" + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment 1/A1_TowerDefenseGame_final_v2.uml b/Assignment 1/A1_TowerDefenseGame_final_v2.uml new file mode 100644 index 0000000..2824297 --- /dev/null +++ b/Assignment 1/A1_TowerDefenseGame_final_v2.uml @@ -0,0 +1,7991 @@ + + + + + + + 0.35.1 + + + + + + UML 1.4 + false + true + true + true + false + false + false + true + false + true + 1 + true + Dialog + 12 + 0 + Class Diagram + + + + + + + + + + + + + + UML 1.4 + + + GoodPractices + + + CodeGeneration + + + + + ArgoUML (using Netbeans XMI Writer version 1.0) + 0.35.1(6) revised on $Date: 2012-12-30 14:06:01 +0100 (Sun, 30 Dec 2012) $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstraction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gameobjects + + + + + + + + + + + enclosingFig="Fig0" + + + + + Catapult + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Knight + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Archer + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Soldier + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Collector + + + + + + + + + + + + + -averageCollectionRate : Integer + + + + + + + + +getCollectionRate() + + + + + enclosingFig="Fig0" + + + + + Worker + + + + + + + + + + + + + -currentlyBuilding : boolean + + + + + + + + +isCurrentlyBuilding() : boolean + + + + + enclosingFig="Fig0" + + + + + Infantry + + + + + + + + + + + + + -health : int + -damage : int + -range : int + + + + + + + + +attack(Building) + +getHealth() + +getDamage() + +getRange() + + + + + enclosingFig="Fig0" + + + + + Inhabitant + + + + + + «interface» + + + + + + + + +move(Tile) + +getPosition() + + + + + sourcePortFig="Fig7.0" + destPortFig="Fig8.0" + sourceFigNode="Fig7" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig5.0" + destPortFig="Fig8.0" + sourceFigNode="Fig5" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig6.0" + destPortFig="Fig8.0" + sourceFigNode="Fig6" + destFigNode="Fig8" + + + + + + + + + + enclosingFig="Fig0" + + + + + ArcherTower + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Cannon + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + DefenseBuilding + + + + + + + + + + + + + +damage : int + +range : int + + + + + + + + +attack(Infantry) + + + + + sourcePortFig="Fig12.0" + destPortFig="Fig14" + sourceFigNode="Fig12" + destFigNode="Fig14" + + + + + + + + + + sourcePortFig="Fig13.0" + destPortFig="Fig14" + sourceFigNode="Fig13" + destFigNode="Fig14" + + + + + + + + + + enclosingFig="Fig0" + + + + + Village_Hall + + + + + + + + + + + + + -goldCapacity : int + -ironCapacity : int + -woodCapacity : int + + + + + + + + +getGoldCapacity() : int + +getIronCapacity() : int + +getWoodCapacity() : int + + + + + enclosingFig="Fig0" + + + + + GoldMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + LumberMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + IronMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Farm + + + + + + + + + + + + + + + + + + + + +getPopulationContribution() : int + + + + + enclosingFig="Fig0" + + + + + ResourceBuidling + + + + + + + + + + + + + +resource : String + -harvest_rate : int + + + + + + + + +harvest(Village_Hall) + + + + + sourcePortFig="Fig18.0" + destPortFig="Fig22" + sourceFigNode="Fig18" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig19.0" + destPortFig="Fig22" + sourceFigNode="Fig19" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig20.0" + destPortFig="Fig22" + sourceFigNode="Fig20" + destFigNode="Fig22" + + + + + + + + + + + + + + + + + + + + + + player + + + + + + + + + + + enclosingFig="Fig0" + + + + + Building + + + + + + + + + + + + + -level : int + -health : int + -stages : Stage + -goldCost : int + -ironCost : int + -woodCost : int + -buildTime : int + + + + + + + + +getLevel() + +getHealth() + +getCost(String) + +getUpgradeCost() + +upgrade() + +getBuildTime() : int + + + + + sourcePortFig="Fig17.0" + destPortFig="Fig27" + sourceFigNode="Fig17" + destFigNode="Fig27" + + + + + + + + + + sourcePortFig="Fig22.0" + destPortFig="Fig27" + sourceFigNode="Fig22" + destFigNode="Fig27" + + + + + + + + + + sourcePortFig="Fig14.0" + destPortFig="Fig27" + sourceFigNode="Fig14" + destFigNode="Fig27" + + + + + + + + + + enclosingFig="Fig0" + + + + ~ Stage + + + + + + + + + + + + + #dHealth : int + #goldCost : int + #requiredVillageLevel : int + #upgradeTime : int + #ironCost : int + #woodCost : int + + + + + + + + +getHealthChange() + +getCost(String) : int + +getRequiredVillageLevel() : int + +getUpgradeTime() : int + + + + + enclosingFig="Fig0" + + + + + gameobjects::Tile + + + + + + + + + + + + + +x : int + +y : int + + + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig31" + sourceFigNode="Fig27" + destFigNode="Fig31" + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + ~ DefenseStage + + + + + + + + + + + + + #dDamge : int + #dRange : int + + + + + + + + +getDamageChange() + +getRangeChange() + + + + + sourcePortFig="Fig34.0" + destPortFig="Fig31" + sourceFigNode="Fig34" + destFigNode="Fig31" + + + + + + + + + + + + + + + + + + + + + + userinterface + + + + + + + + + + + enclosingFig="Fig36" + + + + + GuiManager + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig26" + + + + + Player + + + + + + + + + + + + + +currentGold : int + +currentIron : int + +currentWood : int + + + + + + + + + + + + + + + + + + + + + + + + game + + + + + + + + + + + sourcePortFig="Fig39.0" + destPortFig="Fig36" + sourceFigNode="Fig39" + destFigNode="Fig36" + + + + + + + + + + + enclosingFig="Fig39" + + + + + GameEngine + + + + + + + + + + + + + -player : Player + -pillageFactor : int + -currentTime : int + + + + + + + + +attackVIllage(Map) + +generateMap() : Map + +getScore(Map) + + + + + enclosingFig="Fig39" + + + + + Map + + + + + + + + + + + + + -townHall : Village_Hall + -guardTime : int + + + + + + + + +move(Infantry,Tile) + +inRange(Infantry,Building) + +build(Village_Hall,Tile,Building) + +getGuardTime() : int + +setGuardTime() + + + + + sourcePortFig="Fig0" + destPortFig="Fig36" + sourceFigNode="Fig0" + destFigNode="Fig36" + + + + + + + + + + sourcePortFig="Fig26" + destPortFig="Fig0" + sourceFigNode="Fig26" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig36" + destPortFig="Fig0" + sourceFigNode="Fig36" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig39" + destPortFig="Fig0" + sourceFigNode="Fig39" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig2.0" + destPortFig="Fig7" + sourceFigNode="Fig2" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig7" + sourceFigNode="Fig1" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig3.0" + destPortFig="Fig7" + sourceFigNode="Fig3" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig4.0" + destPortFig="Fig7" + sourceFigNode="Fig4" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig32" + destPortFig="Fig27" + sourceFigNode="Fig32" + destFigNode="Fig27" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig27" + sourceFigNode="Fig42" + destFigNode="Fig27" + + + + + + + + + + + + + + sourcePortFig="Fig41" + destPortFig="Fig42" + sourceFigNode="Fig41" + destFigNode="Fig42" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig8" + sourceFigNode="Fig42" + destFigNode="Fig8" + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + ~ VillageStage + + + + + + + + + + + + + #goldCapacityIncrease : int + #ironCapacityIncrease : int + #woodCapacityIncrease : int + + + + + + + + +getWoodCapacityIncrease() : int + +getIronCapacityIncrease() : int + +getWoodCapacityIncrease() : int + + + + + enclosingFig="Fig0" + + + + + ResourceStage + + + + + + + + + + + + + #harvestRateIncrease : int + + + + + + + + +getHarvestRateIncrease() : int + + + + + sourcePortFig="Fig55.0" + destPortFig="Fig31" + sourceFigNode="Fig55" + destFigNode="Fig31" + + + + + + + + + + sourcePortFig="Fig56.0" + destPortFig="Fig31" + sourceFigNode="Fig56" + destFigNode="Fig31" + + + + + + + + + + sourcePortFig="Fig21.0" + destPortFig="Fig22" + sourceFigNode="Fig21" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig8" + sourceFigNode="Fig27" + destFigNode="Fig8" + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment 1/A1_TowerDefenseGame_final_v2.uml~ b/Assignment 1/A1_TowerDefenseGame_final_v2.uml~ new file mode 100644 index 0000000..ea24804 --- /dev/null +++ b/Assignment 1/A1_TowerDefenseGame_final_v2.uml~ @@ -0,0 +1,7991 @@ + + + + + + + 0.35.1 + + + + + + UML 1.4 + false + true + true + true + false + false + false + true + false + true + 1 + true + Dialog + 12 + 0 + Class Diagram + + + + + + + + + + + + + + UML 1.4 + + + GoodPractices + + + CodeGeneration + + + + + ArgoUML (using Netbeans XMI Writer version 1.0) + 0.35.1(6) revised on $Date: 2012-12-30 14:06:01 +0100 (Sun, 30 Dec 2012) $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstraction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gameobjects + + + + + + + + + + + enclosingFig="Fig0" + + + + + Catapult + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Knight + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Archer + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Soldier + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Collector + + + + + + + + + + + + + -averageCollectionRate : Integer + + + + + + + + +getCollectionRate() + + + + + enclosingFig="Fig0" + + + + + Worker + + + + + + + + + + + + + -currentlyBuilding : boolean + + + + + + + + +isCurrentlyBuilding() : boolean + + + + + enclosingFig="Fig0" + + + + + Infantry + + + + + + + + + + + + + -health : int + -damage : int + -range : int + + + + + + + + +attack(Building) + +getHealth() + +getDamage() + +getRange() + + + + + enclosingFig="Fig0" + + + + + Inhabitant + + + + + + «interface» + + + + + + + + +move(Tile) + +getPosition() + + + + + sourcePortFig="Fig7.0" + destPortFig="Fig8.0" + sourceFigNode="Fig7" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig5.0" + destPortFig="Fig8.0" + sourceFigNode="Fig5" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig6.0" + destPortFig="Fig8.0" + sourceFigNode="Fig6" + destFigNode="Fig8" + + + + + + + + + + enclosingFig="Fig0" + + + + + ArcherTower + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Cannon + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + DefenseBuilding + + + + + + + + + + + + + +damage : int + +range : int + + + + + + + + +attack(Infantry) + + + + + sourcePortFig="Fig12.0" + destPortFig="Fig14" + sourceFigNode="Fig12" + destFigNode="Fig14" + + + + + + + + + + sourcePortFig="Fig13.0" + destPortFig="Fig14" + sourceFigNode="Fig13" + destFigNode="Fig14" + + + + + + + + + + enclosingFig="Fig0" + + + + + Village_Hall + + + + + + + + + + + + + -goldCapacity : int + -ironCapacity : int + -woodCapacity : int + + + + + + + + +getGoldCapacity() : int + +getIronCapacity() : int + +getWoodCapacity() : int + + + + + enclosingFig="Fig0" + + + + + GoldMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + LumberMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + IronMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Farm + + + + + + + + + + + + + + + + + + + + +getPopulationContribution() : int + + + + + enclosingFig="Fig0" + + + + + ResourceBuidling + + + + + + + + + + + + + +resource : String + -harvest_rate : int + + + + + + + + +harvest(Village_Hall) + + + + + sourcePortFig="Fig18.0" + destPortFig="Fig22" + sourceFigNode="Fig18" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig19.0" + destPortFig="Fig22" + sourceFigNode="Fig19" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig20.0" + destPortFig="Fig22" + sourceFigNode="Fig20" + destFigNode="Fig22" + + + + + + + + + + + + + + + + + + + + + + player + + + + + + + + + + + enclosingFig="Fig0" + + + + + Building + + + + + + + + + + + + + -level : int + -health : int + -stages : Stage + -goldCost : int + -ironCost : int + -woodCost : int + -buildTime : int + + + + + + + + +getLevel() + +getHealth() + +getCost(String) + +getUpgradeCost() + +upgrade() + +getBuildTime() : int + + + + + sourcePortFig="Fig17.0" + destPortFig="Fig27" + sourceFigNode="Fig17" + destFigNode="Fig27" + + + + + + + + + + sourcePortFig="Fig22.0" + destPortFig="Fig27" + sourceFigNode="Fig22" + destFigNode="Fig27" + + + + + + + + + + sourcePortFig="Fig14.0" + destPortFig="Fig27" + sourceFigNode="Fig14" + destFigNode="Fig27" + + + + + + + + + + enclosingFig="Fig0" + + + + ~ Stage + + + + + + + + + + + + + #dHealth : int + #goldCost : int + #requiredVillageLevel : int + #upgradeTime : int + #ironCost : int + #woodCost : int + + + + + + + + +getHealthChange() + +getCost(String) : int + +getRequiredVillageLevel() : int + +getUpgradeTime() : int + + + + + enclosingFig="Fig0" + + + + + gameobjects::Tile + + + + + + + + + + + + + +x : int + +y : int + + + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig31" + sourceFigNode="Fig27" + destFigNode="Fig31" + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + ~ DefenseStage + + + + + + + + + + + + + #dDamge : int + #dRange : int + + + + + + + + +getDamageChange() + +getRangeChange() + + + + + sourcePortFig="Fig34.0" + destPortFig="Fig31" + sourceFigNode="Fig34" + destFigNode="Fig31" + + + + + + + + + + + + + + + + + + + + + + userinterface + + + + + + + + + + + enclosingFig="Fig36" + + + + + GuiManager + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig26" + + + + + Player + + + + + + + + + + + + + +currentGold : int + +currentIron : int + +currentWood : int + + + + + + + + + + + + + + + + + + + + + + + + game + + + + + + + + + + + sourcePortFig="Fig39.0" + destPortFig="Fig36" + sourceFigNode="Fig39" + destFigNode="Fig36" + + + + + + + + + + + enclosingFig="Fig39" + + + + + GameEngine + + + + + + + + + + + + + -player : Player + -pillageFactor : int + -currentTime : int + + + + + + + + +attackVIllage(Map) + +generateMap() : Map + +getScore(Map) + + + + + enclosingFig="Fig39" + + + + + Map + + + + + + + + + + + + + -townHall : Village_Hall + -guardTime : int + + + + + + + + +move(Infantry,Tile) + +inRange(Infantry,Building) + +build(Village_Hall,Tile,Building) + +getGuardTime() : int + +setGuardTime() + + + + + sourcePortFig="Fig0" + destPortFig="Fig36" + sourceFigNode="Fig0" + destFigNode="Fig36" + + + + + + + + + + sourcePortFig="Fig26" + destPortFig="Fig0" + sourceFigNode="Fig26" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig36" + destPortFig="Fig0" + sourceFigNode="Fig36" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig39" + destPortFig="Fig0" + sourceFigNode="Fig39" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig2.0" + destPortFig="Fig7" + sourceFigNode="Fig2" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig7" + sourceFigNode="Fig1" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig3.0" + destPortFig="Fig7" + sourceFigNode="Fig3" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig4.0" + destPortFig="Fig7" + sourceFigNode="Fig4" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig32" + destPortFig="Fig27" + sourceFigNode="Fig32" + destFigNode="Fig27" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig27" + sourceFigNode="Fig42" + destFigNode="Fig27" + + + + + + + + + + + + + + sourcePortFig="Fig41" + destPortFig="Fig42" + sourceFigNode="Fig41" + destFigNode="Fig42" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig8" + sourceFigNode="Fig42" + destFigNode="Fig8" + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + ~ VillageStage + + + + + + + + + + + + + #goldCapacityIncrease : int + #ironCapacityIncrease : int + #woodCapacityIncrease : int + + + + + + + + +getWoodCapacityIncrease() : int + +getIronCapacityIncrease() : int + +getWoodCapacityIncrease() : int + + + + + enclosingFig="Fig0" + + + + + ResourceStage + + + + + + + + + + + + + #harvestRateIncrease : int + + + + + + + + +getHarvestRateIncrease() : int + + + + + sourcePortFig="Fig55.0" + destPortFig="Fig31" + sourceFigNode="Fig55" + destFigNode="Fig31" + + + + + + + + + + sourcePortFig="Fig56.0" + destPortFig="Fig31" + sourceFigNode="Fig56" + destFigNode="Fig31" + + + + + + + + + + sourcePortFig="Fig21.0" + destPortFig="Fig22" + sourceFigNode="Fig21" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig8" + sourceFigNode="Fig27" + destFigNode="Fig8" + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment 1/A1_TowerDefenseGame_final_v3.uml b/Assignment 1/A1_TowerDefenseGame_final_v3.uml new file mode 100644 index 0000000..cb6d83d --- /dev/null +++ b/Assignment 1/A1_TowerDefenseGame_final_v3.uml @@ -0,0 +1,8033 @@ + + + + + + + 0.35.1 + + + + + + UML 1.4 + false + true + true + true + false + false + false + true + false + true + 1 + true + Dialog + 12 + 0 + Class Diagram + + + + + + + + + + + + + + UML 1.4 + + + GoodPractices + + + CodeGeneration + + + + + ArgoUML (using Netbeans XMI Writer version 1.0) + 0.35.1(6) revised on $Date: 2012-12-30 14:06:01 +0100 (Sun, 30 Dec 2012) $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Abstraction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gameobjects + + + + + + + + + + + enclosingFig="Fig0" + + + + + Catapult + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Knight + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Archer + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Soldier + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Collector + + + + + + + + + + + + + -averageCollectionRate : Integer + + + + + + + + +getCollectionRate() : int + + + + + enclosingFig="Fig0" + + + + + Worker + + + + + + + + + + + + + -currentlyBuilding : boolean + + + + + + + + +isCurrentlyBuilding() : boolean + + + + + enclosingFig="Fig0" + + + + + Infantry + + + + + + + + + + + + + -health : int + -damage : int + -range : int + + + + + + + + +attack(Building) + +getHealth() : int + +getDamage() : int + +getRange() : int + + + + + enclosingFig="Fig0" + + + + + Inhabitant + + + + + + «interface» + + + + + + + + +move(Tile) + +getPosition() + + + + + sourcePortFig="Fig7.0" + destPortFig="Fig8.0" + sourceFigNode="Fig7" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig5.0" + destPortFig="Fig8.0" + sourceFigNode="Fig5" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig6.0" + destPortFig="Fig8.0" + sourceFigNode="Fig6" + destFigNode="Fig8" + + + + + + + + + + enclosingFig="Fig0" + + + + + ArcherTower + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Cannon + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + DefenseBuilding + + + + + + + + + + + + + +damage : int + +range : int + + + + + + + + +attack(Infantry) + + + + + sourcePortFig="Fig12.0" + destPortFig="Fig14" + sourceFigNode="Fig12" + destFigNode="Fig14" + + + + + + + + + + sourcePortFig="Fig13.0" + destPortFig="Fig14" + sourceFigNode="Fig13" + destFigNode="Fig14" + + + + + + + + + + enclosingFig="Fig0" + + + + + Village_Hall + + + + + + + + + + + + + -goldCapacity : int + -ironCapacity : int + -woodCapacity : int + + + + + + + + +getGoldCapacity() : int + +getIronCapacity() : int + +getWoodCapacity() : int + + + + + enclosingFig="Fig0" + + + + + GoldMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + LumberMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + IronMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Farm + + + + + + + + + + + + + + + + + + + + +getPopulationContribution() : int + + + + + enclosingFig="Fig0" + + + + + ResourceBuidling + + + + + + + + + + + + + +resource : String + -harvest_rate : int + + + + + + + + +harvest(Village_Hall) + + + + + sourcePortFig="Fig18.0" + destPortFig="Fig22" + sourceFigNode="Fig18" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig19.0" + destPortFig="Fig22" + sourceFigNode="Fig19" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig20.0" + destPortFig="Fig22" + sourceFigNode="Fig20" + destFigNode="Fig22" + + + + + + + + + + + + + + + + + + + + + + player + + + + + + + + + + + enclosingFig="Fig0" + + + + + Building + + + + + + + + + + + + + -level : int + -health : int + -stages : Stage + -goldCost : int + -ironCost : int + -woodCost : int + -buildTime : int + + + + + + + + +getLevel() : int + +getHealth() : int + +getCost(String) : int + +getUpgradeCost() : int + +upgrade() + +getBuildTime() : int + + + + + sourcePortFig="Fig17.0" + destPortFig="Fig27" + sourceFigNode="Fig17" + destFigNode="Fig27" + + + + + + + + + + sourcePortFig="Fig22.0" + destPortFig="Fig27" + sourceFigNode="Fig22" + destFigNode="Fig27" + + + + + + + + + + sourcePortFig="Fig14.0" + destPortFig="Fig27" + sourceFigNode="Fig14" + destFigNode="Fig27" + + + + + + + + + + + enclosingFig="Fig0" + + + + ~ Stage + + + + + + + + + + + + + #dHealth : int + #goldCost : int + #requiredVillageLevel : int + #upgradeTime : int + #ironCost : int + #woodCost : int + + + + + + + + +getHealthChange() + +getCost(String) : int + +getRequiredVillageLevel() : int + +getUpgradeTime() : int + + + + + enclosingFig="Fig0" + + + + + gameobjects::Tile + + + + + + + + + + + + + +x : int + +y : int + + + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig31" + sourceFigNode="Fig27" + destFigNode="Fig31" + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + ~ DefenseStage + + + + + + + + + + + + + #dDamge : int + #dRange : int + + + + + + + + +getDamageChange() : int + +getRangeChange() : int + + + + + sourcePortFig="Fig34.0" + destPortFig="Fig31" + sourceFigNode="Fig34" + destFigNode="Fig31" + + + + + + + + + + + + + + + + + + + + + + userinterface + + + + + + + + + + + enclosingFig="Fig36" + + + + + GuiManager + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig26" + + + + + Player + + + + + + + + + + + + + +currentGold : int + +currentIron : int + +currentWood : int + + + + + + + + + + + + + + + + + + + + + + + + game + + + + + + + + + + + sourcePortFig="Fig39.0" + destPortFig="Fig36" + sourceFigNode="Fig39" + destFigNode="Fig36" + + + + + + + + + + + enclosingFig="Fig39" + + + + + GameEngine + + + + + + + + + + + + + -player : Player + -pillageFactor : int + -currentTime : int + + + + + + + + +attackVIllage(Map) + +generateMap() : Map + +getScore(Map) + + + + + enclosingFig="Fig39" + + + + + Map + + + + + + + + + + + + + -townHall : Village_Hall + -guardTime : int + + + + + + + + +move(Infantry,Tile) + +inRange(Infantry,Building) + +build(Village_Hall,Tile,Building) + +getGuardTime() : int + +setGuardTime() + + + + + sourcePortFig="Fig0" + destPortFig="Fig36" + sourceFigNode="Fig0" + destFigNode="Fig36" + + + + + + + + + + sourcePortFig="Fig26" + destPortFig="Fig0" + sourceFigNode="Fig26" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig36" + destPortFig="Fig0" + sourceFigNode="Fig36" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig39" + destPortFig="Fig0" + sourceFigNode="Fig39" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig2.0" + destPortFig="Fig7" + sourceFigNode="Fig2" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig7" + sourceFigNode="Fig1" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig3.0" + destPortFig="Fig7" + sourceFigNode="Fig3" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig4.0" + destPortFig="Fig7" + sourceFigNode="Fig4" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig32" + destPortFig="Fig27" + sourceFigNode="Fig32" + destFigNode="Fig27" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig27" + sourceFigNode="Fig42" + destFigNode="Fig27" + + + + + + + + + + + + + + sourcePortFig="Fig41" + destPortFig="Fig42" + sourceFigNode="Fig41" + destFigNode="Fig42" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig8" + sourceFigNode="Fig42" + destFigNode="Fig8" + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + ~ VillageStage + + + + + + + + + + + + + #goldCapacityIncrease : int + #ironCapacityIncrease : int + #woodCapacityIncrease : int + + + + + + + + +getWoodCapacityIncrease() : int + +getIronCapacityIncrease() : int + +getWoodCapacityIncrease() : int + + + + + enclosingFig="Fig0" + + + + + ResourceStage + + + + + + + + + + + + + #harvestRateIncrease : int + + + + + + + + +getHarvestRateIncrease() : int + + + + + sourcePortFig="Fig55.0" + destPortFig="Fig31" + sourceFigNode="Fig55" + destFigNode="Fig31" + + + + + + + + + + sourcePortFig="Fig56.0" + destPortFig="Fig31" + sourceFigNode="Fig56" + destFigNode="Fig31" + + + + + + + + + + sourcePortFig="Fig21.0" + destPortFig="Fig22" + sourceFigNode="Fig21" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig8" + sourceFigNode="Fig27" + destFigNode="Fig8" + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignment 1/A1_TowerDefenseGame_final_v3.uml~ b/Assignment 1/A1_TowerDefenseGame_final_v3.uml~ new file mode 100644 index 0000000..6128533 --- /dev/null +++ b/Assignment 1/A1_TowerDefenseGame_final_v3.uml~ @@ -0,0 +1,6865 @@ + + + + + + + 0.35.1 + + + + + + UML 1.4 + false + true + true + true + false + false + false + true + false + true + 1 + true + Dialog + 12 + 0 + Class Diagram + + + + + + + + + + + + + + UML 1.4 + + + GoodPractices + + + CodeGeneration + + + + + ArgoUML (using Netbeans XMI Writer version 1.0) + 0.35.1(6) revised on $Date: 2012-12-30 14:06:01 +0100 (Sun, 30 Dec 2012) $ + + + + + true + + + + + + true + + + + + + true + + + + + + true + + + + + + true + + + + + + true + + + + + + true + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gameobjects + + + + + + + + + + + enclosingFig="Fig0" + + + + + Catapult + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Knight + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Archer + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Soldier + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Collector + + + + + + + + + + + + + -averageCollectionRate : Integer + + + + + + + + +getCollectionRate() + + + + + enclosingFig="Fig0" + + + + + Worker + + + + + + + + + + + + + -currentlyBuilding : boolean + + + + + + + + +isCurrentlyBuilding() : boolean + + + + + enclosingFig="Fig0" + + + + + Infantry + + + + + + + + + + + + + -health : int + -damage : int + -range : int + + + + + + + + +attack(Building) + +getHealth() + +getDamage() + +getRange() + + + + + enclosingFig="Fig0" + + + + + Inhabitant + + + + + + «interface» + + + + + + + + +move(Tile) + +getPosition() + + + + + sourcePortFig="Fig7.0" + destPortFig="Fig8.0" + sourceFigNode="Fig7" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig5.0" + destPortFig="Fig8.0" + sourceFigNode="Fig5" + destFigNode="Fig8" + + + + + + + + + + sourcePortFig="Fig6.0" + destPortFig="Fig8.0" + sourceFigNode="Fig6" + destFigNode="Fig8" + + + + + + + + + + enclosingFig="Fig0" + + + + + ArcherTower + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Cannon + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + DefenseBuilding + + + + + + + + + + + + + +damage : int + +range : int + + + + + + + + +attack(Infantry) + + + + + sourcePortFig="Fig12.0" + destPortFig="Fig14" + sourceFigNode="Fig12" + destFigNode="Fig14" + + + + + + + + + + sourcePortFig="Fig13.0" + destPortFig="Fig14" + sourceFigNode="Fig13" + destFigNode="Fig14" + + + + + + + + + + enclosingFig="Fig0" + + + + + Village_Hall + + + + + + + + + + + + + -goldCapacity : int + -ironCapacity : int + -woodCapacity : int + + + + + + + + +getGoldCapacity() : int + +getIronCapacity() : int + +getWoodCapacity() : int + + + + + enclosingFig="Fig0" + + + + + GoldMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + LumberMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + IronMine + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + + Farm + + + + + + + + + + + + + + + + + + + + +getPopulationContribution() : int + + + + + enclosingFig="Fig0" + + + + + ResourceBuidling + + + + + + + + + + + + + +resource : String + -harvest_rate : int + + + + + + + + +harvest(Village_Hall) + + + + + sourcePortFig="Fig18.0" + destPortFig="Fig22" + sourceFigNode="Fig18" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig19.0" + destPortFig="Fig22" + sourceFigNode="Fig19" + destFigNode="Fig22" + + + + + + + + + + sourcePortFig="Fig20.0" + destPortFig="Fig22" + sourceFigNode="Fig20" + destFigNode="Fig22" + + + + + + + + + + + + + + + + + + + + + + player + + + + + + + + + + + enclosingFig="Fig0" + + + + + Building + + + + + + + + + + + + + -level : int + -health : int + -stages : Stage + -goldCost : int + -ironCost : int + -woodCost : int + -buildTime : int + + + + + + + + +getLevel() + +getHealth() + +getCost(String) + +getUpgradeCost() + +upgrade() + +getBuildTime() : int + + + + + sourcePortFig="Fig17.0" + destPortFig="Fig27" + sourceFigNode="Fig17" + destFigNode="Fig27" + + + + + + + + + + sourcePortFig="Fig22.0" + destPortFig="Fig27" + sourceFigNode="Fig22" + destFigNode="Fig27" + + + + + + + + + + sourcePortFig="Fig14.0" + destPortFig="Fig27" + sourceFigNode="Fig14" + destFigNode="Fig27" + + + + + + + + + + enclosingFig="Fig0" + + + + ~ Stage + + + + + + + + + + + + + #dHealth : int + #goldCost : int + #requiredVillageLevel : int + #upgradeTime : int + #ironCost : int + #woodCost : int + + + + + + + + +getHealthChange() + +getCost(String) : int + +getRequiredVillageLevel() : int + +getUpgradeTime() : int + + + + + enclosingFig="Fig0" + + + + + gameobjects::Tile + + + + + + + + + + + + + +x : int + +y : int + + + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig31" + sourceFigNode="Fig27" + destFigNode="Fig31" + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + ~ DefenseStage + + + + + + + + + + + + + #dDamge : int + #dRange : int + + + + + + + + +getDamageChange() + +getRangeChange() + + + + + sourcePortFig="Fig34.0" + destPortFig="Fig31" + sourceFigNode="Fig34" + destFigNode="Fig31" + + + + + + + + + + + + + + + + + + + + + + userinterface + + + + + + + + + + + enclosingFig="Fig36" + + + + + GuiManager + + + + + + + + + + + + + + + + + + + + + + + + enclosingFig="Fig26" + + + + + Player + + + + + + + + + + + + + +currentGold : int + +currentIron : int + +currentWood : int + + + + + + + + + + + + + + + + + + + + + + + + game + + + + + + + + + + + sourcePortFig="Fig39.0" + destPortFig="Fig36" + sourceFigNode="Fig39" + destFigNode="Fig36" + + + + + + + + + + + enclosingFig="Fig39" + + + + + GameEngine + + + + + + + + + + + + + -player : Player + -pillageFactor : int + -currentTime : int + + + + + + + + +attackVIllage(Map) + +generateMap() : Map + +getScore(Map) + + + + + enclosingFig="Fig39" + + + + + Map + + + + + + + + + + + + + -townHall : Village_Hall + -guardTime : int + + + + + + + + +move(Infantry,Tile) + +inRange(Infantry,Building) + +build(Village_Hall,Tile,Building) + +getGuardTime() : int + +setGuardTime() + + + + + sourcePortFig="Fig0" + destPortFig="Fig36" + sourceFigNode="Fig0" + destFigNode="Fig36" + + + + + + + + + + sourcePortFig="Fig26" + destPortFig="Fig0" + sourceFigNode="Fig26" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig36" + destPortFig="Fig0" + sourceFigNode="Fig36" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig39" + destPortFig="Fig0" + sourceFigNode="Fig39" + destFigNode="Fig0" + + + + + + + + + + sourcePortFig="Fig2.0" + destPortFig="Fig7" + sourceFigNode="Fig2" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig1.0" + destPortFig="Fig7" + sourceFigNode="Fig1" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig3.0" + destPortFig="Fig7" + sourceFigNode="Fig3" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig4.0" + destPortFig="Fig7" + sourceFigNode="Fig4" + destFigNode="Fig7" + + + + + + + + + + sourcePortFig="Fig32" + destPortFig="Fig27" + sourceFigNode="Fig32" + destFigNode="Fig27" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig27" + sourceFigNode="Fig42" + destFigNode="Fig27" + + + + + + + + + + + + + + sourcePortFig="Fig41" + destPortFig="Fig42" + sourceFigNode="Fig41" + destFigNode="Fig42" + + + + + + + + + + + + + + sourcePortFig="Fig42" + destPortFig="Fig8" + sourceFigNode="Fig42" + destFigNode="Fig8" + + + + + + + + + + + + + + + enclosingFig="Fig0" + + + + ~ VillageStage + + + + + + + + + + + + + #goldCapacityIncrease : int + #ironCapacityIncrease : int + #woodCapacityIncrease : int + + + + + + + + +getWoodCapacityIncrease() : int + +getIronCapacityIncrease() : int + +getWoodCapacityIncrease() : int + + + + + enclosingFig="Fig0" + + + + + ResourceStage + + + + + + + + + + + + + #harvestRateIncrease : int + + + + + + + + +getHarvestRateIncrease() : int + + + + + sourcePortFig="Fig55.0" + destPortFig="Fig31" + sourceFigNode="Fig55" + destFigNode="Fig31" + + + + + + + + + + sourcePortFig="Fig56.0" + destPortFig="Fig31" + sourceFigNode="Fig56" + destFigNode="Fig31" + + + + + + + + + + sourcePortFig="Fig27" + destPortFig="Fig8" + sourceFigNode="Fig27" + destFigNode="Fig8" + + + + + + + + + + + + + + sourcePortFig="Fig21.0" + destPortFig="Fig22" + sourceFigNode="Fig21" + destFigNode="Fig22" + + + + + + + + + + + + + + + + + diff --git a/Assignment 1/COSC3P91-A1_Description_BrettMichael.pdf b/Assignment 1/COSC3P91-A1_Description_BrettMichael.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5d7c1326ddca6bd1fb3d713c6abe18e09561c840 GIT binary patch literal 451496 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