The FPC games docs...

The FPC-games are a series of small console games written by Marco van de Voort
(Marcov@stack.nl) as demos for the Free Pascal compiler (FPC) and its Run Time
Libraries (RTL).

SameGame can also use the API for mousecontrol. This because the RTL mouseunit
MsMouse only exists under Go32V2. The API mouse routines work with Linux, but
have (right now) a problem with GPM version 1.17. Use a different version if you
can 1.15 works according to the developpers.

Currently the games are

- FPCTris (v0.07)
- Samegame (v0.02)


Copyright
---------

The source code is donated to the FPC project. The FPC project distributes all
sources under a modified GNU license (much like the so called LGPL) see
copying.fpc.


Future
--------

- Some cards games (BlackJack, Poker, and two Dutch games called "Rikken" and
   "Toepen") are in preparation
- A server for Linux, so that Linux clients can connect to it for multiplayer
   services. One server for all games, otherwise small games like this clog up
   the number of free ports ;-)
   This is also important because most of the cardsgames (except BlackJack)
   can't be played against the computer, the AI is to difficult. (Poker is maybe
   also possible)

---------
FPCTRIS

Fpctris is a tetris class game, originally designed

- to be distributed with FPC as Crt demo,
- Keeping possible integration in the IDE in mind (would add 15k or so)
- Svgalib version etc etc. Anyway, the engine is quite platform independant,
   and can be ported to different platforms (also TUI,GUI) if needed.

The current versions are still under development, but already playable even
under telnet.

TODO list:

- (difficult, also interesting for Crt and IDE), get more terminals supported under
  Linux. Specially I don't want to issue the escape sequence that rapes your console
  to an IBM compat charset. Linux users don't like that. (temporarily solved by
  doing this only on user request)

- (Linux) Sockets multiplayer client system :-). Have actually started on it,
   but are getting nowhere. The server will be separate and support more than
   one game. So you get one port for several games.

- Setup screen ((create) alternate blocks etc)

- Commandline options/config file. (.rctetris per user :-))

KNOWN BUGS:

 - Upperrow not used with some chars. (Requires shifting up). Possibly related
   that very rarely game over appears when there's still one or two rows to go.
   (Since the 5x5 version some of this has been removed. If you get a L-shaped
   character and immediately rotate, the upper line is used)
 - Biggest problem at the moment is the delay procedure and its init on machines
    under heavy load. Can't change that though. Only under heavy load, so a
    less big problem on heavy machines.
 - Selection of colors don't take screen attribs into account. So figures can
    seem to disappear on weird TTY's or 4Dos people using strange ANSI prompts.

History:

v0.00    First version with working gameplay, created during the Brussels meeting.
         published on tflily.
v0.01    Some work done, first version on my page. Most improvements done in
         Brussels, to many to name here.
v0.02  - Got rid of binary encoding, and calculating shapes etc when a new figure
         is created. All is done on startup now. Adding characters is simpler now.
      - A lot of parameters are variables instead of constants.
      - Experienced tetrissers press "e" once.
      - Colors! Linux has the color default off (press "C")
v0.03  (Only used on on stack, not on web)
      - Keep on pushing arrow down no longer freezes FPCTris.
      - Basic level system implemented.
      - High ascii background in color mode.
v0.04  (Only used on on stack, not on web)
      - The push-down arrow fix removed the possibility to move the character
         after arrow-down, which I liked much. Fixed. # of possible moves after
         arrow-down also adjustable.
      - Tried compiling with W32 compiler. RTE 216 (which is gpf I believe)
         Is Crt unit. Hello World "Use crt" also gpf's.
      - Removed the first, forgotten bugfix for the hickup problem. Now the
         "feel" of the game is ok. When you push down, it goes down, but you
         have the change to do one more move.
v0.05  (Never used anywere, backup version before movement to 5x5 figures)
      - More Score info
      - Help possiblity
      - Highscores. (also saved to file, and searched in the path)
      - Entering highscores uses inputstr. Size boosts to 1200 lines. Yuck.
      - Most functionality now implemented.
v0.06 (To Peter)
      - 5x5 figures including "The Cross". Worked almost rightaway, but figures
         rotate a bit weird.
      - Better rotation 5x5 system. Only smallest square around figure is
         rotated.
      - Better scores. Incl quadratic (progressive is a better word) scores for
         multiple lines. Now it does matter if you remove 2 x 1 line or 2
         lines at once.
      - Some small other fixes.
      - 'q' is also exit.

v0.07  - Highscore table routines moved to gameunit. Gameunit.pp now required.

----------
SameGame.

Principle copied from KDE/GNOME.

The principle: The playfield is a grid consisting out of 3 colors.
You can mark a certain spot on the playfield, and all adjacent grid-cubes
(horizontally or vertically) will also get marked by the computer.
When you press the left button, and two or more cubes are marked, the marked
cubes will disappear, and the playfield will colapse to the bottom left.
This can be repeated until there are no more agregates. If the field is empty
then, you receive a bonus.

The trick is that the score for each disappearing aggregate of cubes is more
than linear (0.25* quadratic right now) dependant on the number of cubes it
contains.

This means that removing 5 times an aggregate of 2 cubes will result in a far
smaller score than one aggregate of 10 cubes. ( 5*2^2 < 10^2)

TODO:

[none]

BUGS:

- Maybe better algoritm for initial filling of playfield.
- Runtime sizable playfield.

HISTORY:

v0.01 :
       - Initial version.
       - Slightly improved initial algoritm.

v0.02  - Using gameunit. GPM support via API, but whole thing GPF's under Linux,
          but works under Go32V2.
       - Highscores,helpscreen, all small things that come with a decent finishing
         of the concept

