<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook V3.1-Based Variant V1.0//EN">
<book lang="de" id="KAbalone">
  
  <bookinfo>
    <title>Das KAbalone Handbuch</title>
    <authorgroup>
      <author>
	<firstname>Josef</firstname>
	<surname>Weidendorfer</surname>
	<affiliation>
	  <address>
<email><ulink url="mailto:weidendo@informatik.tu-muenchen.de">
weidendo@informatik.tu-muenchen.de</ulink></email></address>
	</affiliation>
      </author>
    </authorgroup>

    <date>09/09/1999</date>
    <date>Übersetzung: 08/11/1999</date>
    <releaseinfo>1.04</releaseinfo>

    <revhistory>
      <revision>
	<revnumber></revnumber>
	<date></date>
      </revision>
    </revhistory>

    <abstract>
      <para>
Diese Dokumentation wurde zuletzt für <application>KAbalone</application> 
Version 1.04 aktualisiert. 
Bitte richten Sie alle Kommentare und Verbesserungsvorschläge an den 
Autor.</para>
    </abstract>

    <keywordset>
      <keyword>KDE</keyword>
      <keyword>Spiel</keyword>
      <keyword>abalone</keyword>
      <keyword>linux</keyword>
    </keywordset>

  </bookinfo>



  <chapter id="Introduction">
    <title>Einführung</title>
    
    <para>
Abalone ist ein einfaches Brettspiel. Zwei Personen spielen gegeneinander
mit roten und gelben Spielsteinen (Kugeln). Beginnend bei einer
Startstellung, in der jeder Spieler 14 Kugeln besitzt, wird abwechselnd
gezogen, bis ein Spieler 6 Kugeln des Gegners aus dem Spielfeld gedrängt
hat.</para>

    <para>
Das ursprüngliche Programm wurde 1993 für DOS und für Xlib geschrieben.
Für KDE wurde das Programm in großen Teilen neu geschrieben.</para>

    <note>
      <para>Die Spielidee stammt nicht von mir. Abalone gibt es als echtes 
Brettspiel, das soweit ich weiß von einer deutschen Firma vertrieben wird.
   </para> </note>

</chapter>



  <chapter id="RulesoftheGame">
    <title>Spielregeln für Abalone</title>

    <para><orderedlist>
	<listitem>
	  <para>Der Spieler mit den roten Kugeln beginnt.</para>
	</listitem>
	<listitem>
	  <para>Zwei Arten von Zügen sind erlaubt:<variablelist>
	      <varlistentry>
		<term>Normaler Zug</term>
		<listitem>
		  <para>
Eine, zwei oder drei Kugeln in einer Linie können um eins nach vorn
geschoben werden. Dabei sind 6 Richtungen möglich. Seitliches
Verschieben ist ebenfalls erlaubt.</para>

		  <para>
Für einen Zug muss die <mousebutton>linke Maustaste</mousebutton> über der 
zu schiebenden Kugel gedrückt werden. Die Kugel ändert daraufhin ihre Farbe. 
Nun ziehen Sie die Maus mit gedrückter Taste in die gewünschte Richtung. 
Wenn der Zug erlaubt ist, wandelt sich der Zeiger 
in einen Pfeil in die entsprechende Richtung, und alle betroffenen
Kugeln ändern ihre Farbe. Durch Loslassen der Maustaste wird der Zug
ausgeführt.</para>

		  <para>
Um zwei Kugeln seitlich zu schieben, klickt man zwischen die zwei Kugeln;
drei Kugeln werden durch Drücken der mittleren Maustaste auf die
mittlere Kugel angesprochen. Wenn ein seitlicher Zug erlaubt ist, ändern
die Kugeln Ihre Farbe. Wenn der Zug nicht erlaubt ist, ändert nur die 
mittlere Kugel ihre Farbe und Sie können nur einen normalen Zug
ausführen.</para>
		</listitem>
	      </varlistentry>
	      <varlistentry>
		<term>Anschiebe-Zug</term>
		<listitem>
		  <para>
Maximal zwei Kugeln des Gegners können vor den eigenen Kugeln
hergeschoben werden, nämlich dann, wenn die eigenen Kugeln in der Zahl
überlegen sind. Das heißt: mit zwei Kugeln kann man eine Kugel des
Gegners schieben, und mit drei entsprechend eine oder zwei.</para>
		  <para>
