diff --git a/src/Acceleration.java b/src/Acceleration.java new file mode 100644 index 0000000..c60c686 --- /dev/null +++ b/src/Acceleration.java @@ -0,0 +1,41 @@ +import java.util.*; + +public class Acceleration { + private double massValue; + private Map.Entry forceValue; + private Velocity velocity; + private Onground onground; + private Map.Entry value; + + public void updateByMass(double mass) { + this.massValue = mass; + Map.Entry temp_l0; + if (this.onground.getOnground()) { + temp_l0 = new AbstractMap.SimpleEntry<>((forceValue.getKey() / mass), 0.0); + } else { + temp_l0 = new AbstractMap.SimpleEntry<>((forceValue.getKey() / mass), (forceValue.getValue() / mass)); + } + value = temp_l0; + velocity.updateByAcceleration(value); + } + + public void updateByForce(Map.Entry force) { + this.forceValue = force; + Map.Entry temp_l1; + if (this.onground.getOnground()) { + temp_l1 = new AbstractMap.SimpleEntry<>((force.getKey() / massValue), 0.0); + } else { + temp_l1 = new AbstractMap.SimpleEntry<>((force.getKey() / massValue), (force.getValue() / massValue)); + } + value = temp_l1; + velocity.updateByAcceleration(value); + } + + public Acceleration(Velocity velocity, Onground onground) { + this.onground = onground; + } + + public Map.Entry getValue() { + return value; + } +} \ No newline at end of file diff --git a/src/Clear.java b/src/Clear.java new file mode 100644 index 0000000..fc4d855 --- /dev/null +++ b/src/Clear.java @@ -0,0 +1,17 @@ +public class Clear { + private Position position; + + public Clear(Position position) { + this.position = position; + } + + public boolean getClear() { + boolean temp_l4; + if ((this.position.getValue().getKey() > 100.0)) { + temp_l4 = true; + } else { + temp_l4 = false; + } + return temp_l4; + } +} \ No newline at end of file diff --git a/src/Force.java b/src/Force.java new file mode 100644 index 0000000..68fb3f7 --- /dev/null +++ b/src/Force.java @@ -0,0 +1,19 @@ +import java.util.*; + +public class Force { + private Acceleration acceleration; + private Map.Entry value; + + public Force(Acceleration acceleration) { + this.acceleration = acceleration; + } + + public void gravity(double y) { + this.value = new AbstractMap.SimpleEntry<>(0.0, y); + acceleration.updateByForce(value); + } + + public Map.Entry getValue() { + return value; + } +} \ No newline at end of file diff --git a/src/Gameover.java b/src/Gameover.java new file mode 100644 index 0000000..15d7af5 --- /dev/null +++ b/src/Gameover.java @@ -0,0 +1,17 @@ +public class Gameover { + private Position position; + + public Gameover(Position position) { + this.position = position; + } + + public boolean getGameover() { + boolean temp_l6; + if ((this.position.getValue().getValue() < -(1.0))) { + temp_l6 = true; + } else { + temp_l6 = false; + } + return temp_l6; + } +} \ No newline at end of file diff --git a/src/Ground.java b/src/Ground.java new file mode 100644 index 0000000..7b3b112 --- /dev/null +++ b/src/Ground.java @@ -0,0 +1,7 @@ +public class Ground { + private boolean value; + + public boolean getValue() { + return value; + } +} \ No newline at end of file diff --git a/src/JumpGame.java b/src/JumpGame.java new file mode 100644 index 0000000..ae0aca6 --- /dev/null +++ b/src/JumpGame.java @@ -0,0 +1,76 @@ +import java.util.*; + +public class JumpGame { + private Time time = new Time(); + private Ground ground = new Ground(); + private Position position = new Position(ground); + private Gameover gameover = new Gameover(position); + private Onground onground = new Onground(ground, position); + private Velocity velocity = new Velocity(position, onground); + private Clear clear = new Clear(position); + private Move move = new Move(velocity); + private Acceleration acceleration = new Acceleration(velocity, onground); + private Force force = new Force(acceleration); + private Mass mass = new Mass(acceleration); + + public void gravity(double y) { + this.force.gravity(y); + this.time.gravity(y); + } + + public void moveX(double x) { + this.move.moveX(x); + } + + public void moveY(double y) { + this.move.moveY(y); + } + + public void setMass(double x) { + this.mass.setValue(x); + } + + public Map.Entry getAcceleration() { + return acceleration.getValue(); + } + + public Map.Entry getMove() { + return move.getValue(); + } + + public double getMass() { + return mass.getValue(); + } + + public boolean getClear() { + return clear.getClear(); + } + + public boolean getGround() { + return ground.getValue(); + } + + public Map.Entry getForce() { + return force.getValue(); + } + + public Map.Entry getVelocity() { + return velocity.getValue(); + } + + public Map.Entry getPosition() { + return position.getValue(); + } + + public boolean getOnground() { + return onground.getOnground(); + } + + public double getTime() { + return time.getValue(); + } + + public boolean getGameover() { + return gameover.getGameover(); + } +} \ No newline at end of file diff --git a/src/Mass.java b/src/Mass.java new file mode 100644 index 0000000..96cc156 --- /dev/null +++ b/src/Mass.java @@ -0,0 +1,17 @@ +public class Mass { + private Acceleration acceleration; + private double value; + + public Mass(Acceleration acceleration) { + this.acceleration = acceleration; + } + + public void setValue(double x) { + this.value = x; + acceleration.updateByMass(value); + } + + public double getValue() { + return value; + } +} \ No newline at end of file diff --git a/src/Move.java b/src/Move.java new file mode 100644 index 0000000..bbd2013 --- /dev/null +++ b/src/Move.java @@ -0,0 +1,23 @@ +import java.util.*; + +public class Move { + private Velocity velocity; + private Map.Entry value; + + public Move(Velocity velocity) { + this.velocity = velocity; + } + + public void moveX(double x) { + this.value = new AbstractMap.SimpleEntry<>(x, this.value.getValue()); + velocity.updateByMove(value); + } + + public void moveY(double y) { + this.value = new AbstractMap.SimpleEntry<>(this.value.getKey(), y); + } + + public Map.Entry getValue() { + return value; + } +} \ No newline at end of file diff --git a/src/Onground.java b/src/Onground.java new file mode 100644 index 0000000..751041f --- /dev/null +++ b/src/Onground.java @@ -0,0 +1,13 @@ +public class Onground { + private Ground ground; + private Position position; + + public Onground(Ground ground, Position position) { + this.ground = ground; + this.position = position; + } + + public boolean getOnground() { + return ((this.ground.getValue() == true) && (this.position.getValue().getValue() <= 0.0)); + } +} \ No newline at end of file diff --git a/src/Position.java b/src/Position.java new file mode 100644 index 0000000..dc8cbc5 --- /dev/null +++ b/src/Position.java @@ -0,0 +1,24 @@ +import java.util.*; + +public class Position { + private Ground ground; + private Map.Entry value; + + public void updateByVelocity(Map.Entry velocity) { + Map.Entry temp_l3; + if (((this.ground.getValue() == true) && ((this.value.getValue() + (0.01 * velocity.getValue())) < 0.0))) { + temp_l3 = new AbstractMap.SimpleEntry<>((this.value.getKey() + (0.01 * velocity.getKey())), 0.0); + } else { + temp_l3 = new AbstractMap.SimpleEntry<>((this.value.getKey() + (0.01 * velocity.getKey())), (this.value.getValue() + (0.01 * velocity.getValue()))); + } + value = temp_l3; + } + + public Position(Ground ground) { + this.ground = ground; + } + + public Map.Entry getValue() { + return value; + } +} \ No newline at end of file diff --git a/src/Time.java b/src/Time.java new file mode 100644 index 0000000..9a4e7fd --- /dev/null +++ b/src/Time.java @@ -0,0 +1,11 @@ +public class Time { + private double value; + + public void gravity(double y) { + this.value = (this.value + 0.01); + } + + public double getValue() { + return value; + } +} \ No newline at end of file diff --git a/src/Velocity.java b/src/Velocity.java new file mode 100644 index 0000000..860b2af --- /dev/null +++ b/src/Velocity.java @@ -0,0 +1,42 @@ +import java.util.*; + +public class Velocity { + private Map.Entry moveValue; + private Map.Entry accelerationValue; + private Position position; + private Onground onground; + private Map.Entry value; + + public void updateByMove(Map.Entry move) { + this.moveValue = move; + Map.Entry temp_l2; + if ((this.onground.getOnground() && (move.getValue() >= 0.0))) { + temp_l2 = move; + } else { + temp_l2 = this.value; + } + value = temp_l2; + position.updateByVelocity(value); + } + + public void updateByAcceleration(Map.Entry acceleration) { + this.accelerationValue = acceleration; + Map.Entry temp_l5; + if ((this.onground.getOnground() && (this.value.getValue() < 0.0))) { + temp_l5 = new AbstractMap.SimpleEntry<>((this.value.getKey() + (0.01 * acceleration.getKey())), 0.0); + } else { + temp_l5 = new AbstractMap.SimpleEntry<>((this.value.getKey() + (0.01 * acceleration.getKey())), (this.value.getValue() + (0.01 * acceleration.getValue()))); + } + value = temp_l5; + position.updateByVelocity(value); + } + + public Velocity(Position position, Onground onground) { + this.position = position; + this.onground = onground; + } + + public Map.Entry getValue() { + return value; + } +} \ No newline at end of file