improved jump
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
import be.kuleuven.cs.som.annotate.*;
|
||||||
|
|
||||||
public class Worm {
|
public class Worm {
|
||||||
/**
|
/**
|
||||||
* a class with the specifications of the worm
|
* a class with the specifications of the worm
|
||||||
@@ -13,10 +15,14 @@ public class Worm {
|
|||||||
// region properties
|
// region properties
|
||||||
//===================================================================================
|
//===================================================================================
|
||||||
|
|
||||||
|
|
||||||
// Location
|
// Location
|
||||||
private Tuple<Double, Double> location;
|
private Tuple<Double, Double> location;
|
||||||
|
|
||||||
|
|
||||||
|
// jumping
|
||||||
private Tuple<Double, Double> oldLocation;
|
private Tuple<Double, Double> oldLocation;
|
||||||
|
private double jumpForce;
|
||||||
|
private double jumpVelocity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* this variable contains the orientation of the worm
|
* this variable contains the orientation of the worm
|
||||||
@@ -361,8 +367,8 @@ public class Worm {
|
|||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
|
|
||||||
this.oldLocation = this.location;
|
this.oldLocation = this.location;
|
||||||
this.location = Tuple.create(location.item1 + jumpDistance(jumpVelocity()), location.item2);
|
this.jumpVelocity = jumpVelocity();
|
||||||
|
this.location = Tuple.create(location.item1 + jumpDistance(this.jumpVelocity), location.item2);
|
||||||
this.points = 0;
|
this.points = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -372,12 +378,14 @@ public class Worm {
|
|||||||
|
|
||||||
public double jumpTime() {
|
public double jumpTime() {
|
||||||
|
|
||||||
double v = jumpVelocity();
|
return jumpDistance(this.jumpVelocity) / (this.jumpVelocity * Math.cos(this.orientation));
|
||||||
return jumpDistance(v) / (v * Math.cos(this.orientation));
|
|
||||||
}
|
}
|
||||||
public double jumpStep() {
|
|
||||||
|
|
||||||
return 0.0;
|
public Tuple<Double, Double> jumpStep(double deltaTime) {
|
||||||
|
|
||||||
|
|
||||||
|
return Tuple.create(oldLocation.item1 + this.jumpVelocity * Math.cos(this.orientation) * deltaTime,
|
||||||
|
oldLocation.item2 + this.jumpVelocity * Math.sin(this.orientation) * deltaTime - (1/2) * G * Math.pow(deltaTime, 2));
|
||||||
}
|
}
|
||||||
private double jumpDistance(double v) {
|
private double jumpDistance(double v) {
|
||||||
return (Math.pow(v, 2) * Math.sin(2 * this.orientation)) / this.G;
|
return (Math.pow(v, 2) * Math.sin(2 * this.orientation)) / this.G;
|
||||||
|
Reference in New Issue
Block a user