<!DOCTYPE book PUBLIC  "-//KDE//DTD DocBook V3.1-Based Variant V1.0//EN" [
  <!ENTITY kappname "&kfouleggs;" -- this only *seems* redundant -->
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % English "INCLUDE">
  <!ENTITY % ents PUBLIC "-//KDE//ENTITIES Documentation V1.0//EN">
  %ents;
]>

<book lang="&language;">

<bookinfo>
<title>The &kfouleggs; Handbook</title>

<authorgroup>
<author>
<firstname>Philip</firstname>
<surname>Rodrigues</surname>
<affiliation>
<address><email>philip.rodrigues@libertysurf.co.uk</email></address>
</affiliation>
</author>

<othercredit role="developer">
<firstname>Nicolas</firstname>
<surname>Hadacek</surname>
<affiliation>
<address><email>hadacek@kde.org</email></address>
</affiliation>
<contrib>Developer</contrib>
</othercredit>

<othercredit role="reviewer">
<firstname>Lauri</firstname>
<surname>Watts</surname>
<affiliation>
<address><email>vampyr@atconnex.net</email></address>
</affiliation>
<contrib>Reviewer</contrib>
</othercredit>

</authorgroup>

<copyright>
<year>2000</year>
<holder>Philip Rodrigues</holder>
</copyright>

<legalnotice>&FDLNotice;</legalnotice>

<date>15/12/2000</date>
<releaseinfo>2.00.05</releaseinfo>

<abstract><para>&kfouleggs; is a clone of the Japanese PuyoPuyo game for the K
Desktop Environment.</para></abstract>

<keywordset>
<keyword>KDE</keyword>
<keyword>kdegames</keyword>
<keyword>KFoulEggs</keyword>
<keyword>PuyoPuyo</keyword>
</keywordset>

</bookinfo>

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

<para>&kfouleggs; is a clone of the Japanese PuyoPuyo game, with advanced
features such as multiplayer games against human or <acronym>AI</acronym>, and
network play. If you have played <application>Tetris</application>, or one of
its many clones, you will find &kfouleggs; easy to learn.</para>

</chapter>


<chapter id="gameplay">
<title>Game Play</title>

<sect1 id="starting-a-new-game">
<title>Starting a New Game</title>

<para>When you start &kfouleggs;, just click on the <guibutton>Press to
start</guibutton> button, or select <guimenuitem>New Game</guimenuitem> from the
<guimenu>Game</guimenu> menu at any time to start a new game.</para>

</sect1>

<sect1 id="aim-of-the-game">
<title>Aim of the Game</title>

<para>The aim of the game is to achieve the highest score possible by moving the
falling tiles in such a way that tiles of a similar colour are adjacent, and
disappear. The more tiles you remove, the higher your score.</para>

</sect1>

<sect1 id="playing-the-game">
<title>Playing the Game</title>

<para>Use the <keycap>Left</keycap> and <keycap>Right</keycap> arrow keys to
move the falling tile in the relevant direction, and the <keycap>Up</keycap>
arrow and <keycap>Return</keycap> keys to rotate the tile left and right
respectively. The <keycap>Shift</keycap> key drops the tile down one line, and
the <keycap>Down</keycap> key drops the tile all the way down - use it as a way
of saving time.</para>

<para>All of these key bindings can be customized by selecting
<guimenuitem>Configure key bindings</guimenuitem> from the
<guimenu>Settings</guimenu> menu.</para>

<para>If two or more tiles of the same colour come to rest horizontally or
vertically next to each other, they become <quote>glued</quote>. If four or more
pieces of the same colour come to be <quote>glued</quote>, they disppear, and
any pieces above them fall down according to the law of gravity ;-). If this
causes four or more pieces to become <quote>glued</quote>, then they will also
disappear, and so on.</para>

<para>Every time you remove 100 tiles, you advance to the next level, where the
tiles fall faster, and the game is more difficult.</para>

<para>The game ends when the central column fills with tiles, and no more can
fall.</para>

</sect1>

</chapter>

<chapter id="preferences">
<title>&kfouleggs; Preferences and Default Keybindings</title>

<sect1 id="game-preferences">
<title>Game preferences</title>

