Advertisement
Khadija_Assem

Untitled

Dec 19th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. package eg.edu.alexu.csd.oop.game.sample.ShapeFactory;
  2.  
  3.  
  4. import eg.edu.alexu.csd.oop.game.GameObject;
  5.  
  6. import eg.edu.alexu.csd.oop.game.World;
  7. import eg.edu.alexu.csd.oop.game.sample.GameObjects.Composite.Gate;
  8. import eg.edu.alexu.csd.oop.game.sample.GameObjects.Composite.GateDirector;
  9. import eg.edu.alexu.csd.oop.game.sample.GameObjects.Plates;
  10. import eg.edu.alexu.csd.oop.game.sample.Logger.LoggerObject;
  11. import eg.edu.alexu.csd.oop.game.sample.State.ShelfState;
  12. import eg.edu.alexu.csd.oop.game.sample.State.State;
  13. import org.apache.log4j.Logger;
  14.  
  15.  
  16. import java.util.List;
  17. import java.util.ListIterator;
  18.  
  19. public class ShapeFactory {
  20. private Logger logger = LoggerObject.getLogger();
  21.  
  22. private World world;
  23. List<GameObject> shapes;
  24. private Object ShelfState = new ShelfState();
  25. private int x;
  26. private int y;
  27. private static int gate;
  28. static ShapeFactory factory;
  29. static int TurnTaker=0;
  30. private ShapeFactory(){
  31.  
  32. }
  33. public static ShapeFactory getFactory(){
  34. if (factory==null)factory =new ShapeFactory();
  35. return factory;
  36. }
  37. public World getWorld() {
  38. return world;
  39. }
  40. public void setWorld(World world) {
  41. this.world = world;
  42. shapes = world.getMovableObjects();
  43. }
  44. public void setGate(int gate) {
  45. this.gate = gate;
  46. TurnTaker++;
  47. TurnTaker=TurnTaker%4;
  48. // logger.info("Turn Taker Value : "+TurnTaker+" And Gate :"+this.gate);
  49. x = GateDirector.getInstance().showGateDetails(this.gate).getX();
  50. y = GateDirector.getInstance().showGateDetails(this.gate).getY();
  51. }
  52. String[] Colors = {"Purple","Red","Blue","Yellow"};
  53. String[] Images = {"Ball"};// We change this!
  54. public Plates getShape(){
  55. String color = getRandomColor() ;
  56. String type = color +getRandomShape();
  57. ListIterator<GameObject> iterator= shapes.listIterator();
  58. while (iterator.hasNext()){
  59. Plates plate = (Plates)iterator.next();
  60. String PlateType = plate.getPath();
  61. if(type.equalsIgnoreCase(PlateType)&& ! plate.isVisible()){
  62. logger.info("(Flyweight) Using old shape of type "+PlateType);
  63. plate.setGate(gate);
  64. plate.setX(x);
  65. plate.setY(y);
  66. plate.setState((State)ShelfState);
  67. plate.setVisible(true);
  68. return plate;
  69. }
  70. }
  71. // logger.info("Creating new plate of type :"+type);
  72. Plates plate = new Plates(x,y,"/"+type+".png");
  73. logger.info("Set Shape at Gate : "+this.gate);
  74. plate.setGate(gate);
  75. plate.setVisible(true);
  76. plate.setState((State)ShelfState);
  77. plate.setColor(color);
  78. shapes.add(plate);
  79. return plate;
  80. }
  81. private String getRandomColor(){
  82. return Colors[(int) (Math.random()* Colors.length)];
  83. }
  84. private String getRandomShape(){
  85. return Images[(int) (Math.random()*Images.length)];
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement