Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.google.common.base.Predicate;
- import com.google.common.collect.ImmutableList;
- import java.util.Iterator;
- interface Movable {
- /** Vrati aktualni polohu. */
- Pair<Integer, Integer> getPosition();
- /** Pohne timto objektem o dx pixelu doprava a dy dolu. */
- void move(int dx, int dy);
- }
- interface Actuator {
- /** Pohne objektem v parametru. */
- void actuate(Movable movable);
- }
- /** Instance tridy Pair reprezentuji dvojice hodnot. */
- class Pair<A, B> {
- final A first;
- final B second;
- public Pair(A first, B second) {
- this.first = first;
- this.second = second;
- }
- }
- public class Homework5{
- static Actuator getFirstActuator() {
- return new Actuator() {
- @Override
- public void actuate(Movable movable) {
- movable.move(1, -1);
- }
- };
- }
- static Actuator getSecondActuator() {
- return new Actuator() {
- @Override
- public void actuate(Movable movable) {
- if (!(Keyboard.leftArrowPressedDown() && Keyboard.rightArrowPressedDown())) {
- if (Keyboard.leftArrowPressedDown()) {
- movable.move(-1, 0);
- }
- if (Keyboard.rightArrowPressedDown()) {
- movable.move(1, 0);
- }
- }
- }
- };
- }
- static Actuator getThirdActuator(final Actuator firstActuator, Actuator secondActuator) {
- return new Actuator() {
- int numberOfAcutas = 0;
- @Override
- public void actuate(Movable movable) {
- if (numberOfAcutas < 10) {
- firstActuator.actuate(movable);
- numberOfAcutas++;
- }else if(numberOfAcutas>=10 && numberOfAcutas < 30){
- secondActuator.actuate(movable);
- numberOfAcutas++;
- if (numberOfAcutas == 30) {
- numberOfAcutas = 0;
- }
- }
- }
- };
- }
- }
- class Up implements Actuator {
- @Override
- public void actuate(Movable movable) {
- movable.move(0, -1);
- }
- }
- class Down implements Actuator {
- @Override
- public void actuate(Movable movable) {
- movable.move(0, 1);
- }
- }
- class Left implements Actuator {
- @Override
- public void actuate(Movable movable) {
- movable.move(-1, 0);
- }
- }
- class Right implements Actuator {
- @Override
- public void actuate(Movable movable) {
- movable.move(1, 0);
- }
- }
- class ParallellyComposingActuator implements Actuator {
- ImmutableList<Actuator> motors;
- public ParallellyComposingActuator(ImmutableList<Actuator> motors) {
- this.motors = motors;
- }
- @Override
- public void actuate(Movable movable) {
- for (Actuator mActuator:motors) {
- mActuator.actuate(movable);
- }
- }
- }
- class AmplifyingActuator implements Actuator {
- int factor;
- Actuator motor;
- public AmplifyingActuator(Actuator motor, int factor) {
- this.factor = factor;
- this.motor = motor;
- }
- @Override
- public void actuate(Movable movable) {
- for (int i = 0; i < factor; i++) {
- motor.actuate(movable);
- }
- }
- }
- class Keyboard {
- static boolean leftArrowPressedDown() {
- return true;
- }
- static boolean rightArrowPressedDown() {
- return true;
- }
- }
- class SequentiallyComposingActuator implements Actuator {
- Iterable<Pair<Predicate<Movable>, Actuator>> iterable;
- public SequentiallyComposingActuator(Iterable<Pair<Predicate<Movable>, Actuator>> iterable) {
- this.iterable = iterable;
- }
- @Override
- public void actuate(Movable movable) {
- Iterator<Pair<Predicate<Movable>, Actuator>> iterator = iterable.iterator();
- while(iterator.hasNext()){
- Pair<Predicate<Movable>, Actuator> pair = iterator.next();
- while (pair.first.equals(movable)) {
- pair.second.actuate(movable);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement