From be6e9c0e70560687e6cbcf6f3479ff8bc7a6232c Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 09:28:18 +0000 Subject: [PATCH] make Player class abstract. Create 2 sub-classes AIPlayer and HumanPlayer. They are just bare-bones at this point. Now, we should be able to move things one by one to the Human/AI subclasses from GameAction.java. --- .gitattributes | 2 ++ src/forge/AIPlayer.java | 37 +++++++++++++++++++++++++++++++++++++ src/forge/AllZone.java | 4 ++-- src/forge/HumanPlayer.java | 37 +++++++++++++++++++++++++++++++++++++ src/forge/Player.java | 33 +++++++++++---------------------- 5 files changed, 89 insertions(+), 24 deletions(-) create mode 100644 src/forge/AIPlayer.java create mode 100644 src/forge/HumanPlayer.java diff --git a/.gitattributes b/.gitattributes index c4674e31dca..ee6bbede345 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5290,6 +5290,7 @@ src/arcane/util/Util.java svneol=native#text/plain src/com/cloudgarden/layout/AnchorConstraint.java -text svneol=native#text/plain src/com/cloudgarden/layout/AnchorLayout.java -text svneol=native#text/plain src/com/esotericsoftware/minlog/Log.java svneol=native#text/plain +src/forge/AIPlayer.java -text svneol=native#text/plain src/forge/Ability.java svneol=native#text/plain src/forge/AbilityFactory.java -text svneol=native#text/plain src/forge/AbilityFactory_AlterLife.java -text svneol=native#text/plain @@ -5418,6 +5419,7 @@ src/forge/Gui_Treasury.java -text svneol=native#text/plain src/forge/Gui_Welcome.java svneol=native#text/plain src/forge/Gui_WinLose.java svneol=native#text/plain src/forge/HandSizeOp.java -text svneol=native#text/plain +src/forge/HumanPlayer.java -text svneol=native#text/plain src/forge/IO.java svneol=native#text/plain src/forge/ImageCache.java svneol=native#text/plain src/forge/ImagePreviewPanel.java -text svneol=native#text/plain diff --git a/src/forge/AIPlayer.java b/src/forge/AIPlayer.java new file mode 100644 index 00000000000..55de880ae45 --- /dev/null +++ b/src/forge/AIPlayer.java @@ -0,0 +1,37 @@ + +package forge; + + +public class AIPlayer extends Player{ + + public AIPlayer(String myName) { + this(myName, 20, 0); + } + + public AIPlayer(String myName, int myLife, int myPoisonCounters) { + super(myName, myLife, myPoisonCounters); + } + + public Player getOpponent() { + return AllZone.HumanPlayer; + } + + //////////////// + /// + /// Methods to ease transition to Abstract Player class + /// + /////////////// + + public boolean isHuman() { return false; } + public boolean isComputer() { return true; } + public boolean isPlayer(Player p1) { + return p1.getName().equals(this.name); + } + + /////////////// + /// + /// End transition methods + /// + /////////////// + +}//end AIPlayer class \ No newline at end of file diff --git a/src/forge/AllZone.java b/src/forge/AllZone.java index 4e57e3801e8..02c07a0a221 100644 --- a/src/forge/AllZone.java +++ b/src/forge/AllZone.java @@ -13,8 +13,8 @@ public class AllZone implements NewConstants { //only for testing, should read decks from local directory // public static final IO IO = new IO("all-decks"); - public static final Player HumanPlayer = new Player("Human"); - public static final Player ComputerPlayer = new Player("Computer"); + public static final Player HumanPlayer = new HumanPlayer("Human"); + public static final Player ComputerPlayer = new AIPlayer("Computer"); public static QuestData QuestData = null; public static Quest_Assignment QuestAssignment = null; diff --git a/src/forge/HumanPlayer.java b/src/forge/HumanPlayer.java new file mode 100644 index 00000000000..c9aa455bd71 --- /dev/null +++ b/src/forge/HumanPlayer.java @@ -0,0 +1,37 @@ + +package forge; + + +public class HumanPlayer extends Player{ + + public HumanPlayer(String myName) { + this(myName, 20, 0); + } + + public HumanPlayer(String myName, int myLife, int myPoisonCounters) { + super(myName, myLife, myPoisonCounters); + } + + //////////////// + /// + /// Methods to ease transition to Abstract Player class + /// + /////////////// + + public boolean isHuman() { return true; } + public boolean isComputer() { return false; } + public boolean isPlayer(Player p1) { + return p1.getName().equals(this.name); + } + + /////////////// + /// + /// End transition methods + /// + /////////////// + + public Player getOpponent() { + return AllZone.ComputerPlayer; + } + +}//end HumanPlayer class \ No newline at end of file diff --git a/src/forge/Player.java b/src/forge/Player.java index 7fdb8165360..69ce0c7e23f 100644 --- a/src/forge/Player.java +++ b/src/forge/Player.java @@ -2,11 +2,11 @@ package forge; -public class Player extends MyObservable{ - private String name; - private int poisonCounters; - private int life; - private int assignedDamage; +public abstract class Player extends MyObservable{ + protected String name; + protected int poisonCounters; + protected int life; + protected int assignedDamage; public Player(String myName) { this(myName, 20, 0); @@ -23,24 +23,11 @@ public class Player extends MyObservable{ return name; } - public boolean isHuman() { - return name.equals("Human"); - } + public abstract boolean isHuman(); + public abstract boolean isComputer(); + public abstract boolean isPlayer(Player p1); - public boolean isComputer() { - return name.equals("Computer"); - } - - public boolean isPlayer(Player p1) { - return p1.getName().equals(this.name); - } - - public Player getOpponent() { - if(isPlayer(AllZone.HumanPlayer)) { - return AllZone.ComputerPlayer; - } - else return AllZone.HumanPlayer; - } + public abstract Player getOpponent(); ////////////////////////// // @@ -204,6 +191,8 @@ public class Player extends MyObservable{ return new CardList(); } + //public abstract void discard(int n, SpellAbility sa); + public String toString() { return name; }