forked from pr2-lecture-STG/assignments
Add Assignmen 01 and Assignment 02
parent
75df6698fa
commit
fb0ea1a7de
|
|
@ -44,7 +44,7 @@ Die folgende Tabelle zeigt Ihnen die Themen der Woche und welche Kapitel Sie bis
|
|||
|
||||
## Freiwillige Übungen
|
||||
|
||||
Die freiwilligen Übungen zur Vertiefung der Vorlesungsinhalte finden Sie in einem getrennten Repository: [Freiwillige Übungen](pr2-lecture-STG/uebungen/src/branch/main/readme.md)
|
||||
Die freiwilligen Übungen zur Vertiefung der Vorlesungsinhalte finden Sie in einem getrennten Repository: [Freiwillige Übungen](https://gitty.informatik.hs-mannheim.de/pr2-lecture-STG/uebungen)
|
||||
|
||||
## Assignments
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,66 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
# Fail on first error
|
||||
set -e
|
||||
|
||||
# check how we have been called
|
||||
if [ ! "$0" == "bin/submit.sh" ]; then
|
||||
echo -e "\e[31m"
|
||||
echo "💣 Das Skript muss aus dem Hauptverzeichnis des Projektes"
|
||||
echo "💣 mit bin/submit.sh aufgerufen werden."
|
||||
echo -e "\e[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "***************************************************************"
|
||||
echo "Abgabe einreichen"
|
||||
echo "***************************************************************"
|
||||
echo ""
|
||||
cd sources
|
||||
|
||||
# Test, if project builds
|
||||
echo "------------------------------------------------------------------"
|
||||
echo "Build..."
|
||||
echo ""
|
||||
if ! mvn; then
|
||||
echo -e "\e[31m"
|
||||
echo "💣 Projekt baut nicht und kann deswegen nicht abgegeben werden."
|
||||
echo "💣 Bitte beheben Sie alle gemeldeten Fehler und versuchen Sie "
|
||||
echo "💣 es dann erneut "
|
||||
echo -e "\e[0m"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\e[32m"
|
||||
echo "✅ Projekt gebaut "
|
||||
echo -e "\e[0m"
|
||||
fi
|
||||
|
||||
# Test, if all changes are committed
|
||||
echo "------------------------------------------------------------------"
|
||||
echo "Teste git-Staus..."
|
||||
if ! git status | grep -q "nothing to commit" && ! git status | grep -q "nichts zu committen" ; then
|
||||
echo -e "\e[31m"
|
||||
echo "💣 Bitte checken Sie alle Änderungen per git ein. "
|
||||
echo -e "\e[0m"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\e[32m"
|
||||
echo "✅ Alle Dateien eingecheckt "
|
||||
echo -e "\e[0m"
|
||||
fi
|
||||
|
||||
# Submit
|
||||
echo "------------------------------------------------------------------"
|
||||
echo "Sende Lösung..."
|
||||
if ! git push origin main; then
|
||||
echo -e "\e[31m"
|
||||
echo "💣 Push nicht erfolgreich. Bitte beheben Sie den Fehler und "
|
||||
echo "💣 starten Sie das Skript erneut. "
|
||||
echo -e "\e[0m"
|
||||
exit 1
|
||||
else
|
||||
echo -e "\e[32m"
|
||||
echo "✅ Aktuelle Lösungen eingereicht "
|
||||
echo -e "\e[0m"
|
||||
fi
|
||||
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
# Fail on first error
|
||||
set -e
|
||||
|
||||
# check how we have been called
|
||||
if [ ! "$0" == "bin/update.sh" ]; then
|
||||
echo -e "\e[31m"
|
||||
echo "💣 Das Skript muss aus dem Hauptverzeichnis des Projektes"
|
||||
echo "💣 mit bin/update.sh oder bash bin/update.sh aufgerufen werden."
|
||||
echo -e "\e[0m"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check the integrity of the .assignments directory
|
||||
if [ -d ".assignments" ] && [ ! -d ".assignments/.git" ]; then
|
||||
echo -e "\e[31m"
|
||||
echo "Nicht korrektes .assignments-Verzeichnis. Wird gelöscht."
|
||||
echo "Bitte achten Sie darauf, das .assignments-Verzeichnis nicht"
|
||||
echo "einzuchecken."
|
||||
echo -ne "\e[0m"
|
||||
rm -rf ".assignments"
|
||||
fi
|
||||
|
||||
# Clone repo if not already present
|
||||
if [ ! -d ".assignments" ]; then
|
||||
echo -e "\e[32m"
|
||||
echo "Clone Repository mit den Aufgaben"
|
||||
echo -ne "\e[0m"
|
||||
git clone gitea@gitty.informatik.hs-mannheim.de:pr2-lecture-STG/assignments.git .assignments
|
||||
mkdir -p sources/src/main/java
|
||||
fi
|
||||
|
||||
# Sync exercises with local directory
|
||||
echo -e "\e[32m"
|
||||
echo "---------------------------------------------------------------"
|
||||
echo "Hole neue Aufgaben und Quelltexte "
|
||||
echo "---------------------------------------------------------------"
|
||||
echo -ne "\e[0m"
|
||||
|
||||
(cd .assignments && git pull origin main)
|
||||
rsync --ignore-existing -raz .assignments/sources/ sources/
|
||||
|
||||
for dir in .assignments/Assignment_*; do
|
||||
rsync --ignore-existing -raz "$dir" ./
|
||||
done
|
||||
|
||||
# Assignment files
|
||||
rsync --ignore-existing -raz --include='Assignment_*' --exclude='*' .assignments/* ./
|
||||
|
||||
# Libraries
|
||||
rsync -raz .assignments/sources/lib/ ./sources/lib
|
||||
|
||||
# Main readme
|
||||
cp .assignments/readme.md README.md
|
||||
|
||||
# Update scripts
|
||||
cp .assignments/bin/submit.sh bin/submit.sh
|
||||
|
||||
if [ -f .assignments/bin/update.sh ]; then
|
||||
# Remove myself
|
||||
rm bin/update.sh
|
||||
|
||||
# Copy the new version at the old location
|
||||
cp .assignments/bin/update.sh bin/update.sh
|
||||
fi
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
## Tabs in Eclipse
|
||||
|
||||
Eclipse verwendet standardmäßig Tabulatoren für die Einrückung von Quelltexten. Da dies aber dem Coding-Standard widerspricht und auch von den Check-Tools bemängelt wird, sollten Sie Eclipse entsprechend konfigurieren.
|
||||
|
||||
Öffnen Sie die Properties für das aktuelle Projekt über `File` -> `Properties`.
|
||||
|
||||
<img style="width: 30em;" src="img/tab_1.png">
|
||||
|
||||
Wählen Sie im Dialog die Option `Java Code Style` und dann `Formater`. Setzen Sie das Häkchen bei `Enable project specific settings` und klicken Sie auf `New`.
|
||||
|
||||
<img style="width: 15em;" src="img/tab_2.png">
|
||||
|
||||
Geben Sie dem Profil einen Namen, z.B. `PR2`.
|
||||
|
||||
<img style="width: 40em;" src="img/tab_3.png">
|
||||
|
||||
Wählen Sie unter dem Punkt `Indentation` als `Tab policy` den Eintrag `Spaces only` uns setzen Sie die Breiten auf jeweils `4`.
|
||||
|
||||
Schließen Sie den Dialog mit `OK` und das Properties-Fenster mit `Apply and Close`.
|
||||
|
||||
## Encoding und Zeilenende
|
||||
|
||||
Eclipse verwendet teilweise ein anderes Encoding als UTF-8 und benutzt Windows-Zeilenenden. Um dies zu verhindern nehmen Sie bitte folgende Einstellung vor:
|
||||
|
||||
Öffnen Sie die Properties für das aktuelle Projekt über `File` -> `Properties`.
|
||||
|
||||
Wählen Sie im Dialog die Option `Resources`.
|
||||
|
||||
<img style="width: 30em;" src="img/crlf.png">
|
||||
|
||||
Setzen Sie die Option `Text file encoding` auf `UTF-8` und `New text file line delimiter` auf `Unix`.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 183 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 223 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 204 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
## Softwareausstattung
|
||||
|
||||
* **Ubuntu Linux** als Installation oder VM
|
||||
* **Java JDK 21**<br>`sudo apt install openjdk-21-jdk openjdk-21-source openjdk-21-doc`
|
||||
* **Git** und Git-Frontends<br>`sudo apt install git meld git-cola`
|
||||
* **Maven 3.6 oder neuer**<br>`sudo apt install maven`
|
||||
* **Eclipse**<br>Von der [Webseite](https://www.eclipse.org/downloads/) herunterladen und installieren. Bitte verwenden Sie die Version **Eclipse IDE for Java Developers**
|
||||
|
||||
Eine Anleitung zur Installation von Ubuntu Linux finden Sie [hier](https://github.com/informatik-mannheim/linux-hsma/blob/master/doc/readme.md). Diese Anleitung bezieht sich auf Ubuntu 21.04, funktioniert so aber auch mit einer neueren Version.
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>de.hs_mannheim.pr2</groupId>
|
||||
<artifactId>solutions</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>PR2 Excercises</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>17</maven.compiler.source>
|
||||
<maven.compiler.target>17</maven.compiler.target>
|
||||
<junit.jupiter.version>5.9.1</junit.jupiter.version>
|
||||
<junit.platform.version>1.9.1</junit.platform.version>
|
||||
</properties>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>jitpack.io</id>
|
||||
<url>https://jitpack.io</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<build>
|
||||
<defaultGoal>install</defaultGoal>
|
||||
<directory>${basedir}/target</directory>
|
||||
<finalName>${project.artifactId}-${project.version}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.10.1</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.0.0-M7</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<version>3.2.0</version>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.puppycrawl.tools</groupId>
|
||||
<artifactId>checkstyle</artifactId>
|
||||
<version>10.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<configuration>
|
||||
<configLocation>checkstyle.xml</configLocation>
|
||||
<consoleOutput>true</consoleOutput>
|
||||
<failsOnError>true</failsOnError>
|
||||
<linkXRef>false</linkXRef>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>validate</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
<version>3.19.0</version>
|
||||
<configuration>
|
||||
<rulesets>
|
||||
<ruleset>./pmd.xml</ruleset>
|
||||
</rulesets>
|
||||
<failOnViolation>true</failOnViolation>
|
||||
<printFailingErrors>true</printFailingErrors>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<!--
|
||||
<dependency>
|
||||
<groupId>de.smits_net.games</groupId>
|
||||
<artifactId>game-framework</artifactId>
|
||||
<version>1.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
-->
|
||||
<dependency>
|
||||
<groupId>com.github.thomsmits</groupId>
|
||||
<artifactId> game-framework</artifactId>
|
||||
<version>v1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-engine</artifactId>
|
||||
<version>${junit.jupiter.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
<version>${junit.jupiter.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-params</artifactId>
|
||||
<version>${junit.jupiter.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.platform</groupId>
|
||||
<artifactId>junit-platform-suite</artifactId>
|
||||
<version>${junit.platform.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.vintage</groupId>
|
||||
<artifactId>junit-vintage-engine</artifactId>
|
||||
<version>${junit.jupiter.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jfree</groupId>
|
||||
<artifactId>jfreechart</artifactId>
|
||||
<version>1.5.3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package pr2.bootstrap.hello;
|
||||
|
||||
/**
|
||||
* Eine freundliche Klasse, die gerne Menschen begrüßt.
|
||||
*/
|
||||
public class Greeter {
|
||||
|
||||
/**
|
||||
* Begrüßt die Person.
|
||||
*
|
||||
* @param name Name der Person, die begrüßt wird.
|
||||
*/
|
||||
public void greet(String name) {
|
||||
System.out.printf("Hallo %s\n", name);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package pr2.bootstrap.hello;
|
||||
|
||||
/**
|
||||
* Hello World Programm.
|
||||
*/
|
||||
public class HelloWorld {
|
||||
|
||||
/**
|
||||
* Einstieg ins Programm. Der Name wird aus dem ersten
|
||||
* Kommandozeilenargument genommen.
|
||||
*
|
||||
* @param args Argumente.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
Greeter g = new Greeter();
|
||||
|
||||
// TODO: Wenn kein Argument auf der Kommandozeile gegeben wurde,
|
||||
// TODO: nehmen Sie als Namen "<Unbekannter>", andernfalls den
|
||||
// TODO: Namen aus dem ersten Argument.
|
||||
// TODO: greet Methode auf g rufen
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue