software engineering tower defense
DESCRIPTION
Software Engineering Tower Defense. Emily Doll, Charles Kruzan , Brandon Kick, Benjamin Gilles, Derek Hall Computer Science. Programming:. Planning:. Design Diagrams:. - PowerPoint PPT PresentationTRANSCRIPT
Software Engineering Tower Defense
a. Towers
1. The tower sizes are as follows:
Tower type Size Cost Basic 1x1 250 vermeerium
Freeze 1x1 300 vermeerium Fire 1x1 300 vermeerium
Mortar 1x1 400 vermeerium Pulse 1x1 500 vermeerium
1. Descriptions: There will now be names associated with all of the towers in the interface:
a) Basic tower:
(1) GAU-81A “Avenger”
(2) 30mm Hydraulically-Driven Seven-Barreled Gatling-Type Rotary Cannon (basic gun tower)
b) Fire tower
(1) HPNC-61 “Dragon’s Breath”
(2) High Pressure Napalm Cannon (once placed, it will fire a steady stream of fire in one direction the player may choose, radius will be a cone shape in the direction the player placed the tower)
c) Freeze Tower
(1) LNCC “Ice Box”
(2) Liquid Nitrogen Cryogenic Cannon (hits everything in its radius. Fires every second regardless of whether there is an enemy within its radius)
d) Mortar Tower
(1) LRHODS-27 “Hot Rod”
(2) Long Range Heavy Ordinance Delivery System (very high power, slow firing, single shot tower)
e) Pulse Tower
(1) EMPCS “Sparky”
(1) Electromagnetic Pulse Charging Station (hits everything in the radius. Fires every five seconds regardless of whether there is an enemy within its radius)
2. These are the statistics for each tower, including type, damage, range, fire rate, cost, and the effect to enemies.
Tower Type
Damage Rate of
Fire Effect on Enemies
Range (Radius)
Cost
Basic 10 2
shots/sec N/A 3x3
250 Vermeerium
Freeze 5 1
shots/sec Slows 25% 3x3
300 Vermeerium
Fire 10 2
shots/sec
2 Damage/sec every 5 sec
3x1 300
Vermeerium
Mortar 40 1 shot/3
sec n/a 6x6
400 Vermeerium
Pulse 100 1 shot/ 5
sec n/a
3x3
500 Vermeerium
3. Upgrades Upgrade # Change Cost 1 (1st Tree) 25% Increase in
Damage from base 25% Tower
Purchase Price 2 (1st Tree) 50% Increase in
Damage from base 50% Tower
Purchase Price 3 (1st Tree) 100% Increase in
Damage from base 100% Tower
Purchase Price 1 (2nd Tree) +1 Unit of Radius* 25% Tower
Purchase Price 2 (2nd Tree) +1 Unit of Radius* 50% Tower
Purchase Price 3 (2nd Tree) +1 Unit of Radius* 100% Tower
Purchase
*This means +1 Unit of Radius from the center of the tower
4. Tower info panel – when a tower is either hovered over in the store or clicked after it is placed it will display the tower info panel which includes: a) Tower name b) Tower damage c) Tower rate of fire d) Tower current sell price e) Tower upgrade radius button (button will include
price of upgrade and current upgrade rank f) Tower upgrade damage button(button will include
price of upgrade and current upgrade rank) g) Tower sell button h) Tower avatar
Requirements:
Item Tested Pass Fail Comments A. Basic Tower
1) Basic Tower attacks all enemies
*tower might not be able to hit all enemies. This is intended.
2) Basic Tower does correct damage (10 damage)
3) Basic Tower radius is 3x3
4) Basic Towers have correct fire rate (2 shots/sec)
5) Basic Towers stop firing when enemies leave radius
6) Basic Tower graphic is correct 7) Basic Tower name, damage, radius, fire rate, upgrade button, sell button, and graphic are displayed in info pane when the tower is clicked 8) Basic Tower shows radius when clicked 9) Basic Towers are correct size (1x1) 10) Basic Towers cost 250 Vermeerium 11) Only attacks 1 enemy at a time
B. Freeze Tower
B. Freeze Tower 1) Freeze Tower attacks all enemies
*tower might not be able to hit all enemies. This is intended.
2) Freeze Tower does correct damage to all enemies (5)
*Enemy resistance could reduce the amount of damage enemy receives
3) Freeze Tower radius is 3x3
4) Freeze Towers have correct fire rate (1 shots/sec)
5) Freeze Towers attack continuously
*Tower will fire even when no applicable enemies are in range
6) Freeze Tower graphic is correct
7) Freeze Tower name, damage, radius, fire rate, upgrade button, sell button and graphic are displayed in info pane when the tower is clicked
8) Freeze Tower shows radius when clicked
9) Freeze Towers are correct size (1x1)
10) Freeze Towers cost 300 Vermeerium
11) Freeze Towers attack and slow all enemies within its radius (5 damage, 25% slow effect)
C. Flame Tower 1) Fire Tower attacks all enemies
*tower might not be able to hit all enemies. This is intended.
2) Fire Tower does correct damage to all enemies (10)
*Enemy resistance could reduce the amount of damage enemy receives
3) Fire Tower radius is 3x1
4) Fire Towers have correct fire rate (2 shots/sec)
5) Fire Towers stop firing when enemies leave radius
6) Fire Tower graphic is
Test Cases:
The objective of this project is to employ software engineering techniques from the classroom to build a quality tower defense game in a real life setting. The project follows the software life cycle, specifically the spiral paradigm, to gather requirements, design a viable solution, code into usable software, and mitigate errors through standardized test practices. Through this process, a game was created that has been built to customer requirements and software engineering standards.
Programming:Monster Lifecycle Activity Diagram
Begin roundBegin round
Monster has not arrived at the base Monster has arrived at the base
Monster travels set path
Monster travels set path
Monster travels to base
Monster travels to base
Tower/Spell attacks/affects
Monster
Tower/Spell attacks/affects
Monster
Player’s lives are reduced
Player’s lives are reduced
Monster’s health is reduced OR is
affected by spell
Monster’s health is reduced OR is
affected by spell
Monster is removed from the
map
Monster is removed from the
map
Monster is not in a tower’s or spell’s
radiusMonster is in a tower’s or spell’s
radius
Monster health is not zeroMonster health is zero
Player earns VermeeriumPlayer earns Vermeerium
Enter MonsterEnter Monster
*Same process is used for bosses
+Cost() : int+Damage() : int+Radius() : float+Target : Enemy()+TowerType() : string+TowerID() : int+UpgradeNumber() : int+Texture : Texture2D()+BulletTexture : Texture2D()+TowerShot : SoundEffect()+Tower:Constructor()+HasTarget() : bool+FaceTarget()+IsInRange(Vector2)() : bool+GetClosestEnemy(List<enemy>)()+Update(GameTime)()+Draw(SpriteBatch)()
#towerType : string#cost : int#radius : float#towerID : int#damageUpgradeNumber : int#radiusUpgradeNumber : int#target : Enemy#bulletTimer : float#bulletTexture : Texture2D#bulletList : List<bullet>#towershot : SoundEffect
Tower.cs
Detailed DescriptionsVariables:
towerType – the tower’s typecost – the price of building this towerdamage – the damage this tower does radius – circular radius in which the tower can damage enemies towerID – A unique ID for every tower that’s placed damageUpgradeNumber – the level that the damage has been upgraded toradiusUpgradeNumber – the level that the radius has been upgraded totarget – the enemy that the tower is targetingbulletTimer – how long ago the bullet was fired buleltTexture – this tower’s bullet’s texturebulletList – Bullets that this tower hastowerShot – Sound effect of the towerr shooting
Getters and Setters: Cost – getter for costDamage – Getter/Setter for damageRadius – Getter/Setter for radius Target – Getter for targetTowerType – getter for towerType TowerID – getter for towerIDDamageUpgradeNumber – getter/setter for damageUpgradeNumberRadiusUpgradeNumber – getter/setter for radiusUpgradeNumberTexture – getter for textureBulletTexture – getter for bulletTextureTowerShot – getter for towerShot
Constructors: Tower – (texture, bulletTexture, position, towerType, towerID, towerShot)
Methods: HasTarget – checks if the tower has a targetFaceTarget – rotate the tower to face the Enemy IsInRange – Checks an enemy position, returns true if it is in rangeGetClosestEnemy – Gets the enemy whose position is closest to the towerUpdate – Updates the tower Draw – draws the tower and bullets to the screen
Parent of all Towers
Planning: Design Diagrams:
ScreenShots:
Emily Doll, Charles Kruzan, Brandon Kick, Benjamin Gilles, Derek HallComputer Science