Program version v1.14 of RandomXmas from 29th November 2002 (ca. 347 KB)
Readme_EN.txt: 29th November 2002 (239 lines)	
textures: *.bmp: 05th May 2002 (77,512 bytes)
makefile: 8th August 2002 (73 lines)
Programmer: Stefan Ziegler
Mails to: stefan.ziegler@s1998.tu-chemnitz.de
Website: http://www.tu-chemnitz.de/~zst/weihnachten/weihprogs.html (german)

License


    This program is a game with a partly randomized scenery
    Copyright (C) 2002   Stefan Ziegler
    This file is part of RandomXmas v1.14.

    RandomXmas v1.14 is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    RandomXmas v1.14 is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy (gpl.txt) of the GNU General Public
    License along with RandomXmas v1.14; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

While executing the program, you get the license text by pressing the key 'l'.
E-mail address: stefan.ziegler@s1998.tu-chemnitz.de
For additional and/or more actual information see file COPYING in the root
directory of this package.

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

In both modes:
- Pull-down menu can be reached by pressing the right mouse button. There you
  can choose all functions, you also have with keys.
- 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).
- Moving the mouse with pressed left button you can change the view according
  to choosed axis from the menu "Rotate" / "Translate".
- With key 'l' you can see the GPL, In Menu you choose "Program"->"License".
- With key 'h' you can see this file, or choose "Program"->"Help" in the menu.

File display mode / Highscore:
- You can scroll with 'Page up'/'Page down' or with mouse (mode "Scroll" in 
  menu) by pressing left button and moving vertically.
- Scroll horizontal by cursor key "left" or "right" or moving mouse horizontal
  in mode "Scroll" from menu.
- End of Mode with 'Esc' or "Finish" in the menu.

Game mode:
- 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). 
- Key 'p' switch off/on the points display, menu: "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.
- Switching to Personal view of the player with 'b' and one cursor key after
  to choose the direction.
  Using the mouse: Choose in menu "Person"->"View", then choose direction by 
  moving the mouse with pressed left button.
- New (more) player figures in game with key 'n', switching with 's' to the
  next one you will use. Only the points of the last choosed player will count.
  Using the menu: Choose "Person"->"New" or "Person"->"Next".
- 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 "spiel114.tar.gz" into a directory, decompress it with
   "tar -xvzf spiel114.tar.gz"
2. Compile and Link it by "make spiel"
3. If there were no errors, you'll see a file "bin/spiel" ('spiel' is the 
   german word for 'game').
4. With "bin/spiel" you start the program.
5. With "bin/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 "bin/spiel highscore name" or "bin/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

The names with constant SUMMER=1 begin with "sum_".

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 "bin/texttexturen ".
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 history.txt

2.2 ToDo List

- class main for parts of main program
- Config-File instead of "konstanten.h",
- Use autoconf to compile and link right,
- Loadable fonts (console fonts ?),
- Sound (Soundblaster beeps, playing wave files),
- Network and multiplayer modes (client/server) someday

2.3 Classes

Ebene:		Displays the Levels, uses Feld, Grafikausgabe and Texture
(ebenefeld.h)	

Feld		Trees/Hills, uses Grafikausgabe, Texture and Feldpunkte.
(ebenefeld.h)
Feldpunkte:	Points of Tress/Hills, comes to Geschenke on the way over
(geschenke.h)	Mann, uses Grafikausgabe, subclass of Punkte
Fileviewer:	Shows text files in line mode, uses Grafikausgabe, Doublelist
(highsboard.h)	and Objpointerlist, superclass of Highscoreboard

Geschenke:	Points of a player, uses Grafikausgabe by the superclass
(geschenke.h)   Fileviewer
Grafikausgabe:	Show, Store numbers and texts, GLUT font or own, Calculations
(grafikausg.h)	with the number content is possible

Highscoreboard:	Shows and load/save highscore, uses Doublelist, Objpointerlist
(highsboard.h)	and Grafikausgabe by use of the superclass Fileviewer.

Simplelist 	Base class for list, only number values and next pointer.
(listen.h)
Objpointerlist: list class for any type, stores the pointers of this type,
(listen.h)	Template, subclass of Simplelist.
Doublelist: 	List with pointers to next, previous, begin/end of sub
(listen.h)	(can build hierarchy), subclass of Simplelist.

Mann:		Player, uses Geschenke, Spielraum, Texture.
(mann.h)
Punkte:		base class for Geschenke and Feldpunkte, uses Grafikausgabe.
(geschenke.h)
Spielraum:	Stores the Levels, Textures, central variables, no players
(spielraum.h)	uses Ebene, Texture. Give out the values to other classes.
Texture:	Loads the BMP-Images, init of texture environment
(texture.h)

Main program:	GL base functions, manage Input devices commands (keyboard, 
(spiel.cpp)	mouse, menu), works between all important classes,
		uses Spielraum, Mann, Highscorebaord, Fileviewer.