59 lines
1.8 KiB
Java
59 lines
1.8 KiB
Java
package evironment.jumpingDino;
|
|
|
|
import core.RNG;
|
|
import core.State;
|
|
|
|
import java.awt.*;
|
|
|
|
/**
|
|
* 3580 states
|
|
* if:
|
|
* dx = -(int)((Math.random() + 0.5) * Config.OBSTACLE_SPEED);
|
|
* xSpawn = Config.FRAME_WIDTH + Config.FRAME_WIDTH + Config.OBSTACLE_SIZE;
|
|
*
|
|
* 350 states
|
|
* if 4 speed variants
|
|
*
|
|
* 2044
|
|
* 4 speeds, 4 distance
|
|
*/
|
|
public class DinoWorldAdvanced extends DinoWorld{
|
|
public DinoWorldAdvanced(){
|
|
super();
|
|
}
|
|
|
|
@Override
|
|
protected State generateReturnState() {
|
|
return new DinoStateWithSpeed(getDistanceToObstacle(), dino.isInJump(), currentObstacle.getDx());
|
|
}
|
|
|
|
@Override
|
|
protected void spawnNewObstacle() {
|
|
int dx;
|
|
int xSpawn;
|
|
double ran = RNG.getRandomEnv().nextDouble();
|
|
if(ran < 0.25){
|
|
dx = -(int) (0.35 * Config.OBSTACLE_SPEED);
|
|
}else if(ran < 0.5){
|
|
dx = -(int) (0.7 * Config.OBSTACLE_SPEED);
|
|
}else if(ran < 0.75){
|
|
dx = -(int)(1.6 * Config.OBSTACLE_SPEED);
|
|
} else{
|
|
dx = -(int) (3.5 * Config.OBSTACLE_SPEED);
|
|
}
|
|
double ran2 = RNG.getRandomEnv().nextDouble();
|
|
if(ran2 < 0.25) {
|
|
// randomly spawning more right outside of the screen
|
|
xSpawn = Config.FRAME_WIDTH + Config.FRAME_WIDTH + Config.OBSTACLE_SIZE;
|
|
|
|
} else if(ran2 < 0.5) {
|
|
xSpawn = (int) (1.08 * Config.FRAME_WIDTH + Config.FRAME_WIDTH + Config.OBSTACLE_SIZE);
|
|
} else if(ran2 < 0.75) {
|
|
xSpawn = (int) (1.11 * Config.FRAME_WIDTH + Config.FRAME_WIDTH + Config.OBSTACLE_SIZE);
|
|
} else {
|
|
xSpawn = (int) (1.23 * Config.FRAME_WIDTH + Config.FRAME_WIDTH + Config.OBSTACLE_SIZE);
|
|
}
|
|
currentObstacle = new Obstacle(Config.OBSTACLE_SIZE, xSpawn, Config.FRAME_HEIGHT - Config.GROUND_Y - Config.OBSTACLE_SIZE, dx, 0, Color.BLACK);
|
|
}
|
|
}
|