lab 5 fix
diff --git a/src/sample/Ball.java b/src/sample/Ball.java
index daeb83c..b04407e 100644
--- a/src/sample/Ball.java
+++ b/src/sample/Ball.java
@@ -63,26 +63,34 @@
kx = 0;
}
- /**
- *
- */
- public void checkCollision() {
+ void checkLeftWallCollision(){
if (this.getTranslateX() + speed * kx <= leftBorder) {
leftCollision = true;
}
+ }
+
+ void checkRightWallCollision(){
if (this.getTranslateX() + this.getWidth() + speed * kx
>= rightBorder) {
rightCollision = true;
}
+ }
+
+ void checkTopCollision(){
if (this.getTranslateY() + speed * ky <= topBorder) {
topCollision = true;
}
+ }
+
+ void checkBottomCollision(){
if (this.getTranslateY() + this.getHeight() + speed * ky
>= bottomBorder) {
gameOver = true;
}
- // collision with player
+ }
+
+ void checkPlayerCollisionLeft(){
if (ky > 0) {
if (this.getTranslateX() + this.getWidth()
> player.getTranslateX() &&
@@ -95,7 +103,9 @@
}
}
}
- // collision with player
+ }
+
+ void checkPlayerCollisionRight(){
if (kx > 0) {
if (this.getTranslateY() + this.getHeight()
> player.getTranslateY() &&
@@ -108,7 +118,9 @@
}
}
}
- // collision with player
+ }
+
+ void checkPlayerCollisionTop(){
if (kx < 0) {
if (this.getTranslateY() + this.getHeight()
> player.getTranslateY() &&
@@ -123,8 +135,15 @@
}
}
}
- // collision with brick
+ }
+ void checkPlayerCollision(){
+ checkPlayerCollisionLeft();
+ checkPlayerCollisionRight();
+ checkPlayerCollisionTop();
+ }
+
+ void checkBrickCollisionBottom(){
for (int i = 0; i < bricks.size(); i++) {
SimpleObject brick = bricks.get(i);
if (this.getTranslateX() + this.getWidth()
@@ -143,8 +162,9 @@
}
}
}
+ }
- // collision with brick
+ void checkBrickCollisionTop(){
for (int i = 0; i < bricks.size(); i++) {
SimpleObject brick = bricks.get(i);
if (this.getTranslateX() + this.getWidth()
@@ -165,25 +185,9 @@
}
}
}
+ }
- // collision with brick
- if (kx > 0) {
- for (int i = 0; i < bricks.size(); i++) {
- SimpleObject brick = bricks.get(i);
- if (this.getTranslateY() + this.getHeight()
- > brick.getTranslateY() &&
- this.getTranslateY() < brick.getTranslateY()
- + brick.getHeight()) {
- if (this.getTranslateX() <= brick.getTranslateX() &&
- this.getTranslateX() + this.getWidth()
- >= brick.getTranslateX()) {
- leftCollision = true;
- indexs.add(i);
- }
- }
- }
- }
- // collision with brick
+ void checkBrickCollisionRight(){
if (kx < 0) {
for (int i = 0; i < bricks.size(); i++) {
SimpleObject brick = bricks.get(i);
@@ -204,6 +208,63 @@
}
}
+ void checkBrickCollisionLeft(){
+ if (kx > 0) {
+ for (int i = 0; i < bricks.size(); i++) {
+ SimpleObject brick = bricks.get(i);
+ if (this.getTranslateY() + this.getHeight()
+ > brick.getTranslateY() &&
+ this.getTranslateY() < brick.getTranslateY()
+ + brick.getHeight()) {
+ if (this.getTranslateX() <= brick.getTranslateX() &&
+ this.getTranslateX() + this.getWidth()
+ >= brick.getTranslateX()) {
+ leftCollision = true;
+ indexs.add(i);
+ }
+ }
+ }
+ }
+ }
+
+ void checkBrickCollision(){
+ checkBrickCollisionBottom();
+ checkBrickCollisionTop();
+ checkBrickCollisionLeft();
+ checkBrickCollisionRight();
+ }
+
+ /**
+ *
+ */
+ public void checkCollision() {
+ checkLeftWallCollision();
+ checkRightWallCollision();
+ checkTopCollision();
+ checkBottomCollision();
+ checkPlayerCollision();
+ checkBrickCollision();
+ }
+
+ void destroyBricks(){
+ Set ixs = new HashSet(indexs);
+ indexs.clear();
+ indexs.addAll(ixs);
+ indexs.sort(Comparator.naturalOrder());
+ for (int k = 0; indexs.size() > 0; k++) {
+ SimpleObject b = bricks.get(indexs.get(0) - k);
+ b.setVisible(false);
+ bricks.remove(b);
+ indexs.remove(0);
+ score++;
+ }
+ }
+
+ void moveBall(){
+ setTranslateX(getTranslateX() + speed * kx);
+ setTranslateY(getTranslateY() + speed * ky);
+ }
+
/**
*
*/
@@ -222,25 +283,11 @@
kx = k;
ky = -0.8 - (1 - Math.abs(k));
}
- // destroying bricks
- Set ixs = new HashSet(indexs);
- indexs.clear();
- indexs.addAll(ixs);
- indexs.sort(Comparator.naturalOrder());
- for (int k = 0; indexs.size() > 0; k++) {
- SimpleObject b = bricks.get(indexs.get(0) - k);
- b.setVisible(false);
- bricks.remove(b);
- indexs.remove(0);
- score++;
- }
+ destroyBricks();
if (bricks.size() == 0) {
gameWon = true;
}
-
- // move ball
- setTranslateX(getTranslateX() + speed * kx);
- setTranslateY(getTranslateY() + speed * ky);
+ moveBall();
setFlagsInFalse(); // reset flags
}
diff --git a/src/sample/Game.java b/src/sample/Game.java
index b0bf266..82afd6c 100644
--- a/src/sample/Game.java
+++ b/src/sample/Game.java
@@ -74,7 +74,7 @@
int fileNumber = ((int) e.getY()) / GRID_LABEL_HEIGHT - 1;
if (fileNumber != -1 && fileNumber < fileNames.length) {
menuRoot.getChildren().remove(gridPane);
- replayFile = RESOURSE_FOLDER + fileNames[fileNumber];
+ replayFile = RESOURSE_FOLDER + replays.get(fileNumber).getReplayName();
startGame();
} else if (fileNumber == -1) {
ReplayInfo.sortBy = (int) e.getX() * 5 / (SCENE_WIDTH -
diff --git a/src/sample/Server.java b/src/sample/Server.java
index be82018..606f097 100644
--- a/src/sample/Server.java
+++ b/src/sample/Server.java
@@ -144,10 +144,7 @@
}
private void update() {
- if (ball.isGameWon()) {
- restart();
- }
- if (ball.isGameOver()) {
+ if (ball.isGameWon() || ball.isGameOver()) {
restart();
}
if (replayNow) {