| Attack.java |
1 import java.awt.*;
2 import javax.swing.*;
3 import java.applet.*;
4 import java.awt.image.*;
5 import java.awt.geom.*;
6 import java.net.*;
7
8 /**
9 * Defines an ADT for Attacks.
10 *
11 * @see Monster
12 */
13 public class Attack
14 {
15 /**
16 * The Damage associated with the first Attack learned (A1)
17 */
18 public static double DAMAGE1 = .1;
19 /**
20 * The Damage associated with the second Attack learned (A2)
21 */
22 public static double DAMAGE2 = .15;
23 /**
24 * The Damage associated with the third Attack learned (A3)
25 */
26 public static double DAMAGE3 = .2;
27 /**
28 * The Damage associated with the fourth Attack learned (A4)
29 */
30 public static double DAMAGE4 = .25;
31 /**
32 * The Damage associated with the fifth Attack learned (A5)
33 */
34 public static double DAMAGE5 = .4;
35 /**
36 * The Damage associated with the sixth Attack learned (A6)
37 */
38 public static double DAMAGE6 = .5;
39 /**
40 * The Multiplier to use if the Monster is a weak type against the other Monster
41 *
42 * @see Monster
43 */
44 public static final double DAMAGEMULT = 1.15; // If weak against opp type do this times more damage
45
46 /**
47 * The name of the attack
48 */
49 private String name;
50 /**
51 * The power of the attack, defined above
52 */
53 private double power;
54
55 /**
56 * Constructs a new Attack with name and power.
57 *
58 * @param name The name of the Attack
59 * @param pow the Power of the attack (0<=x<=.5)
60 * @exception InvalidPowerException if pow is not this.DAMAGE*
61 */
62 public Attack(String name, double pow) throws InvalidPowerException
63 {
64 this.name = name;
65 if(pow == DAMAGE1 || pow == DAMAGE2 || pow == DAMAGE3 || pow == DAMAGE4 || pow == DAMAGE5 || pow == DAMAGE6)
66 power = pow;
67 else
68 throw new InvalidPowerException(pow + " is not a valid damage amount");
69 }
70
71 /**
72 * Get the name associated with the Attack.
73 *
74 * @return the name of this Attack
75 */
76 public String getName() { return name; }
77 /**
78 * Gets the power of the Attack
79 *
80 * @return the power of the Attack
81 */
82 public double getPower() { return power; }
83 /**
84 * Compares the Object to this.
85 *
86 * @param o the Object to compare with this
87 * @return true if equal, false otherwise.
88 */
89 public boolean equals(Object o)
90 {
91 if(o instanceof Attack)
92 {
93 return equals((Attack)o);
94 }
95 return false;
96 }
97 /**
98 * Compares the Attack to this. Uses Power to
99 * determine equality.
100 *
101 * @param o the Attack to compare with this
102 * @return true if equal, false otherwise.
103 */
104 public boolean equals(Attack a)
105 {
106 return a.power == this.power;
107 }
108 }