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
|
## 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
|
## 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