diff --git a/docs/坦克大战笔记.docx b/docs/坦克大战笔记.docx index 5877f80..3a03856 100644 Binary files a/docs/坦克大战笔记.docx and b/docs/坦克大战笔记.docx differ diff --git a/src/com/demo/tank/course6/Tank.java b/src/com/demo/tank/course6/Tank.java index 74ca8a6..de73c5c 100644 --- a/src/com/demo/tank/course6/Tank.java +++ b/src/com/demo/tank/course6/Tank.java @@ -1,9 +1,10 @@ package com.demo.tank.course6; -import com.demo.tank.course6.strategy.FireStrategy; -import com.demo.tank.course6.strategy.FourDirectionFireStrategy; +import com.demo.tank.strategy.DefaultFireStrategy; +import com.demo.tank.strategy.FireStrategy; import com.demo.tank.enums.Direction; import com.demo.tank.enums.Group; +import com.demo.tank.util.PropertyManager; import com.demo.tank.util.ResourceManager; import java.awt.*; @@ -21,8 +22,7 @@ public class Tank { public static final int HEIGHT = ResourceManager.tankD.getHeight(); private Random random = new Random(); Rectangle rect = new Rectangle(); -// FireStrategy fireStrategy = new DefaultFireStrategy(); - FireStrategy fireStrategy = new FourDirectionFireStrategy(); + FireStrategy fireStrategy; public Tank(int x, int y, Direction dir, Group group, TankFrameV6 tankFrame) { @@ -36,6 +36,20 @@ public class Tank { rect.y = this.y; rect.width = Tank.WIDTH; rect.height = Tank.HEIGHT; + + if(this.group == Group.GOOD) { + String className = PropertyManager.getString("good.tank.fire.strategy"); + try { + fireStrategy = (FireStrategy) Class.forName(className).newInstance(); + System.out.println(fireStrategy); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + }else if(this.group == Group.BAD) fireStrategy = new DefaultFireStrategy(); } public void paint(Graphics g) { diff --git a/src/com/demo/tank/course6/strategy/DefaultFireStrategy.java b/src/com/demo/tank/strategy/DefaultFireStrategy.java similarity index 93% rename from src/com/demo/tank/course6/strategy/DefaultFireStrategy.java rename to src/com/demo/tank/strategy/DefaultFireStrategy.java index 7413b97..d2480f0 100644 --- a/src/com/demo/tank/course6/strategy/DefaultFireStrategy.java +++ b/src/com/demo/tank/strategy/DefaultFireStrategy.java @@ -1,4 +1,4 @@ -package com.demo.tank.course6.strategy; +package com.demo.tank.strategy; import com.demo.tank.course6.Bullet; import com.demo.tank.enums.Group; diff --git a/src/com/demo/tank/course6/strategy/FireStrategy.java b/src/com/demo/tank/strategy/FireStrategy.java similarity index 70% rename from src/com/demo/tank/course6/strategy/FireStrategy.java rename to src/com/demo/tank/strategy/FireStrategy.java index 4548cb4..fa656fd 100644 --- a/src/com/demo/tank/course6/strategy/FireStrategy.java +++ b/src/com/demo/tank/strategy/FireStrategy.java @@ -1,4 +1,4 @@ -package com.demo.tank.course6.strategy; +package com.demo.tank.strategy; import com.demo.tank.course6.Tank; diff --git a/src/com/demo/tank/course6/strategy/FourDirectionFireStrategy.java b/src/com/demo/tank/strategy/FourDirectionFireStrategy.java similarity index 94% rename from src/com/demo/tank/course6/strategy/FourDirectionFireStrategy.java rename to src/com/demo/tank/strategy/FourDirectionFireStrategy.java index 0d0cdeb..c364119 100644 --- a/src/com/demo/tank/course6/strategy/FourDirectionFireStrategy.java +++ b/src/com/demo/tank/strategy/FourDirectionFireStrategy.java @@ -1,4 +1,4 @@ -package com.demo.tank.course6.strategy; +package com.demo.tank.strategy; import com.demo.tank.course6.Bullet; import com.demo.tank.enums.Direction; diff --git a/src/com/demo/tank/util/PropertyManager.java b/src/com/demo/tank/util/PropertyManager.java index c0abe45..8361e4e 100644 --- a/src/com/demo/tank/util/PropertyManager.java +++ b/src/com/demo/tank/util/PropertyManager.java @@ -19,4 +19,9 @@ public class PropertyManager { if(property == null) return 0; return Integer.valueOf((String)property.get(key)); } + + public static String getString(String key){ + if(property == null) return ""; + return (String)property.get(key); + } } diff --git a/src/config b/src/config index 00285eb..0fb47e7 100644 --- a/src/config +++ b/src/config @@ -2,4 +2,6 @@ enemy.tank.number=8 tank.speed=5 bullet.speed=5 game.width=1080 -game.height=720 \ No newline at end of file +game.height=720 +good.tank.fire.strategy=com.demo.tank.strategy.FourDirectionFireStrategy +bad.tank.fire.strategy=com.demo.tank.strategy.DefaultFireStrategy \ No newline at end of file