<para>The &kfouleggs; preferences are accessed from
<menuchoice><guimenu>Settings</guimenu>
<guimenuitem>Preferences</guimenuitem></menuchoice>. They can be set as
follows:</para>

<variablelist>
<varlistentry><term><guilabel>Show tile's shadow</guilabel></term>
<listitem><para>If checked, a shadow is placed beneath the game board showing
where the piece will fall.</para></listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Show next tile</guilabel></term>
<listitem><para>If checked, shows the next tile that will fall onto the game
board.</para></listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Enable animations</guilabel></term>
<listitem><para>If checked, pieces gluing are shown with an
animation.</para></listitem>
</varlistentry>

<varlistentry>
<term><guilabel>Block Size</guilabel></term>
<listitem><para>Sets the size of the falling blocks.</para></listitem>
</varlistentry>

</variablelist>

</sect1>

<sect1 id="default-keybindings">
<title>Default keybindings</title>

<para>The default keybindings for &kfouleggs; in one-player mode are as
follows:</para>

<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry>Rotate Left</entry>
<entry><keysym>Up Arrow</keysym></entry>
</row>
<row>
<entry>Rotate Right</entry>
<entry><keysym>Return</keysym></entry>
</row>
<row>
<entry>Move Left</entry>
<entry><keysym>Left Arrow</keysym></entry>
</row>
<row>
<entry>Move Right</entry>
<entry><keysym>Right Arrow</keysym></entry>
</row>
<row>
<entry>Drop Down</entry>
<entry><keysym>Down Arrow</keysym></entry>
</row>
<row>
<entry>Drop One Line</entry>
<entry><keysym>Shift</keysym></entry>
</row>
</tbody>
</tgroup>
</informaltable>

</sect1>
</chapter>

<chapter id="multiplayer-and-network-play">
<title>Multiplayer and Network Play</title>

<sect1 id="general-multiplayer">
<title>General Information</title>

<para>&kfouleggs; supports two local multiplayer types - Human vs. Human and
Human vs. Computer. To play either of these, select it from the
<guimenu>Multiplayers</guimenu> menu.</para>

<sect2 id="local-multiplayer">
<title>Local Multiplayer Games</title>

<para>In Human vs. Human or Human vs. Computer mode, two gameboards are shown, one
for the first player and one for the second. Each has its own
<guilabel>Score</guilabel>, <guilabel>Removed</guilabel> and
<guilabel>Level</guilabel> indicator. The keys for the first human player
become, by default:</para> 

<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry>Rotate Left</entry>
<entry><keycap>E</keycap></entry>
</row>
<row>
<entry>Rotate Right</entry>
<entry><keycap>Alt</keycap></entry>
</row>
<row>
<entry>Move Left</entry>
<entry><keycap>F</keycap></entry>
</row>
<row>
<entry>Move Right</entry>
<entry><keycap>G</keycap></entry>
</row>
<row>
<entry>Drop Down</entry>
<entry><keycap>D</keycap></entry>
</row>
<row>
<entry>Drop One Line</entry>
<entry><keysym>Space</keysym></entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para>The keys for the second human player are the same as for the player in
single player mode. </para>

<para>To return to single player mode, select <guimenu>Multiplayers</guimenu>
and <guimenuitem>Single Human</guimenuitem>.</para>

</sect2>

<sect2 id="network-games">
<title>Network Multiplayer Games</title>

<para>Multiplayer network games are set up by selecting
<menuchoice><guimenu>Multiplayers</guimenu>
<guimenuitem>More...</guimenuitem></menuchoice></para>

<para>Multiplayer games of &kfouleggs; use the model of a hosted game which
other players join.</para>

</sect2>

<sect2 id="hosting-a-game">
<title>Hosting a game</title>

<para>To host a game, select <guilabel>Create a network game</guilabel> in the
Multiplayers option dialog, set the port you want to use, and click on the
<guibutton>Next</guibutton> button.You then have the option of changing local
players' settings, if there are more than one local players.  Clicking the
<guibutton>Finish</guibutton> button advances the dialog to the waiting for
clients stage. When enough clients have joined, <guibutton>Start
Game</guibutton> starts the multiplayer game.</para>

</sect2>

