added lab10 ex1
This commit is contained in:
parent
73129fd4c1
commit
dfd4dba1d7
17
src/lab10_memento/ex1/CheckpointManager.java
Normal file
17
src/lab10_memento/ex1/CheckpointManager.java
Normal file
@ -0,0 +1,17 @@
|
||||
package lab10_memento.ex1;
|
||||
|
||||
public class CheckpointManager {
|
||||
private Player.Checkpoint lastCheckpoint = null;
|
||||
|
||||
public void save(Player player) {
|
||||
lastCheckpoint = player.makeCheckpoint();
|
||||
}
|
||||
|
||||
public void restore(Player player) {
|
||||
if (lastCheckpoint != null) {
|
||||
lastCheckpoint.restore(player);
|
||||
} else {
|
||||
System.out.println("No checkpoint to restore");
|
||||
}
|
||||
}
|
||||
}
|
60
src/lab10_memento/ex1/Game.java
Normal file
60
src/lab10_memento/ex1/Game.java
Normal file
@ -0,0 +1,60 @@
|
||||
package lab10_memento.ex1;
|
||||
|
||||
public class Game {
|
||||
private final Player player;
|
||||
private final CheckpointManager checkpointManager;
|
||||
|
||||
public Game() {
|
||||
player = new Player(0, 0, 0);
|
||||
checkpointManager = new CheckpointManager();
|
||||
}
|
||||
|
||||
public void printInfo() {
|
||||
System.out.println("Player position: (" + player.getX() + "," + player.getY() + ")");
|
||||
System.out.println("Player score: " + player.getScore());
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
public void doTurn(int dx, int dy, int score, boolean isCheckpoint) {
|
||||
player.moveTo(player.getX() + dx, player.getY() + dy);
|
||||
System.out.print("Player moves to (" + player.getX() + "," + player.getY() + ")");
|
||||
if (score != 0) {
|
||||
player.increaseScore(score);
|
||||
System.out.print(" and gains +" + score + " score");
|
||||
}
|
||||
if (isCheckpoint) {
|
||||
checkpointManager.save(player);
|
||||
System.out.print(". It's a checkpoint and their position and score are saved");
|
||||
}
|
||||
System.out.println();
|
||||
printInfo();
|
||||
}
|
||||
|
||||
public void doTurn(int dx, int dy) {
|
||||
doTurn(dx, dy, 0, false);
|
||||
}
|
||||
|
||||
public void doTurn(int dx, int dy, int score) {
|
||||
doTurn(dx, dy, score, false);
|
||||
}
|
||||
|
||||
public void doTurn(int dx, int dy, boolean isCheckpoint) {
|
||||
doTurn(dx, dy, 0, isCheckpoint);
|
||||
}
|
||||
|
||||
public void die() {
|
||||
checkpointManager.restore(player);
|
||||
System.out.println("Player died ! Returning to previous checkpoint");
|
||||
printInfo();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Game game = new Game();
|
||||
|
||||
game.printInfo();
|
||||
game.doTurn(1, 1, 100);
|
||||
game.doTurn(1, 1, true);
|
||||
game.doTurn(4, 4, 100);
|
||||
game.die();
|
||||
}
|
||||
}
|
68
src/lab10_memento/ex1/Player.java
Normal file
68
src/lab10_memento/ex1/Player.java
Normal file
@ -0,0 +1,68 @@
|
||||
package lab10_memento.ex1;
|
||||
|
||||
public class Player {
|
||||
private int x;
|
||||
private int y;
|
||||
private int score;
|
||||
|
||||
public Player(int x, int y, int score) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.score = score;
|
||||
}
|
||||
|
||||
public void moveTo(int x, int y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public void increaseScore(int score) {
|
||||
this.score += score;
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public int getScore() {
|
||||
return score;
|
||||
}
|
||||
|
||||
public Checkpoint makeCheckpoint() {
|
||||
return new Checkpoint(this);
|
||||
}
|
||||
|
||||
public class Checkpoint {
|
||||
private final int x;
|
||||
private final int y;
|
||||
private final int score;
|
||||
|
||||
public Checkpoint(Player player) {
|
||||
x = player.getX();
|
||||
y = player.getY();
|
||||
score = player.getScore();
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public int getScore() {
|
||||
return score;
|
||||
}
|
||||
|
||||
public void restore(Player player) {
|
||||
player.x = this.getX();
|
||||
player.y = this.getY();
|
||||
player.score = this.getScore();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user