All posts by Lennert Raesch

Programming Methodologies, WS1314

Vor der Vorlesung kam soeben folgende Frage auf:

  • “Wieso ist die ausgegebene Anzahl an Groups auf dem klassischen Weg unterschiedlich zur Anzahl an Groups per SDMLib?”

Dies trifft im Speziellen zu, wenn die Groups per Hochzählen einer Variablen gezählt werden. Die Objektstruktur enthält tatsächlich, wie auch im Datenmodell vorgesehen, Gruppen mit mehreren Spielern. Dies ist per Definition des Models zulässig. Da wir eure Lösung auch auf anderen als der gegebenen Objekstruktur testen, müsst ihr diesen Fall ebenfalls einbeziehen und abdecken. Eine Gruppe, die zwei Spieler beinhaltet, darf nicht doppelt gezählt werden. Passt bitte ggf. euren Code an, da es sonst zu Punktabzug kommen kann. Die von SDMLib ausgegebene Gruppenobjektanzahl ist korrekt.

  • Wie ist die Aufgabe “Wenn Spieler und Gegner gleich stark sind, gewinnen die Spieler (global) das Spiel (boolean Ausgabe)?” zu verstehen?

Ihr könnt euch gerne eigene Algorithmen ausdenken, wenn ihr sie in der Ausgabe erläutert. Gedacht war die Aufgabe so, dass falls Spieler und Gegner kontinuierlich gleich viele Hitpoints verlieren, wer steht dann am Ende noch auf den Beinen?

  • Gibt es ein aktualisiertes GitHub Repository

Das Repository wurde auf den Stand von dem Repository von Prof. Zündorf aktualisiert:

https://github.com/digitalhoax/SDMLib

Programming Methodologies, WS1314

Die nächste Übung findet, wie gewohnt, am Tag nach der Abgabe der letzten Hausaufgabe statt, also am 17.01.2014 statt.

Wir wurden auf zwei Fehler in der aktuellen Quoridor-Implementierung aufmerksam gemacht. Der Test, ob eine Wall gebaut werden darf (Klasse Player, Methode buildWall), ist nicht korrekt implementiert.

Ebenso werden die Zielfelder nicht korrekt gesetzt, hier liegt der Fehler im Datenmodell.

Programming Methodologies, WS1314

Zusätzlich zu den Hinweisen im Beitrag weiter unten, hier noch ein wichtiger Hinweis für alle, bei denen die Bindings nicht funktionieren:

Es gab Seitens SDMLib ein Problem bei der Implementierung der Bindings, welches dazu führen kann, dass die Setter-Methoden nicht korrekt gerufen werden können. Wir haben das Problem in der aktuellen SDMLib-Version behoben. Kam es bei euch im Projekt zu nicht nachvollziehbaren Problemen bei den Bindings, ladet euch bitte die aktuellste Version von GitHub.

Programming Methodologies, WS1314

Hier das in der Übung implementierte Beispiel.


ClassModel model = new ClassModel("de.uniks.pm.battleship");

// Method checkWinnerMethod = new Method()
// .withSignature("checkWinner")
// .withReturnType("void");
//
Clazz battleship = model.createClazz("Battleship")
;//.withMethods(checkWinnerMethod);

Clazz field = model.createClazz("Field")
.withAttribute("x", "int")
.withAttribute("y", "int");

Clazz ship = model.createClazz("Ship")
.withAttribute("size", "int");

// Method fireMethod = new Method()
// .withSignature("fire(Field field)")
// .withReturnType("boolean");

Clazz player = model.createClazz("Player")
.withAttribute("turn", "boolean")
.withAttribute("name", "String")
;//.withMethods(fireMethod);

player.withAssoc(ship, "ship", R.MANY, "owner", R.ONE);

player.withAssoc(battleship, "battleshipGame", R.ONE, "player", R.MANY);

player.withAssoc(battleship, "wonGame", R.ONE, "winner", R.ONE);

player.withAssoc(field, "shotField", R.MANY, "player", R.MANY);

ship.withAssoc(field, "fields", R.MANY, "ships", R.MANY);

field.withAssoc(battleship, "battleshipGame", R.ONE, "field", R.MANY);

model.generate("genSrc");

Programming Methodologies, WS1314

Da die Frage nach den für die Vorlesung gültigen Spielregeln aufkam, hier ein Auszug aus den offiziellen deutschen Regeln von Quoridor.

Es kann zum Zwecke der Vereinfachung zu Änderungen der Regeln kommen, diese werden dann explizit an der jeweiligen Stelle erwähnt. Soweit nicht anders beschrieben gelten die folgenden Regeln.

Photo 1 (2) Photo 2