Besondere Anschiebe-Züge sind solche, die gegnerische Kugeln aus dem
Spielfeld drängen. Wenn man 6 Kugeln des Gegners so rausgeschoben hat,
hat man das Spiel gewonnen.</para>
		</listitem>
	      </varlistentry>
	    </variablelist></para>
	</listitem>
      </orderedlist></para>
    
    <para>
Wenn Ihnen immer noch nicht klar ist, wie das Spiel funktioniert, schauen
Sie sich doch einfach ein Spiel an, bei dem der Computer beide Seiten
spielt. Dazu wählen Sie einfach <menuchoice>
	<guimenu>Einstellungen</guimenu>
	<guisubmenu>Computer spielt</guisubmenu>
	<guimenuitem>Beide Seiten</guimenuitem>
      </menuchoice>
und starten ein neues Spiel.</para>
  </chapter>



<chapter id="TheUserInterface">
<title>Die Benutzeroberfläche</title>

    <para>
Wie man Spielzüge ausführt ist im Kapitel 
<link linkend="RulesoftheGame">Spielregeln</link>beschrieben.
Die Knöpfe in der Werkzeugleiste haben die gleiche Bedeutung wie die
Einträge im Datei- bzw. im Bearbeiten-Menü.
</para>


    <sect1 id="fileMenu">
      <title>Das Datei-Menü</title>

<para><variablelist>
	  <varlistentry>
	    <term><menuchoice>
		<shortcut><keycap>F2</keycap></shortcut>
		<guimenuitem>Neues Spiel</guimenuitem></menuchoice></term>
	    <listitem>
	      <para>
<action>Startet ein neues Spiel.</action> Dies ist jederzeit, auch während eines 
laufenden Spieles, möglich.</para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<shortcut><keycap>S</keycap></shortcut>
		<guimenuitem>Suche unterbrechen</guimenuitem></menuchoice></term>
	    <listitem>
	      <para>
<action>Wenn der Computer über einen Zug nachdenkt, kann damit dessen Suche
unterbrochen werden. Er wählt dann den Zug, den er bis jetzt als 
Besten erachtet.</action></para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<shortcut>
		  <keycombo>
		    <keysym>Bild Aufwärts</keysym>
</keycombo>
		</shortcut>
		<guimenuitem>Zurücknehmen</guimenuitem></menuchoice></term>
	    <listitem>
	      <para>
<action>Nimmt einen Zug zurück.</action> Tatsächlich werden zwei Züge
zurückgenommen: ein Zug des Gegners und ein eigener, so dass man
wieder an der Reihe ist. Etwa 100 Züge können zurückgenommen
werden. Wenn Sie sich im Modus "Ändern" befinden (sehen Sie dazu
<menuchoice><guimenu>Bearbeiten</guimenu><guimenuitem>Ändern</guimenuitem></menuchoice>
unten), wird durch diese Funktion die Nummer des Zuges um eins 
erniedrigt.</para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<shortcut>
		  <keysym>Bild Abwärts</keysym>
		</shortcut>
		<guimenuitem>Vorwärts</guimenuitem>
	      </menuchoice></term>
	    <listitem>
	      <para>
Diese Funktion ist nur nützlich im Modus "Ändern": 
<action>Erhöht die Nummer des Zuges dieser Position</action></para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<shortcut><keycap>H</keycap></shortcut>
		<guimenuitem>Vorschlag</guimenuitem>
	      </menuchoice></term>
	    <listitem>
	      <para><action>Zeigt Ihnen einen Vorschlag des Computers an.
</action> Dies ist nur möglich im Schwierigkeitsgrad "Normal" 
oder höher, die Nummer des Zugs größer als zwei ist und Sie
Ihren Zug nicht zurücknehmen.</para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<shortcut><keycap>N</keycap></shortcut>
		<guimenuitem>Netzwerk</guimenuitem>
	      </menuchoice></term>
	    <listitem>
	      <para>
<action>Wenn dieser Option aktiviert ist, befindet sich das Programm im
Netzwerk-Modus.</action> Alle <application>KAbalone</application>-Programme, 
die sich im  Netzwerk-Modus befinden, senden sich Änderungen der Positionen 
zu. Das ermöglicht es Ihnen, gegen einen Gegner auf einem anderen Computer
zu spielen oder das Spiel eines anderen 
<application>KAbalone</application>-Programms zu beobachten.</para>
	      <para>
Um die Positionen auszutauschen, müssen die 
<application>KAbalone</application>-Programme von einander wissen. Wenn die 
Programme auf dem gleichen Computer laufen, müssen Sie keine weiteren 
Angaben machen. Wenn sie auf
verschiedenen Computern laufen, müssen Sie die Adresse des anderen
Computers auf der Befehlszeile mit der Option <option>-h</option> 
angeben.</para>
	      <para>
Für Experten: <application>KAbalone</application> beobachtet im Netzwerk-Modus 
einen TCP-Socket,
ob Positionsänderungen eines anderen 
<application>KAbalone</application>-Programms ankommen.
Sie können die Portnummer mit der Befehlszeilen-Option
<option>-p</option> Sie benötigen diese Option, wenn Sie mehrere verschiedene
<application>KAbalone</application>-Netzwerkspiele spielen wollen.</para>
	      
	      <para>
Beispiele:<itemizedlist>
		  <listitem>
<para>
Chris auf Maschine1 und Maria auf Maschine2 wollen gegeneinander 
spielen: Maria startet einfach <application>KAbalone</application>, wechselt in 
den Netzwerk-Modus und setzt 
<menuchoice><guimenu>Einstellungen</guimenu><guisubmenu>Computer spielt</guisubmenu>
		      </menuchoice> auf <guimenuitem>Kein<!--FIXME--></guimenuitem>. 
Chris startet <application>KAbalone</application> mit 
<command>kabalone -h Maschine2</command> und macht ansonsten die gleichen 
Einstellungen wie Maria. Jetzt kann einer der beiden das Spiel beginnen 
und mit den roten Spielsteinen ziehen. Jederzeit, wenn in einem Programm 
eine Position geändert wird, wird das automatisch im anderen 
Programm nachvollzogen.</para>
		  </listitem>
		  <listitem>
		    <para>
John will das Spiel beobachten: Er macht das gleiche wie Chris, aber 
er macht selbst keinen Zug.</para>
		  </listitem>
		  <listitem>
		    <para>
Zwei verschiedene <application>KAbalone</application>-Netzwerkspiele sollen 
auf den Rechnern m1 und m2 gespielt werden. Um die Spiele zu 
unterscheiden, wählen wir für eines den Port Nummer 12345. Auf m1 
starten wir einmal <application>KAbalone</application> wie immer und einmal 
mit <command>kabalone -p 12345</command>. Auf m2 starten wir mit 
<command>kabalone -h m1</command> und <command>kabalone -h m1:12345</command> 
(Der Doppelpunkt trennt den Rechnernamen von der Portnummer).</para>
	    </listitem>
		</itemizedlist></para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<shortcut>
		  <keycombo>
		    <keycap>Strg</keycap><keycap>Q</keycap>
		  </keycombo></shortcut>
		<guimenuitem>Beenden</guimenuitem>
	      </menuchoice></term>
	    <listitem>
	      <para><action>Beendet <application>KAbalone</application>.</action></para>
	    </listitem>
	  </varlistentry>
	</variablelist></para>
    </sect1>

    <sect1 id="editMenu">
      <title>Das Bearbeiten-Menü</title>
      <variablelist>
	<varlistentry>
	  <term><menuchoice>
	      <shortcut>
		<keycombo><keycap>Strg</keycap><keycap>Einfg</keycap></keycombo>
	      </shortcut>
	      <guimenuitem>Modify<!--FIXME--></guimenuitem>
	    </menuchoice></term>
	  <listitem>
	    <para>
Schaltet <application>KAbalone</application> in den Modify-Modus. In diesem 
Modus können Sie das Spielfeld bearbeiten, indem Sie rote oder gelbe 
Spielsteine hinzufügen oder löschen. Die Statuszeile zeigt die Anzahl 
der roten und gelben Steine an, die Nummer des Zugs, der Spieler, 
der den nächsten Spielzug machen muss, und ob die Position gültig ist: 
Ein Ausrufezeichen meint Nein, ein Haken meint Ja. Wenn die Position 
ungültig ist, und Sie in den normalen Spielmodus zurück wechseln 
wollen, können Sie nicht spielen! Nur gültige Positionen können als 
Startpositionen eines Spieles verwendet werden. 
<note><para>
Wenn <application>KAbalone</application> sich im Netzwerk-Modus befindet, 
wird die Position erst gesendet, wenn Sie in den normalen 
Spielmodus zurückschalten. <guimenuitem>Zurücknehmen</guimenuitem> und 
<guimenuitem>Vorwärts</guimenuitem> erniedrigen und erhöhen einfach 
die Nummer des Spielzugs ohne einen Stein zu ändern.</para></note>
</para>

	    <para>
Benutzung: Wenn Sie die <mousebutton>linke oder rechte Maustaste</mousebutton> 
auf einem leeren oder gelben Feld drücken, gelangen Sie in den 
Modus "Rote Spielsteine hinzufügen"; wenn Sie die 
<mousebutton>mittlere Maustaste</mousebutton> auf einem leeren oder roten 
Feld drücken, gelangen Sie in den Modus "Gelbe Spielsteine hinzufügen". 
Wenn Sie die <mousebutton>linke oder rechte Maustaste</mousebutton> auf einem 
roten Feld, bzw. die <mousebutton>mittlere Maustaste</mousebutton> auf einem 
gelben Feld drücken, gelangen Sie in den Modus "Spielsteine löschen". 
Sie bleiben so lange in einem Modus, wie Sie die Maustaste gedrückt halten. 
Alle Felder, die Sie in einem Modus überstreichen, werden bearbeitet.
</para>
	  </listitem>
	</varlistentry>
	<varlistentry>
	  <term><menuchoice>
	      <shortcut>
		<keycombo><keycap>Strg</keycap><keycap>C</keycap></keycombo>
	      </shortcut>
	      <guimenuitem>Kopieren</guimenuitem>
	    </menuchoice></term>
	  <listitem>
	    <para>
<action>Kopiert eine ASCII-Abbild des aktuellen Spielbretts in die 
Zwischenablage.</action> Sie können dieses dann in jeden Texteditor 
übernehmen, indem Sie dort die 
<mousebutton>mittlere Maustaste</mousebutton> drücken.
</para>
	  </listitem>
	</varlistentry>
	<varlistentry>
	  <term><menuchoice>
	      <shortcut>
		<keycombo><keycap>Strg</keycap><keycap>V</keycap></keycombo>
	      </shortcut>
	      <guimenuitem>Einfügen</guimenuitem>
	    </menuchoice></term>
	  <listitem>
	    <para>
<action>Interpretiert den Inhalt der Zwischenablage als ASCII-Abbild 
eines <application>KAbalone</application>-Spielbretts und benutzt dieses 
als aktuelle Position.</action> Ein gültiges ASCII-Abbild wird 
durch <guimenuitem>Kopieren</guimenuitem> erstellt.
</para>
	    <para>
Auf diesem Weg können Sie Spielpositionen zwischen zwei 
<application>KAbalone</application>-Programmen austauschen. Aber dies kann 
auch einfacher über den Netzwerk-Modus geschehen. Eine andere 
Möglichkeit ist es, auf diesem Weg, eine Position in einer Textdatei 
zu speichern und diese dann später wieder herzustellen.
</para>
	  </listitem>
	</varlistentry>
	<varlistentry>
	  <term><menuchoice>
	      <shortcut>
		<keycombo><keycap>Strg</keycap><keycap>O</keycap></keycombo>
	      </shortcut>
	      <guimenuitem>Stellung restaurieren</guimenuitem></menuchoice></term>
	  <listitem>
	    <para>
<action>Stellt eine vorher gespeicherte Stellung wieder her.</action></para>
	  </listitem>
	</varlistentry>
	<varlistentry>
	  <term><menuchoice>
	      <shortcut>
		<keycombo><keycap>Strg</keycap><keycap>S</keycap></keycombo>
	      </shortcut>
	      <guimenuitem>Stellung speichern</guimenuitem></menuchoice></term>
	  <listitem>
	    <para>
<action>Speichert die aktuelle Stellung ab.</action></para>
	  </listitem>
	</varlistentry>
      </variablelist>

    </sect1>




    <sect1 id="optionsMenu">
      <title>Das Einstellungen-Menü</title>

      <para><variablelist>
	  <varlistentry>
	    <term><menuchoice>
		<guisubmenu>Spielstärke</guisubmenu></menuchoice></term>
	    <listitem>
	      <para>
Es kann unter vier Spielstärken des Computers ausgewählt werden. Dies
beeinflusst die Anzahl Züge, die der Computer im Voraus berechnet,
um den besten Zug zu finden. Unterbrochen werden kann die Suche mit der
Taste <keycap>S</keycap>.</para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<guisubmenu>Computer spielt</guisubmenu></menuchoice></term>
	    <listitem>
	      <para>
