Kurzanleitung

Was ist »MJ2000«?

Systemanforderungen

Das Spiel

Bedienung

Technik, Technik, Technik …

Autorenkontakt / Disclaimer

Versionsgeschichte

Was ist »MJ2000«?


MJ2000 ist eigentlich nichts weiter als eines dieser knapp 1000 Freeware-Mahjongg-Spiele.

[Ich höre Enttäuschung?]

Na gut, ein bißchen mehr ist da schon. Zunächst einmal ist es ein eher unscheinbares, kleines Programm, kein Riesen-Monster wie andere Vertreter seiner Zunft — also ideal für »die kleine Runde zwischendurch«. Das bedeutet aber nicht, daß auf Dinge wie TrueColor-Grafik und eine Highscore-Liste verzichtet werden muß.

Ein (meiner Ansicht nach) eher seltenes Feature ist das unbegrente Undo und Redo. So kann man das gesamte Spiel noch einmal Revue passieren lassen. Oder nach dem Fehler suchen, wenn man kurz vorm Scheitern steht. Außerdem kann man Spielstände speichern, aber das mal nur am Rande.

Systemanforderungen


Auf jedem Fall benötigt man ein Windows98-System, und zwar ein möglichst schnelles (300 MHz oder so); nicht, weil Mahjongg so ein grafisch aufwendiges Spiel wäre, sondern weil es die Windows-Grafikfunktionen für gewöhnlich etwas ruhiger angehen lassen. RAM-technisch dürfte es auch kaum Probleme geben, und wer nur über das Minimum von 16 MB verfügt, hat sich in der täglichen Windows-Praxis ohnehin schon in Geduld geübt. Ach ja: Am besten sieht MJ2000 natürlich in einer angemessenen Farbtiefe (mindestens HiColor) aus.

Das Spiel


Was echte Kenner für ein Gerücht halten, gibt es in der Praxis wirklich: Menschen, die Mahjongg noch nicht kennen. Tja. Und diesen Menschen muß ich nun wohl oder übel das Spiel erklären.

Zunächst eine Warnung: In den seltensten Fällen schafft man es, nur eine Runde (ca. 3 bis 10 Minuten) zu spielen, denn Mahjongg hat einen nicht zu vernachlässigenden Suchtfaktor. Man kann es als als eine Art Moorhuhn-Zeitvertreib für Pazifisten sehen J.

 

