Program version v1.13 of RandomXmas from 07th May 2002 (ca. 225 KB)
Readme_EN.txt: 07th May 2002 (186 lines)	highscore.txt (19 lines)
textures: *.bmp: 05th May 2002 (77,512 bytes)
makefile: 16th April 2002 (51 lines)
Programmer: Stefan Ziegler
Mails to: stefan.ziegler@s1998.tu-chemnitz.de
Website: http://www.tu-chemnitz.de/~zst/weihnachten/weihprogs.html (german)

			License

/* RandomXmas v1.13 for Christmas 2001
 * Free Copying, only with all belonging program files, Makefile, Readme.txt,
 * and tex*.bmp. Changes are possible, but republishing only with all original
 * files (to have an original if there will be any mistakes in changes).
 * I don't want any software patents on parts or all of the program.*/

			Contents
1. Manuals

1.1 Key and mouse commands
1.2 Game Description
1.3 Usage
1.4 Textures

2. Programming

2.1 History (only in German)
2.2 ToDo-List
2.3 Classes

			1. Manuals
			==========

			1.1 Key and mouse commands

- Moving the player with the mouse: Moving the mouse with pressed left button.
  The player follows the mouse direction. Preparing for jump by pressing the
  middle mouse button. According to the speed of the program, the mouse has
  a different sensibility (adjustable in "konstanten.h" MOUSE_SENSE: smaller
  value increases the sensibility). 
- Keys 'x', 'y', 'z' rotates/moves the play ground in the belonging axis with
  30 degrees in positive direction.
- Keys 'X', 'Y', 'Z' rotates/moves the play ground in same way, but in 
  negative direction.
- Key 'i' returns to inital state in the actual mode
- Keys 'd', 'v', 'r' changes mode to Rotating('d'), Moving('v') and Window
  Resize/Reshape('r' only X/Y-Axis).
- Key 'p' switch off/on the points display
- With key 'Esc', you can leave the game before end, with 0 points.
- Moving the player with cursor keys (or mouse).
- With key 'End' preparing for jump, doing it with any cursor key.
- When the Highscore is displayed, you can scroll with 'Page up'/'Page down'
  or with mouse (Mode "Rollen" in Menu) by pressing left button and moving
  vertically.
- Switching to Personal view of the player with 'b' and one cursor key after
  to choose the direction.
- New (more) player figures in game with key 'n', switching with 's' to the
  one you will use. Only the points of the last choosed player will count.
- Pull-down menu can be reached by pressing the right mouse button. There you
  can choose all functions, you also have with keys.
- NOT TESTED: Joystick to let move/jump the player (GLUT API 4 or more
  and Windows OS), seem to be wrong implemented by me.
The size of the window is variable, but should stay square, else the 
play ground would be turned around in extreme (not square) situations.

			1.2 Game description

Collect points bolow (random values) and above (random, but same
letters -> same change) of the trees (try to move or jump into it).
In some cases, the maximum point value (right one) can change(not random).
  In moving into the bigger hills, you change the level, in some cases you
can also loose ("konstanten.h" chance to loose is 1 of CHVERLIEREN-value). In
smaller hills, nothing happens. The letters above the hills have the same 
meaning as above the trees.
  If you have reached the maximum point value (the right one of the yellow
and blue values), you can't change the level one more time, moving into a 
hill will end the game.
  Then you will see the TopTen (Highscore) and below the points, you have
got (in lost games -1, breaked games 0), with date, time and your name
(if written as command argument). With key 'Esc', you leave the program.

			1.3 Usage

You need the Libraries GL, GLU, GLUT and some standard libraries.
Download notes: www.opengl.org -> Downloads
Glut: http://www.opengl.org/developers/documentation/glut.html
glut.dll for Windows here: http://www.xmission.com/~nate/glut.html
Compiling hints here: http://www.lighthouse3d.com/opengl/glut/

Variable DETAILS in "konstanten.h": Value 10 is default, this means 100 
polygons each sphere and 50 polygons each cylinders.

1. Copy "spiel113.tar.gz" into a directory, decompress it with
   "tar -xvzf spiel113.tar.gz"
