Click here to Skip to main content
16,022,538 members

Comments by fs7schmitzii (Top 1 by date)

fs7schmitzii 25-Dec-23 8:23am View    
i fixed it like this, but theres just one "error" left. When they collide, for 1 output only the small fish gets shown, but it should be the larger one. HEres an example:| |
| ><><()><
|
|
+--------------------+


|
| ><>
|
|
+--------------------+


|
| <()><
|
|
+--------------------+


|
| <()><
|
|
+--------------------+


|
|<()><><>
|
|
+--------------------+


|
|><()> ><>
|
|
+--------------------+ public void moveFish() {
Fish[][] updatedFish = new Fish[this.tankHeight][this.tankWidth];

for (int i = 0; i < this.tankHeight; i++) {
for (int j = 0; j < this.tankWidth; j++) {
if (this.fish[i][j] != null) {
this.fish[i][j].swim(this);

int newHeight = this.fish[i][j].getSwimHeight();
int newWidth = this.fish[i][j].getSwimWidth();

if (updatedFish[newHeight][newWidth] == null) {
updatedFish[newHeight][newWidth] = this.fish[i][j];


} else {

Fish smallerFish;
Fish largerFish;

if (this.fish[i][j].getLook().length() <= updatedFish[newHeight][newWidth].getLook().length()) {
largerFish = updatedFish[newHeight][newWidth];
smallerFish = this.fish[i][j];

} else {
largerFish = this.fish[i][j];
smallerFish = updatedFish[newHeight][newWidth];

}

int tempHeight = newHeight;
int tempWidth = newWidth;

// Finde eine leere Position für den kleineren Fisch
while (updatedFish[tempHeight][tempWidth] != null) {
updatedFish[tempHeight][tempWidth].swim(this);
}

// Aktualisiere die temporäre Position des kleineren Fisches
smallerFish.setSwimHeight(tempHeight);
smallerFish.setSwimWidth(tempWidth);

// Setze den kleineren Fisch an die temporäre Position
updatedFish[tempHeight][tempWidth] = smallerFish;
updatedFish[newHeight][newWidth] = largerFish;
}
}
}
}

this.fish = updatedFish;
}