<sect2 id="joining-a-game">
<title>Joining a game</title>

<para>To join a game, select <guimenuitem>Join a network game</guimenuitem> in
the Multiplayers option dialog. Select the host (<guilabel>Server
address</guilabel>) and <guilabel>Port</guilabel> you want to connect to.</para>

<tip><para>Make sure that the port you set when joining a game is the same as
the port that was set by the host of the game!</para></tip> 

<para>Clicking <guibutton>Next</guibutton> takes you to the <guilabel>Local
players settings</guilabel> dialog (see above), and then
<guibutton>Finish</guibutton> connects to the remote game. The game starts when
the host chooses - the client has no choice.</para>

</sect2>

</sect1>

</chapter>

<chapter id="commands">
<title>Command Reference</title>


<sect1 id="kfouleggs-mainwindow">
<title>The main &kfouleggs; window</title>

<sect2>
<title>The Game Menu</title>

<variablelist>

<varlistentry>
<term><menuchoice>
<shortcut>
<keycombo action="simul"><keycap>Ctrl</keycap><keycap>N</keycap></keycombo>
</shortcut>
<guimenu><accel>G</accel>ame</guimenu>
<guimenuitem><accel>N</accel>ew</guimenuitem>
</menuchoice></term>
<listitem><para><action>Starts a new game.</action></para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<shortcut>
<keycombo><keycap>H</keycap></keycombo>
</shortcut>
<guimenu>Game</guimenu>
<guimenuitem>High Scores...</guimenuitem>
</menuchoice></term>
<listitem><para><action>Displays the high scores.</action></para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<shortcut>
<keycombo><keycap>P</keycap></keycombo>
</shortcut>
<guimenu><accel>G</accel>ame</guimenu>
<guimenuitem>Pause</guimenuitem>
</menuchoice></term>
<listitem><para><action>Pauses the game</action></para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<shortcut>
<keycombo action="simul"><keycap>Ctrl</keycap><keycap>Q</keycap></keycombo>
</shortcut>
<guimenu><accel>G</accel>ame</guimenu>
<guimenuitem><accel>Q</accel>uit</guimenuitem>
</menuchoice></term>
<listitem><para><action>Quits</action> &kfouleggs;</para></listitem>
</varlistentry>

</variablelist>

</sect2>

<sect2>
<title>The <guimenu>Multiplayers</guimenu> Menu</title>

<variablelist>

<varlistentry>
<term><menuchoice>
<guimenu><accel>M</accel>ultiplayers</guimenu>
<guimenuitem>Single Human</guimenuitem>
</menuchoice></term>
<listitem><para><action>Sets the multiplayer mode to single
player</action></para></listitem>
</varlistentry> 

<varlistentry>
<term><menuchoice>
<guimenu><accel>M</accel>ultiplayers</guimenu>
<guimenuitem>Human vs Human</guimenuitem>
</menuchoice></term>
<listitem><para><action>Sets the multiplayer mode to two player with two human
players.</action></para></listitem>
</varlistentry> 

<varlistentry>
<term><menuchoice>
<guimenu><accel>M</accel>ultiplayers</guimenu>
<guimenuitem>Human vs <accel>C</accel>omputer</guimenuitem>
</menuchoice></term>
<listitem><para><action>Sets the multiplayer mode to two player with one human
and one computer player.</action></para></listitem>
</varlistentry> 

<varlistentry>
<term><menuchoice>
<guimenu><accel>M</accel>ultiplayers</guimenu>
<guimenuitem>More...</guimenuitem>
</menuchoice></term>
<listitem><para><action>Displays the multiplayer
options dialog.</action></para></listitem> 
</varlistentry>

</variablelist>

</sect2>

<sect2>
<title>The <guimenu>Settings</guimenu> Menu</title>

<variablelist>
<varlistentry>
<term><menuchoice>
<guimenu><accel>S</accel>ettings</guimenu>
<guimenuitem>Show <accel>M</accel>enubar</guimenuitem>
</menuchoice></term>
<listitem><para><action>Shows or hides the Menubar</action></para></listitem>
</varlistentry> 

