Analyzed & fixed duplicated Code

This commit is contained in:
0nlineSam 2024-11-02 13:20:03 +01:00
parent fd3dfb35ca
commit 3dca3338e8
5 changed files with 63 additions and 50 deletions

View File

@ -0,0 +1,10 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<Languages>
<language minSize="24" name="Java" />
</Languages>
</inspection_tool>
</profile>
</component>

6
.idea/misc.xml generated
View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK">
<component name="PWA">
<option name="enabled" value="true" />
<option name="wasEnabledAtLeastOnce" value="true" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>

View File

@ -86,10 +86,8 @@ public class BoulderAndDiamondController implements Runnable {
* @param y Vertical position
*/
private String expandWall(int x, int y) {
DisplayableElementModel elementLeft = this.levelModel.getGroundLevelModel()[x - 1][y];
DisplayableElementModel elementRight = this.levelModel.getGroundLevelModel()[x + 1][y];
String spriteNameLeft = elementLeft.getSpriteName();
String spriteNameRight = elementRight.getSpriteName();
String spriteNameLeft = getElementSpriteName(x - 1, y);
String spriteNameRight = getElementSpriteName(x + 1, y);
String way = "";
if(spriteNameLeft == "black"){
@ -112,12 +110,10 @@ public class BoulderAndDiamondController implements Runnable {
private void manageFall(int x, int y) {
// Get informed about Rockford surroundings
DisplayableElementModel elementBelow = this.levelModel.getGroundLevelModel()[x][y + 1];
DisplayableElementModel elementLeft = this.levelModel.getGroundLevelModel()[x - 1][y];
DisplayableElementModel elementRight = this.levelModel.getGroundLevelModel()[x + 1][y];
String spriteNameBelow = elementBelow.getSpriteName();
String spriteNameLeft = elementLeft.getSpriteName();
String spriteNameRight = elementRight.getSpriteName();
String spriteNameBelow = getElementSpriteName(x, y + 1);
String spriteNameLeft = getElementSpriteName(x - 1, y);
String spriteNameRight = getElementSpriteName(x + 1, y);
// Then, process in case of the surrounding
if (spriteNameBelow == "black") {
@ -161,4 +157,15 @@ public class BoulderAndDiamondController implements Runnable {
this.levelModel.getGroundLevelModel()[x][y].setFalling(false);
}
}
/**
* Returns the sprite name of a DisplayableElementModel
*
* @param x Horizontal position
* @param y Vertical position
*/
private String getElementSpriteName(int x, int y) {
DisplayableElementModel elementModel = this.levelModel.getGroundLevelModel()[x][y];
return elementModel.getSpriteName();
}
}

View File

@ -118,13 +118,8 @@ public class RockfordModel extends DisplayableElementModel {
* Stops the Rockford movement
*/
public void startStaying() {
isCollisionDone = false;
resetState();
isStaying = true;
isRunningLeft = false;
isRunningRight = false;
isRunningUp = false;
isRunningDown = false;
previousTime = 0;
currentFrame = 0;
}
@ -132,52 +127,32 @@ public class RockfordModel extends DisplayableElementModel {
* Starts moving Rockford to the left
*/
public void startRunningLeft() {
isCollisionDone = false;
isStaying = false;
resetState();
isRunningLeft = true;
isRunningRight = false;
isRunningUp = false;
isRunningDown = false;
previousTime = 0;
}
/**
* Starts moving Rockford to the right
*/
public void startRunningRight() {
isCollisionDone = false;
isStaying = false;
isRunningLeft = false;
resetState();
isRunningRight = true;
isRunningUp = false;
isRunningDown = false;
previousTime = 0;
}
/**
* Rockford running up
*/
public void startRunningUp() {
isCollisionDone = false;
isStaying = false;
isRunningLeft = false;
isRunningRight = false;
resetState();
isRunningUp = true;
isRunningDown = false;
previousTime = 0;
}
/**
* Rockford running down
*/
public void startRunningDown() {
isCollisionDone = false;
isStaying = false;
isRunningLeft = false;
isRunningRight = false;
isRunningUp = false;
resetState();
isRunningDown = true;
previousTime = 0;
}
/**
@ -299,4 +274,14 @@ public class RockfordModel extends DisplayableElementModel {
public void setHasExplosed(boolean hasExploded){
this.hasExploded = hasExploded;
}
private void resetState() {
isCollisionDone = false;
isStaying = false;
isRunningLeft = false;
isRunningRight = false;
isRunningUp = false;
isRunningDown = false;
previousTime = 0;
}
}

View File

@ -44,11 +44,7 @@ public abstract class GroundView extends JPanel implements Observer {
public void drawTerrain(int width, int height, Graphics g) {
// Draw items
if (this.levelModel.getMode() == "game") {
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
g.drawImage(this.levelModel.getImage(x, y), (x * 16), (y * 16), this);
}
}
drawGameTerrain(width, height, g);
if(!this.levelModel.isGameRunning()) {
if(!this.levelModel.getRockford().getHasExplosed()) {
@ -58,11 +54,7 @@ public abstract class GroundView extends JPanel implements Observer {
}
}
} else {
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
g.drawImage(this.levelModel.getImage(x, y), (x * 16), (y * 16), this);
}
}
drawGameTerrain(width, height, g);
if (this.levelModel.getShowCursor()) {
g.drawImage(
this.levelModel.getCursorImage(),
@ -74,6 +66,21 @@ public abstract class GroundView extends JPanel implements Observer {
}
}
/**
* Draws the game terrain
*
* @param width Map width
* @param height Map height
* @param g Map graphical object
*/
private void drawGameTerrain(int width, int height, Graphics g) {
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
g.drawImage(this.levelModel.getImage(x, y), (x * 16), (y * 16), this);
}
}
}
/**
* Set the view to inform the user that he won
*/