Size: 52
Comment:
|
Size: 4525
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
Test | = Bewertungsschema = Sie können für das Projekt maximal 80 Punkte erreichen (die restlichen 20 Punkte gab es bereits für Ü11). Die Berechnung Ihrer Punktzahl erfolgt in zwei Schritten. Im ersten Schritt wird die Funktionalität Ihres Programms bewertet. Sie erhalten hierfür maximal 80 Punkte. Das zugrundeliegende Bewertungsschema für diesen Schritt ist weiter unten ("Bewertung der Funktionalität") erläutert. Im zweiten Schritt wird das "Drumherum" (Tests, Style, valgrind, etc.) bewertet. Sie erhalten hierfür eine ''prozentuale'' Punktzahl, die mit der Punktzahl aus dem ersten Schritt ''multipliziert'' wird. Das Bewertungsschema für diesen Schritt ist ebenfalls weiter unten ("Bewertung des Drumherums") erläutert. ''Beispiele: '' (1) Wenn Ihr Programm alle Anforderungen erfüllt und das Drumherum auch perfekt ist, erhalten Sie: '''80 * 100% = 80 Punkte'''. <<BR>> (2) Wenn Ihr Programm alle Anforderungen erfüllt und das Drumherum nur zur Hälfte in Ordnung ist, erhalten Sie: '''80 * 50% = 40 Punkte'''. <<BR>> (3) Wenn Ihr Programm nur ¾ der Anforderungen und 90% des Drumherums erfüllt, erhalten Sie '''60 * 90% = 54 Punkte'''. Gleitkommazahlen werden zur nächsthöheren Ganzzahl aufgerundet. Die maximal erreichbare Punktzahl ist 80 Punkte (die restlichen 20 Punkte gab es bereits für Ü11). == Bewertung der Funktionalität == === Projekt 1 (80 Punkte) === * Spiellogik (25 Punkte) - ''Korrekte Implementierung der Bewegungen (insbesondere der genannten Spezialfälle):'' 20P (5P pro Richtung) <<BR>> - ''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) <<BR>> - ''Korrektes Verhalten nach Drücken von "ESC":'' 1P <<BR>> - ''Korrektes Verhalten nach Drücken von "n":'' 1P * Punktzahl (4 Punkte) - ''Berechnung:'' 2P <<BR>> - ''Anzeige:'' 2P * Anzahl Züge (4 Punkte) - ''Berechnung:'' 2P <<BR>> - ''Anzeige:'' 2P * Spiel gewonnen (4 Punkte) - ''Berechnung:'' 2P <<BR>> - ''Anzeige:'' 2P * Spiel verloren (4 Punkte) - ''Berechnung:'' 2P <<BR>> - ''Anzeige:'' 2P * Undo Funktion (10 Punkte) * Grafik (20 Punkte) - ''Quadratische Kacheln'': 4P <<BR>> - ''Farbliche Markierung der Kacheln (mit unterschiedlichen Farben pro Wert):'' 4P <<BR>> - ''Anzeige Wert einer Kachel:'' 4P <<BR>> - ''Abstand der Kacheln zueinander:'' 4P <<BR>> - ''Geeignete Größe der Kacheln'': 2P <<BR>> - ''Konsistentes Erscheinungsbild im gesamten Spielverlauf:'' 2P <<BR>> === Projekt 2 (80 Punkte) === Die Maximalpunktzahl bei ''Projekt 2'' ergibt sich aus dem in den [[https://ad-wiki.informatik.uni-freiburg.de/teaching/ProgrammierenCplusplusSS2020/Projekt|Projektspezifikationen]] beschriebenen Punkteschema (pro Instanz des Benchmarks ''"größte Kachel / 2048"'' Punkte). Die insgesamt erreichte Punktzahl wird Ihnen nach einem Durchlauf des Benchmarks unten links (in der letzten Zeile) angezeigt. ''Anmerkung'': Die maximal erreichbare Punktzahl beträgt 80. Wenn Sie eine Punktzahl > 80 erreichen, bekommen Sie trotzdem nur 80 Punkte. == Bewertung des "Drumherums" == === Fixer Anteil (30%) === === Tests (30%) === * Es muss für jede nicht-triviale Funktion einen einzelnen Test geben. - ''Als trivial gelten nur ganz einfache Funktionen wie getter und setter.'' * Jeder Test muss mindestens einen Normalfall und einen Spezialfall (falls es einen gibt) testen. - ''Als Spezialfall gelten solche Fälle, die in der Praxis nur selten auftreten (aber trotzdem auftreten können). Beispiele für Spezialfälle bezogen auf 2048: (1) Benutzer drückt undefinierte Taste (z.B. F7); (2) Benutzer möchte einen Zug ausführen, der nicht möglich ist; (3) Beim Hinzufügen einer zufälligen Kachel ist das Feld bereits voll (es ist also kein Platz mehr für die Kachel).'' * TODO: Insgesamt Punkte entsprechend dem Anteil der Tests, die entsprechend der oben genannten Anforderungen in Ordnung sind. - TODO: Beispiele: Wenn 50% der Tests in Ordnung, dann 15 %. === Doku, Style, Modularität, Codequalität (20%) === * Doku (30%) * Style (30%) * Modularität (20%) * Codequalität (20%) === Const, public/private/protected, valgrind (20%) === * Const-correctness * Sinnvolle Einteilung in public/private/protected * Speicherlecks, valgrind |
Bewertungsschema
Sie können für das Projekt maximal 80 Punkte erreichen (die restlichen 20 Punkte gab es bereits für Ü11). Die Berechnung Ihrer Punktzahl erfolgt in zwei Schritten. Im ersten Schritt wird die Funktionalität Ihres Programms bewertet. Sie erhalten hierfür maximal 80 Punkte. Das zugrundeliegende Bewertungsschema für diesen Schritt ist weiter unten ("Bewertung der Funktionalität") erläutert. Im zweiten Schritt wird das "Drumherum" (Tests, Style, valgrind, etc.) bewertet. Sie erhalten hierfür eine prozentuale Punktzahl, die mit der Punktzahl aus dem ersten Schritt multipliziert wird. Das Bewertungsschema für diesen Schritt ist ebenfalls weiter unten ("Bewertung des Drumherums") erläutert.
Beispiele:
(1) Wenn Ihr Programm alle Anforderungen erfüllt und das Drumherum auch perfekt ist, erhalten Sie: 80 * 100% = 80 Punkte.
(2) Wenn Ihr Programm alle Anforderungen erfüllt und das Drumherum nur zur Hälfte in Ordnung ist, erhalten Sie: 80 * 50% = 40 Punkte.
(3) Wenn Ihr Programm nur ¾ der Anforderungen und 90% des Drumherums erfüllt, erhalten Sie 60 * 90% = 54 Punkte.
Gleitkommazahlen werden zur nächsthöheren Ganzzahl aufgerundet. Die maximal erreichbare Punktzahl ist 80 Punkte (die restlichen 20 Punkte gab es bereits für Ü11).
Bewertung der Funktionalität
Projekt 1 (80 Punkte)
- Spiellogik (25 Punkte)
- Korrekte Implementierung der Bewegungen (insbesondere 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
- Punktzahl (4 Punkte)
- Berechnung: 2P
- Anzeige: 2P
- Anzahl Züge (4 Punkte)
- Berechnung: 2P
- Anzeige: 2P
- Spiel gewonnen (4 Punkte)
- Berechnung: 2P
- Anzeige: 2P
- Spiel verloren (4 Punkte)
- Berechnung: 2P
- Anzeige: 2P
- Undo Funktion (10 Punkte)
- Grafik (20 Punkte)
- Quadratische Kacheln: 4P
- Farbliche Markierung der Kacheln (mit unterschiedlichen Farben pro Wert): 4P
- Anzeige Wert einer Kachel: 4P
- Abstand der Kacheln zueinander: 4P
- Geeignete Größe der Kacheln: 2P
- Konsistentes Erscheinungsbild im gesamten Spielverlauf: 2P
Projekt 2 (80 Punkte)
Die Maximalpunktzahl bei Projekt 2 ergibt sich aus dem in den Projektspezifikationen beschriebenen Punkteschema (pro Instanz des Benchmarks "größte Kachel / 2048" Punkte). Die insgesamt erreichte Punktzahl wird Ihnen nach einem Durchlauf des Benchmarks unten links (in der letzten Zeile) angezeigt. Anmerkung: Die maximal erreichbare Punktzahl beträgt 80. Wenn Sie eine Punktzahl > 80 erreichen, bekommen Sie trotzdem nur 80 Punkte.
Bewertung des "Drumherums"
Fixer Anteil (30%)
Tests (30%)
- Es muss für jede nicht-triviale Funktion einen einzelnen Test geben.
- Als trivial gelten nur ganz einfache Funktionen wie getter und setter.
- Jeder Test muss mindestens einen Normalfall und einen Spezialfall (falls es einen gibt) testen.
- Als Spezialfall gelten solche Fälle, die in der Praxis nur selten auftreten (aber trotzdem auftreten können). Beispiele für Spezialfälle bezogen auf 2048: (1) Benutzer drückt undefinierte Taste (z.B. F7); (2) Benutzer möchte einen Zug ausführen, der nicht möglich ist; (3) Beim Hinzufügen einer zufälligen Kachel ist das Feld bereits voll (es ist also kein Platz mehr für die Kachel).
- TODO: Insgesamt Punkte entsprechend dem Anteil der Tests, die entsprechend der oben genannten Anforderungen in Ordnung sind.
- - TODO: Beispiele: Wenn 50% der Tests in Ordnung, dann 15 %.
Doku, Style, Modularität, Codequalität (20%)
- Doku (30%)
- Style (30%)
- Modularität (20%)
- Codequalität (20%)
Const, public/private/protected, valgrind (20%)
- Const-correctness
- Sinnvolle Einteilung in public/private/protected
- Speicherlecks, valgrind