Category Archives: WS0910
This homework continues the Xtext exercise from homework #10. This time, you have to generate Java code from EngineeringC code. Add this example model to your EngineeringC project:
EngineeringCDiagram diag {
ECBlockDecl test {
ECStore x {
value : "0"
}
ECStore y {
value : "7"
}
ECComputeBlock comp1 {
expression : "x = 6 * y"
}
}
ECBlockDecl callTest {
ECStore z {
value : "0"
}
ECBlockAppl callTest {
instanceof : test
}
ECComputeBlock comp2 {
expression : "z = x + 42"
}
}
}
(Remember to first modify your grammar before creating a code generation template!)
The generated Java code should calculate the correct result for all ECComputeBlocks. To ensure this, create a JUnit test in the same package as the generated class. Call the generated methods from the test and ensure that the expected values are computed. To make cross-block variable access possible, you have to modify the Xpand template so that these variables are accessible from the generated methods.
Xtext Workflow from the lecture:
<workflow>
<property file="workflow.properties"/>
<component class="org.eclipse.xtext.MweReader" uri="${modelFile}">
<register class="de.unikassel.se.compilerbau.ECStandaloneSetup"/>
</component>
<component id="generator" class="org.eclipse.xpand2.Generator">
<metaModel id="mm" class="org.eclipse.xtend.typesystem.emf.EmfMetaModel">
<metaModelPackage value="de.unikassel.se.compilerbau.eC.ECPackage"/>
</metaModel>
<expand value="GenerateEC::Root FOR model"/>
<outlet path="${srcGenPath}/">
<postprocessor class="org.eclipse.xpand2.output.JavaBeautifier"/>
</outlet>
</component>
</workflow>
Helpful links:
Please follow the instructions given in the lecture to complete the assignment.
* Download/install Xtext, preferably using a complete Eclipse distribution from http://xtext.itemis.com/xtext/language=en/23947/downloads
* Create a new workspace and a new Xtext project
* Write a grammar corresponding to the simplified EngineeringC model shown in the lecture
* Run the generated workflow and test the parser with some EngineeringC diagrams
To hand in your homework, ZIP the Eclipse workspace which contains the Xtext project and upload the ZIP file to your CVS repository. Deadline is Friday, Feb. 5th.
Ab Release 3 (ab 25.01.2010 00:01 uhr)wird ein neuer Server laufen auf dem einige Änderungen getroffen wurden.
1. Zerfall von unbesetzten Gebäuden. Jedes Gebäude (außer dorfzentrum,rathausplatz,friedhod und manatopf) in dem sich kein Arbeiter befindet zerfällt pro Produktionszyklus um 1. Sobald ein Gebäude 10 mal unbesetzt war wird bricht es in sich zusammen (es wird gelöscht).
2.Score und Achievements . Es gibt nun einen liveScore auf der Serverstatusseite dieser Errechnet sich aus Achievements und der Anzahl der eingenommen Städte. Achievements werden vom Server nun über das Protokoll heraus geschrieben.(Weitere Informationen zu Achievements folgen diese Woche)
3.Chat. Es wurde ein Chat ins Protokoll eingebaut der an alle Spielertypen gesendet wird
4.Neue Zauber/Wunder freischaltung von Effeckten und Änderungen am ZauberProtokoll wurden vorgenommen. Siehe Spielbeschreibung.
5.Änderungen am alten Protokoll.Änderungen am alten Protokoll sind nachzulesen im Protokollbeitrag.
Light and Shadow
Auf SE-Island leben die Programmierer ein friedliches Leben. Sie bestellen das Land und gehen fischen um sich mit dem Nötigsten zu versorgen. Und wenn es mal etwas zu bauen gibt wissen sie auch mit Holz und Steinen umzugehen. Aber die Götter sind gelangweilt von all der Harmonie und fassen den Entschluss einen Wettkampf unter den Programmierern zu veranstalten. Nachdem sie neue Programmiersprachen mit allerlei Firlefanz erschaffen hatten um unter den Programmierern einen Wettbewerb auzulösen stürzten sich die Programmierer mit Freuden auf die neuen Möglichkeiten. Allerdings schlugen Neugier und Freude schnell in blinden Glauben und Fanatismus um, der schließlich auch die Götter erfasste. Sie zersplitterten in kleine Gruppen die einer Programmiersprache huldigten als sei sie eine Religion und versuchen seither die Schar ihrer Gläubigen auf ganz SE-Island zu vergrößern.
Das Land
In der Welt von SE-Island gibt es zehn Hauptstädte und zehn Dörfer, von denen jeweils zwei in der Nähe einer Hauptstadt liegen. Die Küsten sind reich an Fisch und die Äcker warten nur darauf bestellt zu werden. Holz und Stein finden sich ebenso reichhaltig, allerdings ist der Tiefere Wald bisher verschlossen geblieben.
Rot = Hauptstädte, Schwarz = Dörfer, Weiß = SE-Hauptstädte
Die Programmierer
Jeder Programmierer kann in jedem der verfügbaren Gebäude mitarbeiten und so indirekt zur Blüte seiner Religion beitragen. Wenn er auf den Rathausplatz eines andersgläubigen Dorfes geschickt wird, wird er zum Missionar um direkt die Bewohner des Dorfes vom Glauben an seine – die wahre – Programmiersprache zu überzeugen. Jeder Programmierer beginnt sein Leben im Stadtzentrum oder Wohnhaus und kann nur durch eine Hungersnot verenden.
Die Religion / Programmiersprache
Jede Siedlung glaubt an genau eine Religion, die ihr Verhalten bestimmt und der auch das gewonnene Mana zugute kommet. Welchen Geboten die Gläubigen nacheifern geben die Götter (in Form von Javaquellcode für eine KI) durch die Religion vor.
Die Siedlungen
Zu jeder Siedlung gehören neben dem Stadtzentrum ein Rathausplatz, auf dem sich die Programmierer versammeln, ein Friedhof und alle sich in der Nähe befindenden Gebäude. Welche Gebäude die Bewohner errichten richtet sich nach ihrem Glauben (also der KI). Die Hauptstädte der Religionen sind Hochburgen fanatischen Glaubens und können nicht bekehrt werden. Dörfer hingegen können durch das Entsenden von Missionaren bekehrt werden. Sobald ein Dorf bekehrt wird, also eine kritische Masse an Glauben erzeugt wurde, verfallen alle Programmierer dem Hype: das Dorf und alle Arbeiter wechseln komplett zur neuen Programmiersprache.
Die Gebäude
Um Ressourcen abzubauen müssen Gebäude gebaut werden, die mit steigender Anzahl an Arbeitern auch entsprechend produktiver werden. Je weiter sie vom Dorfzentrum entfernt sind, desto langsamer ist die Produktion.
Die Ressourcen
Bevor Ressourcen abgebaut werden können muss erst ein Entsprechendes Produktionsgebäude errichtet werden. Die wenigsten Gebäude kommen ohne Versorgung mit anderen Ressourcen aus.
Die Götter
Die Götter können direkt auf die Spielwelt Einfluss nehmen, indem sie Wunder wirken und so ihren Gläubigen im richtigen Moment Vorteile verschaffen, oder Andersgläubigen benachteiligen. Jedes Wunder zeugt auch von der Wirkenskraft einer Religion und bewirkt einen kleinen Glaubenszuwachs in der betroffenen Region. Sie versuchen durch ihr aktives (Missionieren / Unterstützen durch Wunder) und passives (Steuerung der Gläubigen durch eine KI) Wirken ihren Glauben – die einzig wahre Programmiersprache – zu verbreiten und die Zahl ihrer Programmierer zu vermehren. Durch ihr Wirken können die Götter Trophäen erhalten (die zwar nicht mit in die Notengebung mit einfließen, aber zeigen wie gut sich die Götter schlagen).
Spielmechanik
- Die 5 Anfangsarbeiter können nicht sterben
- Siedlungen: 6 Hauptstädte, 14 Dörfer, 3 SE-Städte
- Stadteinzugsgebiet: je Feld Entfernung zum Stadtzentrum 10% längere Produktionszeit
- Hauptstädte können nicht übernommen werden
- Arbeiter Sterben wenn zu wenig Nahrung in ihrer Heimatsiedlung vorhanden ist (1:1 Verhältnis)
- In Wohnhäusern gebohrene Arbeiter gehen auf den Rathausplatz
- Der Rathausplatz ist ein Feld neben dem Dorfzentrum
- Die Götter teilen sich das Mana ihrer Religion / Programmiersprache
- Arbeiter bewegen sich ein Feld pro Sekunde, kommen aber erst nach der Produktion an
- Arbeiter die auf einem Rathausplatz stehen verbreiten dort den Glauben ihrer Heimatsiedlung.
- Arbeiter gehören ihr leben Lang zu der Siedlung in der sie gebohren wurden.
Produktionsgebäude:
Gebäude | Kosten | Anzahl Zeiteinheiten für den Bau |
Verbrauch : Produktion / je Arbeiter |
Anzahl Arbeiter |
Anzahl Zeiteinheiten pro Produktionszyklus |
ID |
Holzfäller | 50 Nahrung | 400 | 0 : 1 Holz | 8 | 300 | 3 |
Fischerhütte | 40 Holz | 250 | 0 : 2 Nahrung | 5 | 200 | 2 |
Farm | 120 Holz + 30 Nahrung | 800 | 1 Holz : 5 Nahrung | 10 | 200 | 4 |
Steinbruch | 100 Nahrung + 80 Holz | 1500 | 4 Nahrung + 2 Holz : 1 Stein | 15 | 1000 | 5 |
Tempel | 200 Stein + 250 Holz | 10000 | 10 Nahrung : 25 Glauben | 50 | 2000 | 6 |
Wohnhaus (klein) |
200 Holz | 500 | 20 Nahrung : 1 Arbeiter | 6 | 10000 | 8 |
Wohnhaus (mittel) | 1000 Holz + 500 Stein | 1000 | 20 Nahrung : 1 Arbeiter | 6 | 5000 | 9 |
Wohnhaus (gross) | 4000 Holz + 2500 Stein | 2000 | 20 Nahrung : 1 Arbeiter | 6 | 1000 | 10 |
Blauer Topf der blubbert | 700 Stein + 1100 Holz + 2000 Nahrung | 500 | 1 Arbeiter : 500 Mana | 25 | 700 | 7 |
Stadtzentrum | not buildable | 0 : 1 Nahrung + 10 Mana | 5 | 500 | 1 | |
Rathaus | not buildable | 0 : 1 Glaube pro Owner das Arbeiters | unendlich | 400 | 100 | |
Friedhof | not buildable | -1 Nahrung x Arbeiter der Stadt *** | 400 | 666 |
*** Wenn keine Nahrung für Arbeiter vorhanden ist, wird pro fehlende Nahrung ein ZUFÄLLIGER Arbeiter der Stadt getötet!!!
Anfangssituation
1 Hauptstadt mit Rathausplatz, Friedhof und 5 Arbeitern in der Hauptstadt
ES GIBT KEINE STARTRESOURCEN!!!
Die Wunder
Wunder | Effekt | Dauer | Kosten | Aufladbar | Zauber ID | Effekt ID |
Nahrungswunder | + 1 Nahrung | Instant | 60 Mana | ja | 1 | |
Ausräuchern | 1 Produktionsfeld wird geräumt. Arbeiter werden zum Rathaus geschickt. 3 Produktionszyklen keine Produktion möglich | 3 Produktionszyklen | 15000 Mana | nein | 2 | 7 |
Meteorit | Zerstört alle Gebäude und Arbeiter im Umkreis von 2 Feldern. Ausnahme sind Dorfplatz, Rathaus, Friedhof! | Instant | 3000000 Mana | nein | 3 | |
Arbeiter aus Übersee | + 1 Arbeiter auf dem Rathausplatz | Instant | 5000 Mana | ja | 4 | |
Eiszeit | Zeit für die Bewegung aller Arbeiter des Dorfes *100 | 6 std | 1000000 Mana | nein | 5 | 9 |
Wirbelsturm | Arbeiter können das Produktionsgebäude (+ Umkeis von 3 Felden) nicht verlassen/betreten. | 6 std | 5000000 Mana | nein | 6 | 10 |
Schutzschild | Schützt vor allen Zaubern ab Anwendung (+ Umkreis von 5 Feldern) | 0,5 std | 300000 Mana | nein | 7 | 11 |
Die Trophäen
Bedingung | Titel |
Die meisten Arbeiter | Brüter |
Am meisten Holz produziert | |
Am meisten Nahrung produziert | |
Am meisten Stein produziert | |
Am meisten Mana produziert | |
Am meisten Arbeiter produziert | |
Am meisten Glauben produziert | |
Am meisten Zauer gesprochen | |
Am meisten Städte bekehrt | |
100000 Holz produziert | Holzwurm I |
200000 Holz produziert | Holzwurm II |
300000 Holz produziert | Holzwurm III |
500000 Holz produziert | Holzwurm IV |
800000 Holz produziert | Holzwurm V |
1300000 Holz produziert | Holzwurm VI |
2100000 Holz produziert | Holzwurm VII |
3400000 Holz produziert | Holzwurm VIII |
5500000 Holz produziert | Holzwurm IX |
8900000 Holz produziert | Holzwurm X |
1000000 Nahrung produziert | Hamster I |
2000000 Nahrung produziert | Hamster II |
3000000 Nahrung produziert | Hamster III |
5000000 Nahrung produziert | Hamster IV |
8000000 Nahrung produziert | Hamster V |
13000000 Nahrung produziert | Hamster VI |
21000000 Nahrung produziert | Hamster VII |
34000000 Nahrung produziert | Hamster VIII |
55000000 Nahrung produziert | Hamster IX |
89000000 Nahrung produziert | Hamster X |
1000 Stein produziert | Bomberman I |
2000 Stein produziert | Bomberman II |
3000 Stein produziert | Bomberman III |
5000 Stein produziert | Bomberman IV |
8000 Stein produziert | Bomberman V |
13000 Stein produziert | Bomberman VI |
21000 Stein produziert | Bomberman VII |
34000 Stein produziert | Bomberman VIII |
55000 Stein produziert | Bomberman IX |
89000 Stein produziert | Bomberman X |
1000000 Mana produziert | Kanalisierer I |
2000000 Mana produziert | Kanalisierer II |
3000000 Mana produziert | Kanalisierer III |
5000000 Mana produziert | Kanalisierer IV |
8000000 Mana produziert | Kanalisierer V |
13000000 Mana produziert | Kanalisierer VI |
21000000 Mana produziert | Kanalisierer VII |
34000000 Mana produziert | Kanalisierer VIII |
55000000 Mana produziert | Kanalisierer IX |
89000000 Mana produziert | Kanalisierer X |
1000 Glauben produziert | Die reine Lehre I |
2000 Glauben produziert | Die reine Lehre II |
3000 Glauben produziert | Die reine Lehre III |
5000 Glauben produziert | Die reine Lehre IV |
8000 Glauben produziert | Die reine Lehre V |
13000 Glauben produziert | Die reine Lehre VI |
21000 Glauben produziert | Die reine Lehre VII |
34000 Glauben produziert | Die reine Lehre VIII |
55000 Glauben produziert | Die reine Lehre IX |
89000 Glauben produziert | Die reine Lehre X |
1 Siedlung übernommen | Bekehrer I |
2 Siedlungen übernommen | Bekehrer II |
3 Siedlungen übernommen | Bekehrer III |
5 Siedlungen übernommen | Bekehrer IV |
8 Siedlungen übernommen | Bekehrer V |
13 Siedlungen übernommen | Bekehrer VI |
21 Siedlungen übernommen | Bekehrer VII |
34 Siedlungen übernommen | Bekehrer VIII |
55 Siedlungen übernommen | Bekehrer IX |
89 Siedlungen übernommen | Bekehrer X |
10 Zauber gesprochen | Gandalf I |
20 Zauber gesprochen | Gandalf II |
30 Zauber gesprochen | Gandalf III |
50 Zauber gesprochen | Gandalf IV |
80 Zauber gesprochen | Gandalf V |
130 Zauber gesprochen | Gandalf VI |
210 Zauber gesprochen | Gandalf VII |
340 Zauber gesprochen | Gandalf VIII |
550 Zauber gesprochen | Gandalf IX |
890 Zauber gesprochen | Gandalf X |
This homework is available as PDF, so you can easily print it. It’s written in German, so if you have problems understanding it, please contact me for an English version.
Update: Updated PDF!