66 lines
2.2 KiB
Java
66 lines
2.2 KiB
Java
package evironment.jumpingDino;
|
|
|
|
import core.State;
|
|
import core.gui.Visualizable;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.Getter;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.io.Serializable;
|
|
import java.util.Objects;
|
|
|
|
@AllArgsConstructor
|
|
@Getter
|
|
public class DinoStateSimple implements State, Serializable, Visualizable {
|
|
protected final double scale = 0.5;
|
|
private int xDistanceToObstacle;
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "DinoState{" +
|
|
"xDistanceToObstacle=" + xDistanceToObstacle +
|
|
'}';
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object o) {
|
|
if(this == o) return true;
|
|
if(o == null || getClass() != o.getClass()) return false;
|
|
DinoStateSimple dinoState = (DinoStateSimple) o;
|
|
return xDistanceToObstacle == dinoState.xDistanceToObstacle;
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return Objects.hash(xDistanceToObstacle);
|
|
}
|
|
|
|
@Override
|
|
public JComponent visualize() {
|
|
return new JComponent() {
|
|
{
|
|
setPreferredSize(new Dimension(Config.FRAME_WIDTH, (int) (scale * Config.FRAME_HEIGHT)));
|
|
setVisible(true);
|
|
}
|
|
|
|
@Override
|
|
protected void paintComponent(Graphics g) {
|
|
super.paintComponents(g);
|
|
drawObjects(g);
|
|
}
|
|
};
|
|
}
|
|
|
|
public void drawObjects(Graphics g) {
|
|
g.setColor(Color.BLACK);
|
|
g.fillRect(0, (int) (scale * (Config.FRAME_HEIGHT - Config.GROUND_Y)), Config.FRAME_WIDTH, 2);
|
|
|
|
g.fillRect((int) (scale * Config.DINO_STARTING_X), (int) (scale * (Config.FRAME_HEIGHT - Config.GROUND_Y - Config.DINO_SIZE)), (int) (scale * Config.DINO_SIZE), (int) (scale * Config.DINO_SIZE));
|
|
g.drawString("Distance: " + xDistanceToObstacle, (int) (scale * Config.DINO_STARTING_X), (int) (scale * (Config.FRAME_HEIGHT - Config.GROUND_Y - Config.OBSTACLE_SIZE - 40)));
|
|
|
|
g.fillRect((int) (scale * (Config.DINO_STARTING_X + getXDistanceToObstacle())), (int) (scale * (Config.FRAME_HEIGHT - Config.GROUND_Y - Config.OBSTACLE_SIZE)), (int) (scale * Config.OBSTACLE_SIZE), (int) (scale * Config.OBSTACLE_SIZE));
|
|
|
|
}
|
|
}
|