Aber nun endlich mal Klartext: Mahjongg ist ein Spiel, welches aus Japan (oder war's China? Sorry für meine Unwissenheit) stammt. Dabei werden auf einem Spielbrett 144 bebilderte Spielsteine nach einem bestimmten Muster in mehreren Schichten angeordnet, und Ziel des Spielers ist, dieses Spielfeld peu à peu abzuräumen.

Dies geschieht immer paarweise: Man kann stets nur zwei Steine mit gleichem Bild entfernen. Und das auch nicht wahllos, denn: Es sind nur solche Steine entfernbar, die man nach links oder rechts wegziehen kann, ohne dabei andere Steine zu berühren. Klingt kompliziert? Aber nur in der Theorie. Wenn man es einmal selbst ausprobiert, hat man schnell den Dreh 'raus und man muß sich nicht mehr ums (ohnehin kleine) Regelwerk kümmern.

 

À propos Regelwerk: Ein paar Kleinigkeiten sollte man noch wissen. So gibt es auch Steine mit unterschiedlichen Bildern, die trotzdem untereinander kombinierbar sind. Um das mal zusammenzufassen:
Streng überprüft werden … • Die »Punkt«-Reihe: Ein Sternsymbol und Symbole mit 2 bis 9 Punkten.
• Die »Stab«-Reihe: Ein Vogel und 2 bis 9 Bambusstäbe.
• Die »Zahl«-Reihe: Die Zahlen 1 bis 9 in japanischen Schriftzeichen.
• Die Himmelsrichtungen (North, East, South, West).
• Die Drachen P, C und F.
Untereinander kombinierbar sind … • Die vier Jahreszeiten, repräsentiert durch Bäume.
• Vier Pflanzen: »Orchid«, »Mum«, »Plum« und »Bamboo«.

Alle Klarheiten beseitigt? Wieder einmal gilt: Keine Angst! Die Möglichkeiten, welche Steine miteinander »weggeklickt« werden können, lernt man beim Spielen schnell selbst.

Bedienung


MJ2000 gibt sich wie eine gewöhnliche Windows-Anwendung: Menüleiste, Buttonleiste, Arbeitsbereich (hier: Spielfeld), Statusleiste. Gleich nach dem Start wird das Titelbild eingeblendet, und nach einem Mausklick darauf kann das Spiel beginnen.

 

Die Bedienung des Spiels selbst geht ganz simpel vonstatten: Per Mausklick auf einen Stein wird dieser ausgewählt und hervorgehoben. Klickt man danach auf einen weiteren Stein, so werden die beiden angeklickten Steine entfernt (wenn die Regeln es zulassen), oder der zuletzt angeklickte Stein gilt als ausgewählt. Unbewegliche Steine (solche, die sowohl links als auch rechts Nachbarn haben) können gar nicht erst angeklickt werden.

Weitaus interessanter sind da schon die Menüs und die Buttonleiste:

Neues Spiel · Muß wohl nicht näher erklärt werden.
Spiel laden · Lädt das zuletzt gespeicherte Spiel. Normalerweise ist dies die Datei »QuickSave.mj2k«.
Spiel speichern · Speichert das aktuelle Spiel unter dem aktuellen Dateinamen.
Hinweis · Unter deftiger Zeitstrafe (10 Sekunden) gibt das Programm hiermit einen Zugvorschlag. Wenn man gleich noch einmal auf den Knopf klickt, wird der vorgegebene Zug auch noch ausgeführt. Somit kann man den PC für sich spielen lassen; aber: Einen Highscore kriegt man damit nicht …
Undo · Macht den jeweils letzten Zug rückgängig. Das kann man so weit treiben, bis das Spielfeld wieder ganz voll ist.
Redo · Achtung, komplizierte Logik: Mit diesem Knopf kann man ein Undo rückgängig machen.
Pause · Schaltet in den Pausemodus, in dem das MJ2000-Titelbild angezeigt wird und die Zeit nicht weiterläuft. Praktisch, wenn der Kaffee gerade fertig geworden ist.
Hilfe · Zeigt diesen Text an.
Neues Spiel · Klarer Fall: Hiermit wird ein neues Spiel begonnen.
Spiel Laden … · Mit diesem Menüpunkt kann man einen Spielstand (*.mj2k) zum Laden auswählen. (Vorsicht! Unter diesem Dateinamen wird später auch gespeichert!)
Spiel Speichern · Dient zum schnellen Speichern des Spiels; entspricht dem gleichnamigen Knopf der Buttonleiste.
Spiel Speichern als … · Auch hier wird gespeichert, allerdings darf man sich vorher einen Dateinamen aussuchen.
Beenden · Beendet das Spiel sofort. Ohne Rückfrage. Gnadenlos.
Rückgängig · Entspricht der »Undo«-Funktion.
Wiederholen · Entspricht der »Redo«-Funktion.
Hinweis · Eine weitere Möglichkeit, einen Zugvorschlag vom Programm zu erhalten.
Pause · Entspricht der »Pause«-Funktion.
Unlösbare Spiele verhindern · Mit dieser Option kann man MJ2000 anweisen, nach Möglichkeit lösbare Spiele zu produzieren. Das klappt zwar nicht immer, läßt sich aber recht gut an.
Pixelformat · Eine Einstellung für Profis, die im Technik-Abschnitt dieser Datei näher beleuchtet wird. Im Zweifelsfalle nehme man die Voreinstellung »Automatisch/Optimal«.
Render-Zeiten anzeigen · Ist diese Option aktiviert, wird neben der Spielzeit auch die Zeit angezeigt, welche die »Grafikengine« benötigt, um ein Bild des Spielfeldes aufzubauen. Wer da einen zweistelligen Wert stehen hat, darf sich schon glücklich schätzen.
Neuzeichnen erzwingen · Auch eine technische Angelegenheit: Sollten alle Aktionen erst um ca. eine halbe Sekunde verzögert auf dem Schirm zu sehen sein, so hilft unter Umständen diese Option weiter.
Hilfe anzeigen · Zeigt diesen Hilfetext an.
Bestenliste zeigen … · Zeigt die Bestenliste (neudeutsch: Highscore-Liste) an. Dort darf man sich auch ggf. eintragen, wenn man ein Spiel siegreich beendet hat.
Info … · Entspricht dem Pausenmodus, mit dem Unterschied, daß hier ein paar About-Infos angegeben werden.

 

In der Statuszeile am unteren Ende des MJ2000-Fensters gibt das Programm zwei recht nützliche Informationen an: Links ist nämlich die Anzahl möglicher Züge aus der aktuellen Spielsituation heraus, und rechts findet sich die Zeitanzeige, denn die Zeit, die zum Erledigen eines Spiels gebraucht wird, dient als Punktzahl.

Technik, Technik, Technik …


Um die etwas befremdliche Geschichte mit dem »Pixelformat«-Menü zu erklären, muß ich etwas weiter ausholen: MJ2000 ist ja in Delphi 4.0 programmiert, und damit der Spieler nicht beim Aufbau des Spielfeldes zusehen kann (das wäre fatal, denn somit könnte man kurzzeitig die unter der Pyramide versteckten Steine erkennen), wird ein Back-Buffer verwendet. Dieser residiert in einem TBitmap-Objekt, in dem Hintergründe, Steine, Text usw. über die TCanvas-Methoden gezeichnet werden (allen voran Draw und CopyRect).

Lange Rede, kurzer Sinn: Schlußendlich übernimmt Windows die Grafikberechnung. Und da Windows in Sachen Farbtiefe ja superflexibel ist, kann es dabei in alle erdenklichen Pixelformate konvertieren. Doch: Wenn es dies 144mal pro Bild tun muß, sinkt die Geschwindigkeit ins Bodenlose. Aus diesem Grunde ist es ratsam, das Pixelformat zu verwenden, welches der Anzeigeeinheit (sprich: Grafikkarte) am liebsten ist, so daß sich Windows das ewige Hin- und Herkonvertieren sparen kann. Genau das geschieht im Pixelformat-Modus »Automatisch/Optimal«.

Alternativ bietet MJ2000 aber auch die gebräuchlichsten anderen Pixelformate an, auf manchen PCs der angeblich optimale Modus wider Erwarten doch langsamer ist als einer der folgenden:

TrueColor — 32 Bit und 24 Bit (16,7 Millionen Farben)
Diese Edelmodi bieten höchste Grafikqualität, sofern auch die Grafikkarte in einem solchen Modus läuft. Besonderes Schmankerl: Die Hervorhebung von Steinen geschieht nicht durch Invertierung, sondern durch eine ungleich schickere Aufhellung.
HiColor — 16 Bit (65536 Farben) und 15 Bit (32768 Farben)
Auch hier ist die Grafik farblich OK, allerdings sind die Hervorhebungen weniger schön. Auf den meisten Grafikkarten geht übrigens nur einer dieser beiden Modi richtig (meist 15 Bit).
Palette — 8 Bit (256 Farben) oder 4 Bit (16 Farben)
Im allerallergrößten Notfall läuft MJ2000 auch in diesen Farbtiefen, sieht dort aber unglaublich Sch… aus. Künstler können diesen Modi vielleicht noch etwas abgewinnen, denn gewisse expressionistische Nuancen sind der Grafik dann nicht abzusprechen.

 

Auch interessant sind die Geschwindigkeitsunterschiede zwischen ähnlichen Rechnern: Auf meinem Athlon/500 mit TNT2-M64-Grafikchip in TrueColor rendert MJ200 im Automatikmodus ein Bild in weniger als 30 Millisekunden; ein AMD K6-2/450 mit RIVA128-Chip in HiColor benötigt hingegen das Zehnfache. Keine Ahnung, woran das liegt.

Autorenkontakt / Disclaimer


Die Formalitäten zuerst: Dieses Programm ist Freeware. Das bedeutet, daß es nichts kostet und von jedermann frei vertrieben und kopiert werden darf, was auch den Vertrieb auf Cover-CDs von Zeitschriften einschließt. Kurzum: Jede Art der Vervielfältigung ist genehmigt, solange nicht für das Programm als Einzelprodukt ein (noch so geringer) Preis erhoben wird.

Keine Kosten bedeutet aber auch: Keine Garantien. Das Programm ist als Spiel konzipiert, und bei mir funktioniert es so weit ganz gut, aber wenn es mal verrückt spielen und evtl. Daten zerstören sollte, so bin ich dafür nicht haftbar zu machen. Ich kann mir zwar beim besten Willen nicht vorstellen, daß MJ2000 mehr als einen Bluescreen provozieren könnte, allerdings kann ich es nicht ausschließen.

 

Nun zu den erfreulicheren Dingen: Wenn Sie Bugs entdecken oder Verbesserungsvorschläge haben, so bin ich für alles offen — eine Mail an mich genügt, und ich werde mich des Problems bzw. der Idee annehmen (oder eben nicht, wenn's nicht geht). Wer das Spiel so gut findet, daß es ihm Geldgeschenke wert ist — bitte, tun Sie sich keinen Zwang an. Wir Studenten wissen jeden Notgroschen zu schätzen.

Eines noch: Obwohl ich das Spiel nicht unter die GPL gestellt habe, wäre ich doch gerne bereit, den gesamten Sourcecode auf Anfrage weiterzugeben.

 

Um nun ein Feedback an mich zu senden, hier die Mailadresse:

martin.fiedler@gmx.net

Meine (leider kaum gepflegte) Homepage ist erreichbar unter:

http://www-user.tu-chemnitz.de/~mfie/

Versionsgeschichte


1.0 — 6. April 2000
Erster öffentlicher Release. Das eigentliche Spiel wurde innerhalb von einem Tag aus dem MJ99-DOS-Code heraus auf Windows portiert; die restlichen zwei Wochen Entwicklungszeit flossen ins Feintuning — typisch Programmierjob …
1.1 — »Service Release 1« (MJ2000 SR1), 12. Dezember 2000
Eigentlich auf der Suche nach etwas ganz anderem, stieß ich auf meinen Linux-CDs auf den kmahjongg-Quelltext. So im Überfliegen kam ich drauf, wie dort unlösbare Spiele verhindert werden (nämlich durch Rückwärtsaufbau des Spielfeldes). Die Idee schien mir so einfach und genial, daß ich gleich mal Delphi bemühen mußte. Vier Stunden später, das Wort »einfach« aus dem vorigen Satz ist also inzwischen zu streichen, stand der Algorithmus endlich. Er ist zwar weit vom Optimum entfernt, aber wenigstens baut er keinen Mist. Schlimmere Spielfelder als die 100%ig zufälligen aus der 1.0 kann man schließlich auch nicht erzeugen.
Wo ich da schon mal beim Programmieren war, baute ich noch einige weitere längst überflüssige Erweiterungen ein:
  • Die Konfigurationsdatei wird ab sofort als INI-Datei gespeichert (der Erweiterbarkeit zuliebe).
  • Gegen den »Delayed-Repaint-Bug« zieht eine neue (allerdings unerprobte) Option ins Feld.
  • Die Toolbar ist endlich Win98-flach! (Das war eigentlich schon für die Version 1.0 geplant, aber ich habe die Eigenschaft Flat von TToolBar konsequent übersehen.)
  • Beim Highscore-Dialog wird jetzt das Namens-Eingabefeld automatisch aktiviert; außerdem erscheint statt leeren Namen nun »Mr. Shy« in der Liste.
  • Die auffälligste Veränderung zuletzt: Die Tileset-Grafik wurde in puncto Dreidimensionalität verbessert.