Skip to content

Commit

Permalink
Merge pull request #1 from Mw3y/step-2
Browse files Browse the repository at this point in the history
Step 2
  • Loading branch information
Mw3y authored Mar 1, 2024
2 parents 8e9d43e + bc31878 commit 7279fba
Show file tree
Hide file tree
Showing 25 changed files with 1,803 additions and 2 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/qodana_code_quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Qodana
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
- step-1

jobs:
qodana:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: 'Qodana Scan'
uses: JetBrains/[email protected]
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

out/**/*
submissions/**/*
5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

124 changes: 124 additions & 0 deletions .idea/uiDesigner.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 42 additions & 0 deletions ChaCuN.iml
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,47 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library" scope="TEST">
<library name="JUnit4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13.1/junit-4.13.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library" scope="TEST">
<library name="JUnit5.8.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.8.1/junit-jupiter-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.8.1/junit-jupiter-api-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.8.1/junit-platform-commons-1.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.8.1/junit-jupiter-params-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.8.1/junit-jupiter-engine-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.8.1/junit-platform-engine-1.8.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library" scope="TEST">
<library name="JUnit5.8.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.8.1/junit-jupiter-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.8.1/junit-jupiter-api-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.8.1/junit-platform-commons-1.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.8.1/junit-jupiter-params-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.8.1/junit-jupiter-engine-5.8.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.8.1/junit-platform-engine-1.8.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
31 changes: 31 additions & 0 deletions qodana.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#-------------------------------------------------------------------------------#
# Qodana analysis is configured by qodana.yaml file #
# https://www.jetbrains.com/help/qodana/qodana-yaml.html #
#-------------------------------------------------------------------------------#
version: "1.0"

#Specify inspection profile for code analysis
profile:
name: qodana.starter

#Enable inspections
#include:
# - name: <SomeEnabledInspectionId>

#Disable inspections
#exclude:
# - name: <SomeDisabledInspectionId>
# paths:
# - <path/where/not/run/inspection>

projectJDK: 21 #(Applied in CI/CD pipeline)

#Execute shell command before Qodana execution (Applied in CI/CD pipeline)
#bootstrap: sh ./prepare-qodana.sh

#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline)
#plugins:
# - id: <plugin.id> #(plugin id can be found at https://plugins.jetbrains.com)

#Specify Qodana linter for analysis (Applied in CI/CD pipeline)
linter: jetbrains/qodana-jvm:latest
33 changes: 33 additions & 0 deletions src/ch/epfl/chacun/Animal.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package ch.epfl.chacun;

/**
* Represents an animal.
*
* @param id the id of the animal
* @param kind the kind of the animal
* @author Maxence Espagnet (sciper: 372808)
* @author Balthazar Baillat (sciper: 373420)
*/
public record Animal(int id, Kind kind) {

/**
* Returns the id of the tile on which the animal is located.
*
* @return the id of the tile on which the animal is located
*/
public int tileId() {
// id = 10 * zoneId + animalNumber
return Zone.tileId(id / 10);
}

/**
* Represents the different kinds of animals.
*/
public enum Kind {
MAMMOTH,
AUROCHS,
DEER,
TIGER
}

}
42 changes: 42 additions & 0 deletions src/ch/epfl/chacun/Direction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package ch.epfl.chacun;

import java.util.List;

/**
* Represents the different possible directions of a tile.
*
* @author Maxence Espagnet (sciper: 372808)
* @author Balthazar Baillat (sciper: 373420)
*/
public enum Direction {
N,
E,
S,
W;

// All the values of Direction.
public static final List<Direction> ALL = List.of(Direction.values());

// The number of elements of Direction.
public static final int COUNT = ALL.size();

/**
* Returns the direction after applying the given rotation.
*
* @param rotation the rotation to apply
* @return the direction after applying the rotation
*/
public Direction rotated(Rotation rotation) {
return ALL.get((this.ordinal() + rotation.ordinal()) % COUNT);
}

/**
* Returns the opposite of the receiver direction.
*
* @return the opposite of the receiver direction
*/
public Direction opposite() {
// There is only four directions, so we can just add 2 to the ordinal
return ALL.get((this.ordinal() + 2) % COUNT);
}
}
45 changes: 45 additions & 0 deletions src/ch/epfl/chacun/Occupant.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package ch.epfl.chacun;

import java.util.Objects;

/**
* Represents the different possible occupants of a zone.
*
* @param kind the occupant kind
* @param zoneId the id of the zone in which is the occupant is located
* @author Maxence Espagnet (sciper: 372808)
* @author Balthazar Baillat (sciper: 373420)
*/
public record Occupant(Kind kind, int zoneId) {

/**
* Checks for the validity of the given kind and zoneId.
*
* @throws NullPointerException if kind is null
* @throws IllegalArgumentException if zoneId is smaller than 0
*/
public Occupant {
Objects.requireNonNull(kind);
Preconditions.checkArgument(zoneId >= 0);
}

/**
* Returns the number of occupants of the given kind owned by a player
*
* @param kind the occupant kind
* @return the number of occupants of the given kind owned by a player
*/
public static int occupantsCount(Kind kind) {
return switch (kind) {
case PAWN -> 5;
case HUT -> 3;
};
}

/**
* Represents the different kinds of occupants.
*/
public enum Kind {
PAWN, HUT
}
}
Loading

0 comments on commit 7279fba

Please sign in to comment.