<varlistentry>
<term><menuchoice>
<guimenu><accel>S</accel>ettings</guimenu>
<guimenuitem>Configure <accel>K</accel>ey Bindings</guimenuitem>
</menuchoice></term>
<listitem><para><action>Displays a standard KDE key bindings
configurator.</action></para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<guimenu><accel>S</accel>ettings</guimenu>
<guimenuitem><accel>P</accel>references</guimenuitem>
</menuchoice></term>
<listitem><para><action>Displays/changes</action> the &kfouleggs;
preferences.</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<guimenu><accel>S</accel>ettings</guimenu>
<guimenuitem>Configure AI</guimenuitem>
</menuchoice></term>
<listitem><para>Displays the &kfouleggs; <acronym>AI</acronym>
Configurator</para></listitem> 
</varlistentry> 
</variablelist>

</sect2>


<sect2 id="help">
<title>The <guimenuitem>Help</guimenuitem> Menu</title>

<variablelist>
<varlistentry>
<term><menuchoice>
<shortcut><keycombo><keycap>F1</keycap></keycombo></shortcut>
<guimenu><accel>H</accel>elp</guimenu><guimenuitem><accel>C</accel>ontents</guimenuitem></menuchoice></term>
<listitem><para>This invokes the KDE help system starting at the &kfouleggs; help
pages (this document).</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<shortcut><keycombo><keycap>Shift</keycap><keycap>F1</keycap></keycombo></shortcut>
<guimenu><accel>H</accel>elp</guimenu><guimenuitem>What's
<accel>T</accel>his?</guimenuitem></menuchoice></term>
<listitem><para>This changes the mouse cursor to a combination arrow and
question mark. Clicking on items within &kfouleggs; with this arrow will open a help
window (if one exists for the particular item) explaining the item's
function.</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice><guimenu><accel>H</accel>elp</guimenu>
<guimenuitem><accel>R</accel>eport Bug</guimenuitem></menuchoice></term>
<listitem><para>Report a bug or a wishlist item to &kfouleggs'
authors.</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<guimenu><accel>H</accel>elp</guimenu><guimenuitem><accel>A</accel>bout
Kfouleggs</guimenuitem></menuchoice></term>
<listitem><para>This will displays version and author
information</para></listitem>
</varlistentry>

<varlistentry>
<term><menuchoice>
<guimenu><accel>H</accel>elp</guimenu><guimenuitem>About
<accel>K</accel>DE</guimenuitem></menuchoice></term>
<listitem><para>This displays the KDE version and other basic
information.</para></listitem>
</varlistentry>

</variablelist>

</sect2>

</sect1>

</chapter>

<chapter id="credits">

<title>Credits and License</title>

<para>&kfouleggs;</para>

<para>Program core engine copyright 1995 Eirik End <email></email></para>
<para>Program copyright 1996-2000 Nicolas Hadacek
<email>hadacek@kde.org</email></para>

<para>Documentation copyright 2000 Philip Rodrigues
<email>philip.rodrigues@libertysurf.co.uk</email></para>

&underFDL;

&underGPL;

</chapter>

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

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

<para>&kfouleggs; is part of the KDE project <ulink
url="http://www.kde.org">http://www.kde.org</ulink>.  KFoulEggs can be found in
the kdegames package on <ulink
url="ftp://ftp.kde.org/pub/kde/">ftp://ftp.kde.org/pub/kde/</ulink>, the main
ftp site of the KDE project. </para>

<para>All required libraries can be found on <ulink url="ftp://ftp.kde.org">The
KDE ftp site</ulink>.</para>

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

<para>In order to compile and install &kfouleggs; on your system, type the
following in the base directory of the kdegames distribution:</para>

<screen width="40">
<prompt>%</prompt> <userinput>./configure</userinput>
<prompt>%</prompt> <userinput><command>make</command></userinput>
<prompt>%</prompt> <userinput><command>make</command> install</userinput>
</screen>

<para>Since &kfouleggs; uses <application>autoconf</application> and
<application>automake</application> you should have not trouble compiling
it. Should you run into problems please report them to the KDE mailing list, or
the program maintainer, Nicolas Hadacek, at
<email>hadacek@kde.org</email>.</para>

</sect2>

</sect1>

</appendix>

<![ %addindex; [ &kdedocindex; ]]>

</book>
