Advertisement
Guest User

Untitled

a guest
May 28th, 2015
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.08 KB | None | 0 0
  1.  
  2. import com.google.common.base.Predicate;
  3. import com.google.common.collect.ImmutableList;
  4. import java.util.Iterator;
  5.  
  6.  
  7.  
  8. interface Movable {
  9.     /** Vrati aktualni polohu. */
  10.     Pair<Integer, Integer> getPosition();
  11.  
  12.     /** Pohne timto objektem o dx pixelu doprava a dy dolu. */
  13.     void move(int dx, int dy);
  14. }
  15.  
  16. interface Actuator {
  17.     /** Pohne objektem v parametru. */
  18.     void actuate(Movable movable);
  19. }
  20.  
  21. /** Instance tridy Pair reprezentuji dvojice hodnot. */
  22. class Pair<A, B> {
  23.     final A first;
  24.     final B second;
  25.  
  26.     public Pair(A first, B second) {
  27.         this.first = first;
  28.         this.second = second;
  29.     }
  30. }
  31.  
  32.  
  33. public class Homework5{
  34.     static Actuator getFirstActuator() {
  35.         return new Actuator() {
  36.  
  37.             @Override
  38.             public void actuate(Movable movable) {
  39.                movable.move(1, -1);
  40.             }
  41.         };
  42.     }
  43.  
  44.     static Actuator getSecondActuator() {
  45.   return new Actuator() {
  46.  
  47.       @Override
  48.       public void actuate(Movable movable) {
  49.           if (!(Keyboard.leftArrowPressedDown() && Keyboard.rightArrowPressedDown())) {
  50.              
  51.          
  52.           if (Keyboard.leftArrowPressedDown()) {
  53.               movable.move(-1, 0);
  54.           }
  55.           if (Keyboard.rightArrowPressedDown()) {
  56.               movable.move(1, 0);
  57.           }
  58.           }
  59.       }
  60.   };
  61.     }
  62.  
  63.     static Actuator getThirdActuator(final Actuator firstActuator, Actuator secondActuator) {
  64.   return new Actuator() {
  65.       int numberOfAcutas = 0;
  66.       @Override
  67.       public void actuate(Movable movable) {
  68.           if (numberOfAcutas < 10) {
  69.               firstActuator.actuate(movable);
  70.               numberOfAcutas++;
  71.           }else if(numberOfAcutas>=10 && numberOfAcutas < 30){
  72.               secondActuator.actuate(movable);
  73.               numberOfAcutas++;
  74.               if (numberOfAcutas == 30) {
  75.                   numberOfAcutas = 0;
  76.               }
  77.          }
  78.       }
  79.   };
  80.     }
  81. }
  82.  
  83.  
  84. class Up implements Actuator {
  85.  
  86.     @Override
  87.     public void actuate(Movable movable) {
  88.         movable.move(0, -1);
  89.     }
  90. }
  91.  
  92. class Down implements Actuator {
  93.  
  94.     @Override
  95.     public void actuate(Movable movable) {
  96.         movable.move(0, 1);
  97.     }
  98. }
  99.  
  100. class Left implements Actuator {
  101.  
  102.     @Override
  103.     public void actuate(Movable movable) {
  104.         movable.move(-1, 0);
  105.     }
  106. }
  107.  
  108. class Right implements Actuator {
  109.  
  110.     @Override
  111.     public void actuate(Movable movable) {
  112.         movable.move(1, 0);
  113.     }
  114. }
  115.  
  116. class ParallellyComposingActuator implements Actuator {
  117.  ImmutableList<Actuator> motors;
  118.     public ParallellyComposingActuator(ImmutableList<Actuator> motors) {
  119.            this.motors = motors;
  120.     }
  121.  
  122.     @Override
  123.     public void actuate(Movable movable) {
  124.         for (Actuator mActuator:motors) {
  125.            mActuator.actuate(movable);
  126.         }
  127.     }
  128. }
  129.  
  130. class AmplifyingActuator implements Actuator {
  131.  int factor;
  132.  Actuator motor;
  133.     public AmplifyingActuator(Actuator motor, int factor) {
  134.       this.factor = factor;
  135.       this.motor = motor;
  136.              
  137.     }
  138.  
  139.     @Override
  140.     public void actuate(Movable movable) {
  141.         for (int i = 0; i < factor; i++) {
  142.            motor.actuate(movable);
  143.         }
  144.     }
  145. }
  146.  
  147. class Keyboard {
  148.     static boolean leftArrowPressedDown() {
  149.         return true;
  150.     }
  151.  
  152.     static boolean rightArrowPressedDown() {
  153.         return true;
  154.     }
  155. }
  156. class SequentiallyComposingActuator implements Actuator {
  157.     Iterable<Pair<Predicate<Movable>, Actuator>> iterable;
  158.     public SequentiallyComposingActuator(Iterable<Pair<Predicate<Movable>, Actuator>> iterable) {
  159.     this.iterable = iterable;
  160.     }
  161.  
  162.     @Override
  163.     public void actuate(Movable movable) {
  164.        Iterator<Pair<Predicate<Movable>, Actuator>> iterator = iterable.iterator();
  165.         while(iterator.hasNext()){
  166.             Pair<Predicate<Movable>, Actuator> pair =  iterator.next();
  167.             while (pair.first.equals(movable)) {                
  168.                 pair.second.actuate(movable);
  169.             }
  170.         }
  171.     }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement