<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kappname "&kshisen;">
  <!ENTITY package "kdegames">
  <!ENTITY % English "INCLUDE" > <!-- change language only here -->
  <!ENTITY % addindex "IGNORE">
]>

<book lang="&language;">
<bookinfo>
<title>The &kshisen; Handbook</title>

<authorgroup>
<author>
<firstname>Dirk</firstname>
<surname>Doerflinger</surname>
<affiliation>
<address>&Dirk.Doerflinger.mail;</address>
</affiliation>
</author>
<othercredit role="reviewer">
<firstname>Frerich</firstname><surname>Raabe</surname>
<contrib>Reviewer</contrib>
<affiliation><address>&Frerich.Raabe.mail;</address></affiliation>
</othercredit>
<!-- TRANS:ROLES_OF_TRANSLATORS -->
</authorgroup>


<date>2006-06-17</date>
<releaseinfo>1.5.1</releaseinfo>

<abstract>
<para>&kshisen; is a game similar to Mahjongg for &kde;.</para>
</abstract>

<keywordset>
      <keyword>KDE</keyword>
      <keyword>kdegames</keyword>
      <keyword>kshisen</keyword>
      <keyword>game</keyword>
      <keyword>shisen-sho</keyword>
</keywordset>

</bookinfo>


<chapter id="introduction">
<title>Introduction</title>

<para>&kshisen; is a single-player-game similar to Mahjongg and uses the same
set of tiles as Mahjongg.</para> 

<para>The object of the game is to remove all tiles from the field.</para>

</chapter>

<chapter id="playing-kshisen">
<title>Playing &kshisen;</title>

<sect1 id="rules">
<title>Rules</title>

<para>The aim of the game is to remove all tiles from the board. Only two
matching tiles can be removed at a time. Two tiles can only be removed if they
can be connected with a maximum of three connected lines. Lines can be
horizontal or vertical, but not diagonal. </para>

<para>You don't have to draw the lines by yourself, the game does this for
you. Just mark two matching tiles on the board, if they can be connected with a
maximum of three lines, the lines will be drawn and the tiles are
removed. </para>

<para>Remember that lines only may cross the empty border. If you are stuck, you
can use the Hint feature to find two tiles which may be removed.  Clicking a
tile with the &RMB; will show you all corresponding tiles, no matter if they are
removable at the moment or not.</para>

<para>The game is over when no moves are possible. This could be due to 
clearing all the tiles from the field or reaching a point in the game 
where no two matching tiles can be connected by three lines.  
Some games are unsolvable, if you would like to avoid unsolvable 
games uncheck the option <guilabel>Allow unsolvable
games</guilabel> in the configuration dialog.</para>

<para>The resulting score <quote>S</quote> is calculated using the
following formula, assuming that <quote>n</quote> represents the
number of tiles present when the game started and <quote>t</quote>
standing for the time (in seconds) it took to clear the
field:</para>

<mediaobject><imageobject>
<imagedata fileref="score-formula.png" format="PNG"/>
</imageobject><textobject>
<phrase>S=(n/t)*sqrt(n/84)/0.0014</phrase>
</textobject></mediaobject>

<para>If you played with the <guilabel>Gravity</guilabel> setting enabled, this score
will additionally get multiplied by two.</para>
</sect1>
</chapter>

<chapter id="menu-reference">
<title>Menu Reference</title>

<sect1 id="game-menu">
<title>The <guimenu>Game</guimenu> Menu</title>

<para>The <guimenu>Game</guimenu> menu lets you control the status of the
current game:</para>

<variablelist>
<varlistentry>
<term><menuchoice>
<shortcut><keycombo action="simul">&Ctrl;
<keycap>N</keycap></keycombo></shortcut>
<guimenu>Game</guimenu><guimenuitem>New</guimenuitem></menuchoice></term>
<listitem><para><action>Finish the actual game</action> set and start a new
session with new tiles. </para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<shortcut><keycombo><keycap>F5</keycap></keycombo></shortcut>
<guimenu>Game</guimenu><guimenuitem>Restart
Game</guimenuitem></menuchoice></term>
<listitem><para><action>Restart the current game with the same
tiles.</action></para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<shortcut><keycombo><keycap>P</keycap></keycombo></shortcut>
<guimenu>Game</guimenu>
<guimenuitem>Pause</guimenuitem></menuchoice></term>
<listitem><para><action>Pauses the entire game</action>, especially the timer
which affects the scoring. The menu entry is also used for resuming the
game.</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<shortcut><keycombo action="simul">&Ctrl;<keycap>H</keycap></keycombo>
</shortcut>
<guimenu>Game</guimenu><guimenuitem>Show
Highscores</guimenuitem></menuchoice></term>
<listitem><para>Shows the (local) Top-Ten charts of &kshisen;.</para> </listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<shortcut><keycombo action="simul">&Ctrl;
<keycap>Q</keycap></keycombo></shortcut>
<guimenu>Game</guimenu><guimenuitem>Quit</guimenuitem></menuchoice></term>
<listitem><para><action>Quits</action> &kshisen;. </para></listitem>
</varlistentry>

</variablelist>

<para>Some of the menu items can also be controlled by keykoard shortcuts. 
See <xref linkend="key-bindings"/> for a list.</para> 

</sect1>

<sect1 id="move-menu">
<title>The <guimenu>Move</guimenu> Menu</title>

<variablelist>
<varlistentry>
<term><menuchoice> <shortcut><keycombo
action="simul">&Ctrl;<keycap>Z</keycap></keycombo></shortcut>
<guimenu>Move</guimenu>
<guimenuitem>Undo</guimenuitem></menuchoice></term>
<listitem><para><action>Undo the last step</action>. Same as the
<guibutton>Undo</guibutton> button in the toolbar.</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice><shortcut><keycombo
action="simul">&Ctrl;&Shift;<keycap>Z</keycap></keycombo></shortcut> 
<guimenu>Move</guimenu>
<guimenuitem>Redo</guimenuitem></menuchoice></term>
<listitem><para><action>Redo the last step</action>. Same as the
<guibutton>Redo</guibutton> button in the toolbar.</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<shortcut><keycombo><keycap>H</keycap></keycombo></shortcut>
<guimenu>Move</guimenu>
<guimenuitem>Hint</guimenuitem></menuchoice></term>
<listitem><para><action>Show a tip</action>, which two tiles to remove
next.</para></listitem>
</varlistentry>

</variablelist>
</sect1>

<sect1 id="settings-menu">
<title>The <guimenu>Settings</guimenu> Menu</title>

<variablelist>
<varlistentry>
<term><menuchoice>
<guimenu>Settings</guimenu>
<guimenuitem>Show Toolbar</guimenuitem>
</menuchoice></term>
<listitem>
<para>
Toggle on and off the display of the toolbar.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<guimenu>Settings</guimenu>
<guimenuitem>Show Statusbar</guimenuitem>
</menuchoice></term>
<listitem>
<para>
Toggle on and off the display of the status bar.
</para>
</listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<guimenu>Settings</guimenu>
<guimenuitem>Configure Shortcuts...</guimenuitem>
</menuchoice></term>
<listitem><para>
<action>Open a dialog which lets you redefine all the keyboard shortcuts.</action>
</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<guimenu>Settings</guimenu>
<guimenuitem>Configure Toolbars...</guimenuitem>
</menuchoice></term>
<listitem><para>Displays a &kde; standard dialog where you can configure the toolbar icons.</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<guimenu>Settings</guimenu>
<guimenuitem>Configure &kshisen;...</guimenuitem>
</menuchoice></term>
<listitem>
<para>Opens the <link linkend="configuration">configuration
dialog</link> to change &kshisen; settings.
</para></listitem>
</varlistentry>

</variablelist>
</sect1>

<sect1 id="helpmenu">
<title>The <guimenu>Help</guimenu> Menu</title>

&help.menu.documentation;

</sect1>

<sect1 id="key-bindings">
<title>Shortcuts</title>

<para>Default shortcuts are:
</para>

<informaltable>
<tgroup cols="2">
<tbody>
<row><entry>New</entry><entry><keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo></entry></row>
<row><entry>Restart Game</entry><entry><keycap>F5</keycap></entry></row>
<row><entry>Pause</entry><entry><keycap>P</keycap></entry></row>
<row><entry>Show Highscores</entry><entry><keycombo action="simul">&Ctrl;<keycap>H</keycap></keycombo></entry></row>
<row><entry>Quit</entry><entry><keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo></entry></row>
<row><entry>Undo</entry><entry><keycombo action="simul">&Ctrl;<keycap>Z</keycap></keycombo></entry></row>
<row><entry>Redo</entry><entry><keycombo action="simul">&Ctrl;&Shift;<keycap>Z</keycap></keycombo></entry></row>
<row><entry>Hint</entry><entry><keycap>H</keycap></entry></row>
<row><entry>&kshisen; Handbook</entry><entry><keycap>F1</keycap></entry></row>
<row><entry>What's This</entry><entry><keycombo action="simul">&Ctrl;&Shift;<keycap>F1</keycap></keycombo></entry></row>
</tbody>
</tgroup>
</informaltable>

</sect1>
</chapter>

<chapter id="configuration">
<title>Configuration</title>

<para>Selecting the <menuchoice><guimenu>Settings</guimenu>
<guimenuitem>Configure &kshisen;...</guimenuitem></menuchoice> menu item will
open a configuration dialog which lets you alter the behavior of the game.</para>

<screenshot>
<screeninfo>&kshisen; configuration dialog</screeninfo>
<mediaobject>
<imageobject><imagedata fileref="kshisen-configuration.png" format="PNG"/></imageobject>
<textobject><phrase>&kshisen; configuration dialog</phrase></textobject>
</mediaobject>
</screenshot>

<variablelist>
<varlistentry>
<term><guilabel>Gravity</guilabel></term>
<listitem><para>Checking this makes the game even harder: If a tile is
removed, all tiles lying above it will fall down one step.</para></listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Allow unsolvable games</guilabel></term>
<listitem><para>If checked, only solvable games will be
created when a new game is started. Note: You may still choose the wrong way and
have to try again if you didn't solve the game, but if it's checked, the game
<emphasis>will</emphasis> be solvable.</para></listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Board Difficulty</guilabel></term>
<listitem><para>The slider controls the difficulty of the board. There are three
options <guilabel>Easy</guilabel>, <guilabel>Medium</guilabel> and 
<guilabel>Hard</guilabel>.</para></listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Piece Removal Speed</guilabel></term>
<listitem><para>Adjusting this slider alters the speed at which the pieces are 
removed from the screen after a match has been made.</para></listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Prefer Unscaled Tiles</guilabel></term>
<listitem><para>Resizing the window causes the tiles on the board to be scaled to
match the window size. When this option is checked, the window is resized to fit
the tiles' natural size. You can still adjust the size of the window. Doing so
causes this mode to be disengaged.</para></listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Tile Size</guilabel></term>
<listitem><para>This slider allows you to can change the number of tiles 
on the board. The more tiles you have, the harder (and longer)
the game will be.</para></listitem>
</varlistentry>

<varlistentry>
<term><guibutton>Help</guibutton></term>
<listitem><para>Opens &kshisen; help pages. (this document).</para></listitem></varlistentry>

<varlistentry>
<term><guibutton>Defaults</guibutton></term>
<listitem><para>Reverts all settings to defaults.</para></listitem></varlistentry>

<varlistentry>
<term><guibutton>OK</guibutton></term>
<listitem><para>Saves your changes and closes the dialog.</para></listitem></varlistentry>

<varlistentry>
<term><guibutton>Apply</guibutton></term>
<listitem><para>Saves your changes but doesn't close the dialog.</para></listitem></varlistentry>

<varlistentry>
<term><guibutton>Cancel</guibutton></term>
<listitem><para>Cancels all your changes and closes the dialog.</para></listitem></varlistentry>

</variablelist>
</chapter>

<chapter id="credits">
<title>Credits and License</title>

<para>
&kshisen; Copyright 1999 &Mario.Weilguni;
&Mario.Weilguni.mail;
</para>


<para>
Documentation Copyright 2000 &Dirk.Doerflinger;
<email>ddoerflinger@gmx.net</email>
</para>

<!-- TRANS:CREDIT_FOR_TRANSLATORS -->

&underFDL;
&underGPL;

</chapter>

<appendix id="installation">
<title>Installation</title>

<sect1 id="getting-kshisen">
<title>How to obtain &kshisen;</title>

&install.intro.documentation;

</sect1>

<sect1 id="requirements">
<title>Requirements</title>

<para>
In order to successfully compile &kshisen;, you need &kde; 3.x.
All required libraries as well as &kshisen; itself can be found on
&kde-ftp;.</para>
</sect1>


<sect1 id="compilation">
<title>Compilation and Installation</title>

&install.compile.documentation;

</sect1>
</appendix>

</book>