Der Computer kann Rot, Gelb oder beide Seiten übernehmen. Dies kann
jederzeit (nicht nur vor Spielbeginn) geändert werden, um
beispielsweise die Seite zu wechseln (wenn man zu schlecht spielt).
Wählen Sie "<guimenuitem>Kein</guimenuitem>"<!--FIXME-->, wenn Sie gegen einem 
Freund spielen wollen. Diese Einstellung ist außerdem 
sinnvoll im Netzwerk-Modus.</para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<guisubmenu>Langsam ziehen</guisubmenu></menuchoice></term>
	    <listitem>
	      <para>
Ein Computerzug wird dadurch angezeigt, dass die am Zug beteiligten
Kugeln vor dem eigentlichen Zug zu blinken beginnen und ihre Farbe
ändern (wenn diese Option angewählt ist). Ein Abwählen
verhindert diese etwas langsame (Pseudo-) Animation. Dann wechseln die
entsprechenden Kugeln nur kurzzeitig ihre Farbe, ohne zu blinken; dies ist
deutlich schneller.</para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<guimenuitem>Render Balls<!--FIXME--></guimenuitem>
	      </menuchoice></term>
	    <listitem>
	      <para>
Wenn dies aktiviert ist, werden die Spielsteine bei Bedarf 
(z.B. beim Ändern der Fenstergröße) von einem einfachen internen 
Raytracer gerendert.
</para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<guimenuitem>Spion</guimenuitem></menuchoice></term>
	    <listitem>
	      <para>
Ist die Option Spion angewählt, so werden in der Statuszeile
Informationen zum aktuellen Zug - sowohl des Spielers als auch eines
momentan besten Zuges des Computers - angezeigt: der Zug selbst sowie eine
vom Computer errechnete Verbesserung (positiv) oder Verschlechterung
(negativ) der aktuellen Stellungsbewertung durch den Zug.</para>
	    </listitem>
	  </varlistentry>
	  <varlistentry>
	    <term><menuchoice>
		<guimenuitem>Speichern</guimenuitem></menuchoice></term>
	    <listitem>
	      <para>
Speichert die Einstellungen in der Konfigurationsdatei der Anwendung.
Diese werden beim Start von <application>KAbalone</application> automatisch 
wieder hergestellt.</para>
	    </listitem>
	  </varlistentry>
	</variablelist></para>
    </sect1>
  </chapter>

  <chapter id="commandolineoptions">
    <title>Kommandozeilen-Optionen</title>
    <para><cmdsynopsis>
	<command>kabalone</command>
	<group>
	  <arg>-p <replaceable>portnummer</replaceable></arg>
	</group>
	<group>
	  <arg rep="repeat">-h <replaceable>rechnername</replaceable>
<group><replaceable>:portnummer</replaceable></group></arg>
	</group>
      </cmdsynopsis></para>
    <para>
Mit der Option <option>-p</option> können Sie die Portnummer 
des zu beobachtenden TCP Sockets angeben.</para>
    <para>
Mit der Option <option>-h</option> können Sie die Adresse eines 
<application>KAbalone</application>-Prozesses auf einem anderen Rechner 
angeben, mit dem Sie kommunizieren wollen. Die Portnummer ist 
optional und muss nur angegeben werden, wenn der andere Prozess 
nicht die Standard-Portnummer benutzt. Sie können auch mehrere 
entfernte Prozesse angeben.
</para>
  </chapter>


<chapter id="credits">
<title>Mitwirkende und Lizenz</title>
    <para>
<application>KAbalone</application> Copyright 1997, 1998 Josef Weidendorfer 
<email>weidendo@informatik.tu-muenchen.de</email></para>
    <para>
<application>KAbalone</application> ist unter den Bestimmungen der 
<ulink url="common/gpl-license.html">GNU GPL</ulink> veröffentlicht.
</para>


    <para>
Entwickler:<itemizedlist>
	<listitem>
	  <para>Johannes Weidendorfer 
<email>weidendo@informatik.tu-muenchen.de</email></para>
	</listitem>
      </itemizedlist></para>
    <para>
Dokumentation:<itemizedlist>
	<listitem>
	  <para>Johannes Weidendorfer 
<email>weidendo@informatik.tu-muenchen.de</email></para>
	</listitem>
      </itemizedlist></para>
    <para>
Deutsche Übersetzung:<itemizedlist>
	<listitem>
	  <para>Matthias Kiefer <email>matthias.kiefer@gmx.de</email></para>
	</listitem>
	<listitem>
	  <para>Oliver Hensel <email>oliver.hensel@gmx.de</email></para>
	</listitem>
      </itemizedlist></para>

  </chapter>
</book>
<!--
Local Variables:
mode: sgml
sgml-omittag: nil
sgml-shorttag: t
End:
-->
