diff --git a/.project b/.project new file mode 100644 index 0000000..d4ab2e6 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + JumpGame + + + + + + + + diff --git a/src/Acceleration.java b/src/Acceleration.java new file mode 100644 index 0000000..3bccc68 --- /dev/null +++ b/src/Acceleration.java @@ -0,0 +1,25 @@ +import java.util.*; + +public class Acceleration { + private double mass; + private Map.Entry force; + private Velocity velocity; + private Onground onground; + private Map.Entry acceleration; + public void updateMass(double mass) { + this.mass = mass; + acceleration = (this.onground.getOnground() ? new AbstractMap.SimpleEntry<>((force.getKey()/mass), 0.0) : new AbstractMap.SimpleEntry<>((force.getKey()/mass), (force.getValue()/mass))); + velocity.updateAcceleration(acceleration); + } + public void updateForce(Map.Entry force) { + this.force = force; + acceleration = (this.onground.getOnground() ? new AbstractMap.SimpleEntry<>((force.getKey()/mass), 0.0) : new AbstractMap.SimpleEntry<>((force.getKey()/mass), (force.getValue()/mass))); + velocity.updateAcceleration(acceleration); + } + public Acceleration(Velocity velocity, Onground onground) { + this.onground = onground; + } + public Map.Entry getAcceleration() { + return acceleration; + } +} \ No newline at end of file diff --git a/src/Clear.java b/src/Clear.java new file mode 100644 index 0000000..5936436 --- /dev/null +++ b/src/Clear.java @@ -0,0 +1,11 @@ +import java.util.*; + +public class Clear { + private Position position; + public Clear(Position position) { + this.position = position; + } + public boolean getClear() { + return ((this.position.getPosition().getKey()>100.0) ? true : false); + } +} \ No newline at end of file diff --git a/src/Force.java b/src/Force.java new file mode 100644 index 0000000..e379404 --- /dev/null +++ b/src/Force.java @@ -0,0 +1,16 @@ +import java.util.*; + +public class Force { + private Acceleration acceleration; + private Map.Entry force; + public Force(Acceleration acceleration) { + this.acceleration = acceleration; + } + public void gravity(double y) { + this.force = new AbstractMap.SimpleEntry<>(0.0, y); + acceleration.updateForce(force); + } + public Map.Entry getForce() { + return force; + } +} \ No newline at end of file diff --git a/src/Gameover.java b/src/Gameover.java new file mode 100644 index 0000000..e0bef2f --- /dev/null +++ b/src/Gameover.java @@ -0,0 +1,11 @@ +import java.util.*; + +public class Gameover { + private Position position; + public Gameover(Position position) { + this.position = position; + } + public boolean getGameover() { + return ((this.position.getPosition().getValue()<-(1.0)) ? true : false); + } +} \ No newline at end of file diff --git a/src/Ground.java b/src/Ground.java new file mode 100644 index 0000000..6a1763e --- /dev/null +++ b/src/Ground.java @@ -0,0 +1,12 @@ +import java.util.*; + +public class Ground { + private Position position; + private boolean ground; + public Ground(Position position) { + this.position = position; + } + public boolean getGround() { + return ground; + } +} \ No newline at end of file diff --git a/src/JumpGame.java b/src/JumpGame.java new file mode 100644 index 0000000..9aca478 --- /dev/null +++ b/src/JumpGame.java @@ -0,0 +1,61 @@ +import java.util.*; + +public class JumpGame { + private Time time = new Time(); + private Position position = new Position(); + private Gameover gameover = new Gameover(position); + private Ground ground = new Ground(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 moveY(double y) { + this.move.moveY(y); + } + public void moveX(double x) { + this.move.moveX(x); + } + public void setMass(double x) { + this.mass.setMass(x); + } + public Map.Entry getAcceleration() { + return acceleration.getAcceleration(); + } + public Map.Entry getMove() { + return move.getMove(); + } + public double getMass() { + return mass.getMass(); + } + public boolean getClear() { + return clear.getClear(); + } + public boolean getGround() { + return ground.getGround(); + } + public Map.Entry getForce() { + return force.getForce(); + } + public Map.Entry getVelocity() { + return velocity.getVelocity(); + } + public Map.Entry getPosition() { + return position.getPosition(); + } + public boolean getOnground() { + return onground.getOnground(); + } + public double getTime() { + return time.getTime(); + } + 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..c381628 --- /dev/null +++ b/src/Mass.java @@ -0,0 +1,16 @@ +import java.util.*; + +public class Mass { + private Acceleration acceleration; + private double mass; + public Mass(Acceleration acceleration) { + this.acceleration = acceleration; + } + public void setMass(double x) { + this.mass = x; + acceleration.updateMass(mass); + } + public double getMass() { + return mass; + } +} \ No newline at end of file diff --git a/src/Move.java b/src/Move.java new file mode 100644 index 0000000..ab8511b --- /dev/null +++ b/src/Move.java @@ -0,0 +1,19 @@ +import java.util.*; + +public class Move { + private Velocity velocity; + private Map.Entry move; + public Move(Velocity velocity) { + this.velocity = velocity; + } + public void moveY(double y) { + this.move = new AbstractMap.SimpleEntry<>(this.move.getKey(), y); + velocity.updateMove(move); + } + public void moveX(double x) { + this.move = new AbstractMap.SimpleEntry<>(x, this.move.getValue()); + } + public Map.Entry getMove() { + return move; + } +} \ No newline at end of file diff --git a/src/Onground.java b/src/Onground.java new file mode 100644 index 0000000..694d757 --- /dev/null +++ b/src/Onground.java @@ -0,0 +1,13 @@ +import java.util.*; + +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.getGround()==true)&&(this.position.getPosition().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..0ecaa4f --- /dev/null +++ b/src/Position.java @@ -0,0 +1,18 @@ +import java.util.*; + +public class Position { + private Map.Entry velocity; + private boolean ground; + private Map.Entry position; + public void updateVelocity(Map.Entry velocity) { + this.velocity = velocity; + position = (((ground==true)&&((this.position.getValue()+(0.01*velocity.getValue()))<0.0)) ? new AbstractMap.SimpleEntry<>((this.position.getKey()+(0.01*velocity.getKey())), 0.0) : new AbstractMap.SimpleEntry<>((this.position.getKey()+(0.01*velocity.getKey())), (this.position.getValue()+(0.01*velocity.getValue())))); + } + public void updateGround(boolean ground) { + this.ground = ground; + position = (((ground==true)&&((this.position.getValue()+(0.01*velocity.getValue()))<0.0)) ? new AbstractMap.SimpleEntry<>((this.position.getKey()+(0.01*velocity.getKey())), 0.0) : new AbstractMap.SimpleEntry<>((this.position.getKey()+(0.01*velocity.getKey())), (this.position.getValue()+(0.01*velocity.getValue())))); + } + public Map.Entry getPosition() { + return position; + } +} \ No newline at end of file diff --git a/src/Time.java b/src/Time.java new file mode 100644 index 0000000..cf5540a --- /dev/null +++ b/src/Time.java @@ -0,0 +1,11 @@ +import java.util.*; + +public class Time { + private double time; + public void gravity(double y) { + this.time = (this.time+0.01); + } + public double getTime() { + return time; + } +} \ No newline at end of file diff --git a/src/Velocity.java b/src/Velocity.java new file mode 100644 index 0000000..4f20c7b --- /dev/null +++ b/src/Velocity.java @@ -0,0 +1,25 @@ +import java.util.*; + +public class Velocity { + private Map.Entry acceleration; + private Map.Entry move; + private Position position; + private Onground onground; + private Map.Entry velocity; + public void updateAcceleration(Map.Entry acceleration) { + this.acceleration = acceleration; + velocity = ((this.onground.getOnground()&&(this.velocity.getValue()<0.0)) ? new AbstractMap.SimpleEntry<>((this.velocity.getKey()+(0.01*acceleration.getKey())), 0.0) : new AbstractMap.SimpleEntry<>((this.velocity.getKey()+(0.01*acceleration.getKey())), (this.velocity.getValue()+(0.01*acceleration.getValue())))); + position.updateVelocity(velocity); + } + public void updateMove(Map.Entry move) { + this.move = move; + velocity = ((this.onground.getOnground()&&(move.getValue()>=0.0)) ? move : this.velocity); + position.updateVelocity(velocity); + } + public Velocity(Position position, Onground onground) { + this.onground = onground; + } + public Map.Entry getVelocity() { + return velocity; + } +} \ No newline at end of file