Size: 6760
Comment:
|
Size: 6818
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 10: | Line 10: |
'''Beispiel 1: ''' Wenn Ihr Programm alle Funktionalitäten erfüllt und auch die Qualität perfekt ist, erhalten Sie 100 Prozentpunkte für die Funktionalität und 100 Prozentpunkte für die Qualität. Das ergibt eine Gesamtpunktzahl von '''100% x 100% x 80 = 80'''.'' <<BR>> * '' Wenn Ihr Programm alle Funktionalitäten erfüllt, aber das Drumherum nur zur Hälfte in Ordnung ist, erhalten Sie '''80 Punkte''' und einen Faktor von '''50%'''. Das ergibt eine Gesamtpunktzahl von '''80 * 50% = 40'''.'' <<BR>> |
'''Beispiel 1:''' Wenn Ihr Programm alle Funktionalitäten erfüllt und auch die Qualität perfekt ist, erhalten Sie 100 Prozentpunkte für die Funktionalität und 100 Prozentpunkte für die Qualität. Das ergibt eine Gesamtpunktzahl von '''100% x 100% x 80 = 80'''.'' <<BR>> '''Beispiel 2:''' '' Wenn Ihr Programm alle Funktionalitäten erfüllt, aber die Qualität nur zur Hälfte in Ordnung ist, erhalten Sie 100 Prozentpunkte für die Funktionalität und 50 Prozentpunkte für die Qualität. Das ergibt eine Gesamtpunktzahl von '''100% x 50% x 80 = 40'''.'' <<BR>> |
Bewertungsschema
Zur Benotung Ihrer Abgabe bewerten wir zwei Aspekte: (1) die Funktionalität Ihres Programms und (2) die Qualität Ihres Codes (inkl. Unit Tests, Code Style, Valgrind, etc.). Beides bewerten wir mit einer Prozentpunktzahl zwischen 0 und 100. Die detaillierten Punktevergabeschemas hierfür sind in den entsprechenden Abschnitten "Bewertung der Funktionalität" und "Bewertung der Qualität" weiter unten erläutert.
Ihre Gesamtpunktzahl errechnet sich aus: Funktionalität (in %) x Qualität (in %) x 80. Die maximal erreichbare Punktzahl ist also 80 (die restlichen 20 Punkte gab es ja bereits für Ü11). Hier ein paar Rechenbeispiele, die erläutern, wie das Bewertungsschema zu verstehen ist:
Beispiel 1: Wenn Ihr Programm alle Funktionalitäten erfüllt und auch die Qualität perfekt ist, erhalten Sie 100 Prozentpunkte für die Funktionalität und 100 Prozentpunkte für die Qualität. Das ergibt eine Gesamtpunktzahl von 100% x 100% x 80 = 80.
Beispiel 2: Wenn Ihr Programm alle Funktionalitäten erfüllt, aber die Qualität nur zur Hälfte in Ordnung ist, erhalten Sie 100 Prozentpunkte für die Funktionalität und 50 Prozentpunkte für die Qualität. Das ergibt eine Gesamtpunktzahl von 100% x 50% x 80 = 40.
Wenn Ihr Programm nur ¾ der Funktionalitäten erfüllt und 90% des Drumherums in Ordnung ist, ergibt das eine Punktzahl von 60 * 90% = 54.
Gleitkommazahlen werden zur nächsthöheren Ganzzahl aufgerundet.
Bewertung der Funktionalität
Für die Funktionalität Ihres Programms bekommen Sie maximal 80 Punkte. Im Folgenden ist zuerst das Punktevergabeschema für Projekt 1 und danach das Punktevergabeschema für Projekt 2 erläutert.
Projekt 1 (80 Punkte)
- Spiellogik (25 Punkte)
- Korrekte Implementierung der Bewegungen (inkl. der genannten Spezialfälle): 20P (5P pro Richtung)
- Korrektes Hinzufügen der zufälligen Kacheln zu Beginn des Spiels und nach jedem Zug: 5P - Bedienung über Pfeiltasten (6 Punkte)
- Korrektes Verhalten nach Drücken der Pfeiltasten: 4P (1P pro Pfeiltaste)
- Korrektes Verhalten nach Drücken von "ESC": 1P
- Korrektes Verhalten nach Drücken von "n": 1P - Aktuelle Punktzahl (5 Punkte)
- Korrekte Berechnung: 3P
- Anzeige: 2P - Anzahl Züge (4 Punkte)
- Korrekte Berechnung: 2P
- Anzeige: 2P - Spiel gewonnen (4 Punkte)
- Korrekte Berechnung: 2P
- Anzeige: 2P
- Wenn Spiel nicht weiter spielbar ist: -1P - Spiel verloren (4 Punkte)
- Korrekte Berechnung: 2P
- Anzeige: 2P - Undo Funktion (12 Punkte)
- Wenn Undo nur mit festem (hartgecodetem) Wert funktioniert:
-
- Logik: 1P
- Wenn Undo mit variablem Wert funktioniert: - -
Die Punktzahl ergibt sich aus dem in den Projektspezifikationen beschriebenen Punkteschema (pro Instanz des Benchmarks
Die Qualität des Drumherums bewerten wir mit einem Faktor zwischen 30% und 100%. Im Folgenden erläutern wir, wie wir diesen Faktor berechnen. Die angegebenen Prozentzahlen sind additiv zu verstehen. Wenn Sie zum Beispiel nur Tests geschrieben haben, und die perfekt sind, bekommen Sie einen Faktor von 60%.
- -
- Jede Funktion muss dokumentiert sein. - Checkstyle muss fehlerfrei durchlaufen - Wenn ein Teil des Codes für sich alleine umfangreich genug ist oder mehrfach benötigt wird, muss er in einer geeigneten Funktion stehen. -
Einlesen des Parameters von Kommandozeile: 3P
- Korrekte Behandlung Tastendruck: 1P
- Logik: 8P
- Quadratische Kacheln: 3P
- Abstand der Kacheln zueinander: 3P
- Anzeige Wert einer Kachel: 2P
- Geeignete Größe der Kacheln: 2P
- Konsistentes Erscheinungsbild im gesamten Spielverlauf: 2P
Projekt 2 (80 Punkte)
Bewertung des "Drumherums"
Fix (30%)
Tests (30%)
Als trivial gelten nur ganz einfache Funktionen wie getter und setter. Doku, Code Style, Modularität, Codequalität (20%)
Kein unnötiger Hardcode
- Zu jedem Stück Code, dessen Funktionsweise sich nicht unmittelbar durch Lesen des Codes ergibt, muss es einen Kommentar geben.
- Punkte entsprechend dem Anteil der Dokumentation, die in Ordnung ist.
- Der Code muss abgesehen davon auch gut lesbar sein, insbesondere korrekt eingerückt sein.
- Punkte entsprechend der Menge an Fehlern: pro Fehler 10% Abzug (relativ zu den 30%; max. 100% Abzug).
- Der Code für die Logik und die Grafik muss logisch voneinander getrennt sein.
- Punkte entsprechend dem Anteil des Codes, der in Ordnung ist.
- Verwendung sinnvoller Typen
- Korrekte Verwendung von Zeigern/Referenzen statt Objekten
- Punkte entsprechend der Menge an Fehlern: pro Fehler 10% Abzug (relativ zu den 20%; max. 100% Abzug). Const, public/private/protected, valgrind (20%)