38 lines
1.8 KiB
Markdown
38 lines
1.8 KiB
Markdown
## IF.03.22 POSE - Procedural Programming
|
|
|
|
# Aufgabe: Car - Abstract Data Type
|
|
|
|
[English version](./README.md)
|
|
|
|
Es soll ein abstrakter Datentyp __Car__ implementiert werden, welcher einfache Grundfunktionalitäten eines Autos realisiert.
|
|
|
|
## Beispiel
|
|
|
|
Die Codesequenz um ein Auto aus einem Autoabstellplatz zu bekommen und auf 100 km/h zu beschleunigen wäre folgendermaßen:
|
|
|
|
```c
|
|
Car c = get_char(JEEP);
|
|
if (get_color(c) == BLACK) {
|
|
set_acceleration_rate(c, 3);
|
|
while (get_speed(c) < 100)
|
|
accelerate(c);
|
|
} else {
|
|
printf("I only drive black cars!")
|
|
}
|
|
```
|
|
|
|
## Aufgabe
|
|
|
|
- Definieren Sie zwei enums `CarType` und `Color`.
|
|
- Machen Sie eine forward-Deklaration für den Car, damit die Prototypen im h-file vom Compiler akzeptiert werden.
|
|
- Erstellen Sie minimale Leerimplementierungen für alle erforderlichen Funktionen. Damit müsste das Gesamtprojekt bauen.
|
|
- Definieren Sie das struct aus der forward-Deklaration.
|
|
- Erstellen Sie lokale (nur im File car.cpp) Variablen für alle erforderlichen Autos.
|
|
- Erstellen Sie ein lokales Array `car_park` in welchem alle Autos abgespeichert werden können.
|
|
- Schreiben Sie ein Programm in Datei `car_main_driver.c`, dass alle Autos, welche in `car.cpp` definiert sind, um die Wette fahren lässt.
|
|
- Ausbaustufe 1: Holen Sie sich alle Autos aus `car.cpp` und geben Sie diese untereinander im Terminal aus.
|
|
Symbolisieren Sie die Autos durch deren Anfangsbuchstaben und eine laufende Nummer.
|
|
- Ausbaustufe 2: Lassen Sie die Autos nun "fahren", indem Sie in jeder Runde die Beschleunigung zufällig für jedes Auto setzen und aufgrund der daraus resultierenden Geschwindigkeit das Auto entsprechend nach rechts setzen.
|
|
Das Rennen soll abgebrochen werden, sobald ein Auto das Ziel (den rechten Bildschirmrand) erreicht hat.
|
|
|
|
> Achtung: Die Geschwindingkeit wird in km/h, die Beschleunigung in m/s angegeben!
|