2. Compile and Link it by "make spiel"
3. If there were no errors, you'll see a file "spiel" ('spiel' is the 
   german word for 'game').
4. With "./spiel" you start the program.
5. With "./spiel highscore", the point values will be saved after the game in
   the file "highscore". The file can be in any size (but you should have
   enough memory space), each line 100 characters will be read (else wrapped).
   After sorting in the new point value, the lines will be wrote back.
6. With "./spiel highscore name" or "./spiel highscore first_name surname"
   the name will be written to the highscore file.
7. The best way: put a line like in 6th point in a script/batch file and 
   start the game with it.

			1.4 Textures

As textures, you can use every BMP image file. These will be mapped on the
belonging object (resized, stretched) and displayed.
Because of the stretching, the image won't look always like the original one.
On the ground, the image only will be resized.

Pre-setted file names and belonging object:
in the directory "textures/"
- "texebene.bmp"	for texture on the play ground
- "texhuegel.bmp"	for texture on the hills
- "texbaum.bmp"		for texture on the trees
- "texcap.bmp"		for texture on the cap of the player
- "texhead.bmp"		for texture on the head of the player
- "texbody.bmp"		for texture on the body of the player
- "texshoes.bmp"	for texture on the shoes of the player

I have included the following 10 images (made with "xfig" and "xv"):
  file name		recommended usage (by link or copy)
- "baum.bmp"		tree texture for trees
- "beton.bmp"		concrete texture for hills/play ground
- "colorgrid.bmp"	coloured grid for testing on round surfaces
- "eis.bmp"		ice texture for hills/play ground
- "erde.bmp"		soil texture for hills/play ground
- "gesicht.bmp"		face texture for head of the player
- "holz.bmp"		wood texture for trees/hills/play ground
- "sand.bmp"		(beach) sand texture for hills/play ground
- "schnee.bmp"		snow texture for hills/play ground
- "stein.bmp"		stone/rock texture for hills/play ground

To test, if the image is loadable, you can use "testtexturen" 
(make testtexturen). Start it with "texttexturen <image_file.bmp>".
The loaded image can be rotated and translated like in "spiel" (only with 
keys).
You not must have all texture files, same can be missing. In this case, the
game looks like in version 1.11 . There won't occure an error on program
start.
You can use image files in any size, if you have enough memory space for it
(4 bytes each pixel and some more). Big images need more time to load an will
be made smaller to match on the objects.

			2. Programming
			==============

			2.1 History:

(only in german)
(look in the german file "readme.txt")

			2.2 ToDo List

- Version for other time/season than christmas (colours, materials),
- gluLookat Values only on one place
- class main for parts of main program
- Config-File instead of "konstanten.h",
- Use autoconf to compile and link right,
- Publishing under GPL 2.0 (not for versions before 1.14),
- Loadable fonts (console fonts ?),
- Sound (Soundblaster beeps, playing wave files),
- Network and multiplayer modes (client/server) someday

			2.3 Classes

Ebene	(ebenefeld.h)	Levels, uses Feld, Grafikausgabe und Texture
Feld	(ebenefeld.h)	Trees/Hills, uses Grafikausgabe, Texture
Geschenke		Points of a player, uses Grafikausgabe
Grafikausgabe		Show, Store numbers and texts, GLUT font or own
(grafikausg.h)
Highscoreboard:		Shows and save highscore, uses Doublelist, Stringlist
(highsboard.h)		and Grafikausgabe
Simplelist (listen.h)	Base class of list, only number values and next pointer
Stringlist (listen.h)	List class for Strings (char[])
Doublelist (listen.h)	List with pointers to next, previous, begin/end of sub
Mann	(mann.h)	Player, uses Geschenke, Spielraum, Texture
Spielraum 		Stores the Levels, Textures, central variables, no
(spielraum.h)		players; uses Ebene, Texture
Texture	(texture.h)	Loads the BMP-Images, init of texture environment
Main program		GL base functions, manage Input devices commands;
(spiel.cpp)		uses Spielraum, Mann, Highscorebaord
