Programm-Version v1.14 von RandomXmas vom 29.11.2002 (ca. 347 KB)
Readme.txt: 29.11.2002 (247 Zeilen)
Texturen: *.bmp: 05.05.2002 (77.512 Bytes)
makefile: 08.08.2002 (73 Zeilen)
Programmierer: Stefan Ziegler
Mails an:
stefan.ziegler@s1998.tu-chemnitz.de
Webseite:
http://www.tu-chemnitz.de/~zst/weihnachten/weihprogs.html
(English version in readme_EN.html)
--- Deutsch -------------
Hinweise: siehe Datei COPYING
--- English -------------
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.
-------------------------
Inhalt:
1. Anleitungen
1.1 Bedienung
1.2 Spielbeschreibung
1.3 Benutzung
1.4 Texturen
2. Programmierung
2.1 Geschichte des Programms
2.2 Geplante Verbesserungen
2.3 Klassen
1. Anleitungen
1.1 Bedienung:
In beiden Modi:
- Menue mit rechter Maustaste erreichbar, alle Tastaturfunktionen abgebildet.
- Tasten 'x', 'y', 'z' drehen Spielfeld auf der entsprechenden Achse,
je um 30 Grad in positiver Richtung.
- Tasten 'X', 'Y', 'Z' drehen Spielfeld entsprechend in negativer Richtung.
- Mit Taste 'i' drehen sie das Spielfeld wieder in die Ausgangsrichtung.
- Mit 'd', 'v', 'r' schalten Sie zwischen (D)rehen, (V)erschieben und
(R)eshape (Fenstergroesse) um.
Bei allen funktioniert 'X'/'x', 'Y', 'y', 'i', beim Verschieben/Drehen
natuerlich auch 'z'/'Z'.
- Durch Verschieben der Maus mit gedrueckter linker Maustaste im Fenster
erreicht man auch Ansichtsveraenderungen entsprechend dem gewaehlten
Koordinatensystem im Menuepunkt "Drehen" oder "Verschieben"
- Mit Taste 'l' wird die GPL angezeigt. Im Menue "Programm"->"Lizenz".
- Mit Taste 'h' wird diese Datei angezeigt, per Menue "Programm"->"Hilfe".
Dateianzeige-Modus / Highscore:
- Scrollen mit 'Bild hoch' (Page Up) oder 'Bild herunter' (Page Down)
oder mit Maus("Rollen" im Menue) mit gedrueckter linker Maustaste Maus
hoch-/herunterziehen.
- Mit Cursortasten 'Links' bzw. 'Rechts' Zeilen nach links bzw. rechts
verschieben oder mit Maus (im "Rollen"-Modus des Menues) Maus mit gedrueckter
linker Maustaste waagerecht ziehen.
- Ende des Modus mit 'Esc' bzw. "Beenden" im Menue.
Spiel-Modus:
- Spielfigur bewegen auch mit Maus: Taste links gedrueckt halten und Maus
verschieben. Spielfigur bewegt sich dann in diese Richtung. Aufladen fuer
Sprung mit mittlerer Maustaste. Je nach Programmgeschwindigkeit ist die
Bewegung per Maus unterschiedlich sensibel, (einstellbar in "konstanten.h").
- Taste 'p' schaltet Punktanzeige an/aus, Menue: "Punktanzeige".
- 'Esc'-Taste beendet Spiel vorzeitig mit Punktzahl 0.
- Spielfigur bewegen Sie mit Cursortasten (oder Maus).
- Mit Taste 'Ende' aufladen fuer Sprung, ausgefuehrt mit Cursortasten.
- Umschalten auf Blick von Spielfigur/von aussen mit 'b'. ausgefuehrt nach
einer Bewegung der Spielfigur.
Mit Maus: Im Menue "Mann"->"Blick" und dann in die Richtung mit Maus ziehen
mit gedrueckter linker Maustaste.
- Weitere Spielfiguren mit 'n', Auswaehlen der Figur mit 's'. Es zaehlen die
Punkte der Figur, die als letztes im Spiel benutzt wurde.
Per Maus im Untermenue "Mann" auch mit "Neu" / "Naechster".
- Theoretisch auch mit Joystick (ab GLUT-API 4, nur mit Windows, nicht
getestet).
Die Groesse des Fensters ist variabel, sollte aber quadratisch gehalten
werden, sonst verdreht sich in Extremfaellen das Spielfeld nach unten.
1.2. Spielbeschreibung:
Sammeln Sie Punkte unter (zufaellige Werte) und ueber (zufaellig, aber
gleicher Buchstabe(nur noch 6 verschiedene) - gleiche Veraenderung)
den Baeumen (hineinlaufen/springen).
In einigen Faellen aendert sich dabei die Maximalpunktzahl (nicht zufaellig).
Mit groesseren Huegeln wechseln sie in andere Ebenen. In einigen Faellen
verlieren sie aber auch(siehe Konstanten). Bei kleineren passiert nichts. Fuer
die Buchstaben darueber gilt das gleiche wie bei den Baeumen.
Wenn die Maximalpunktzahl erreicht ist (rechts von den Punkten), dann
gehen sie in einen Huegel und das Spiel ist beendet (oder mit 'Esc').
Dann kommt die TopTen und darunter ihre Punktzahl (bei verlorenen -1,
abgebrochenen Spielen 0) mit Datum, Uhrzeit und Namen (soweit angegeben).
Mit 'Esc'-Taste beendet sich dann das Programm.
1.3. Benutzung:
Braucht Libraries GL, GLU, GLUT und andere Standardbibliotheken.
Download-Hinweise bei www.opengl.org -
Downloads
Glut:
http://www.opengl.org/developers/documentation/glut.html
glut.dll fuer Windows bei
http://www.xmission.com/~nate/glut.html
Uebersetzungs-Hinweise bei:
http://www.lighthouse3d.com/opengl/glut/
Variable DETAILS in konstanten.h: 10 ist Standard, d.h. 100 Polygone je Kugel,
50 Polygone je Kegel(-stumpf).
1. spiel114.tar.gz in ein Verzeichnis kopieren, auspacken mit
'tar -xzvf spiel114.tar.gz'
2. Programm uebersetzen mit 'make spiel'
3. Bei fehlerfreier Uebersetzung ist eine Datei 'bin/spiel' angelegt worden.
4. Mit 'bin/spiel' starten sie das Programm
5. Mit 'bin/spiel highscore' wird das Punktergebnis in dieses File eingetragen.
Die Filelaenge ist beliebig (sollte in den Speicher passen), je Zeile
werden 100 Zeichen gelesen (sonst Umbruch) und nach Einordnung der
erspielten Punkte die Zeilen zurueckgeschrieben.
6. Mit 'bin/spiel highscore Name' oder 'bin/spiel highscore Vorname Nachname'
wird der Name ins Highscorefile mit eingetragen.
7. Also am besten Variante 6 in Script/Batch-Datei stecken und damit starten.
1.4 Texturen
Als Texturen koennen beliebige BMP-Dateien genutzt werden. Diese werden dann
auf das entsprechende Objekt draufgelegt(gestreckt/gezerrt) und dargestellt.
Durch die erwaehnte Zerrung sieht das Bild dann nicht immer so aus wie
erwartet. Auf der Ebene wird es nur verkleinert/vergroessert.
Voreingestellt sind folgende Dateinamen entsprechend ihrer Bestimmung:
Im Verzeichnis textures/
- "texebene.bmp" Dateiname fuer Textur auf Ebene
- "texhuegel.bmp" Dateiname fuer Textur auf Huegel
- "texbaum.bmp" Dateiname fuer Textur auf Baeumen
- "texcap.bmp" Dateiname fuer Textur auf Muetze des Weihnachtsmannes
- "texhead.bmp" Dateiname fuer Textur auf Kopf des Weihnachtsmannes
- "texbody.bmp" Dateiname fuer Textur auf Mantel des Weihnachtsmannes
- "texshoes.bmp" Dateiname fuer Textur auf Schuhen
Die Namen bei Konstante SUMMER=1 beginnen mit "sum_".
Mitgeliefert wurden folgende 10 Bilder (erstellt mit 'xfig' und 'xv'):
Dateiname empfohlene Nutzung (per Link/Kopieren)
- "baum.bmp" Baum-Textur fuer Baum
- "beton.bmp" Beton-Textur fuer Huegel/Ebene
- "colorgrid.bmp" Farbiges Gitter, zum Testen auf runden Oberflaechen
- "eis.bmp" Eis-Textur fuer Huegel/Ebene
- "erde.bmp" Erd-Textur fuer Huegel/Ebene
- "gesicht.bmp" Gesicht fuer Kopf der Spielfigur
- "holz.bmp" Holz-Textur fuer Baum/Huegel/Ebene
- "sand.bmp" Sand-Textur fuer Huegel/Ebene
- "schnee.bmp" Schnee-Textur fuer Huegel/Ebene
- "stein.bmp" Stein-Textur fuer Huegel/Ebene
Zum Testen, ob das Bild im Programm ladbar ist, kann man "testtexturen"
verwenden (make testtexturen). Starten mit "bin/testtexturen "
Das geladene Bild kann man dann genauso drehen und verschieben wie die Ebene
oder das Highscorefile im Spiel (nur mit Tastatur).
Es muessen nicht alle Dateien vorhanden sein! Wenn eine fehlt, sieht die
Darstellung genauso aus wie in Version 1.11 . Es entsteht kein Programmfehler.
Die Groesse ist beliebig, sollte aber in den Speicher passen(4 Byte pro Pixel
und Zusatzinfos). Bei grossen Bildern dauert aber das Laden am Programmstart
laenger und diese werden meist stark verkleinert, damit sie "passen".
2. Programmierung
2.1 Geschichte des Programms
siehe Datei history.txt
2.2 Geplante Verbesserungen
- Klasse main ?
- Konfigurationsfile statt "konstanten.h",
- autoconf - Uebersetzung,
- ladbare Schriften (Konsolefonts ?),
- Sound (Soundblaster-Beeps und Wavefile-Abspielung),
- Netzwerk- und Mehrspieler-Modus irgendwann
2.3 Klassen
Ebene: Darstellung eines Levels, nutzt Feld, Grafikausgabe und
(ebenefeld.h) Texture.
Feld: Darstellung eines Gegenstandes(Baum/Huegel),
(ebenefeld.h) nutzt Grafikausgabe, Texture und Feldpunkte.
Feldpunkte: Punkte eines Spielfeldes, Weitergabe dieser an Geschenke ueber
(geschenke.h) Mann, nutzt Grafikausgabe, abgeleitet von Punkte.
Fileviewer: Zur Anzeige von Textdateien im Zeilenmodus, nutzt Grafikausgabe,
(highsboard.h) Doublelist und Objpointerlist, Vater von Highscoreboard.
Geschenke: Punkte eines Spielers, Darstellung dieser, nutzt Grafikausgabe
(geschenke.h) mithilfe der Vaterklasse Punkte.
Grafikausgabe: Darstellung/Aufbewahrung von Zahlen, char[]-Zeichenketten
(grafikausg.h) mit eigener oder GLUT-Schrift, Berechnungen mit Zahleninhalt
moeglich
Highscoreboard: Darstellung der Highscore-Datei, Einlesen und Schreiben dieser,
(highsboard.h) nutzt Doublelist, Objpointerlist und Grafikausgabe mit Hilfe der
Vaterklasse Fileviewer.
Simplelist: Grundklasse der Listen, einfach verkettet, fuer Zahlen
(listen.h)
Objpointerlist: Listenklasse fuer beliebige Typen, bewahrt Zeiger dieser auf,
(listen.h) abgeleitet von Simplelist, Template.
Doublelist: Doppeltverkettete Liste fuer Listenhierarchie (nimmt Listen
(listen.h) auf), abgeleitet von Simplelist.
Mann: Darstellung, Verwaltung eines Spielers, nutzt Geschenke,
(mann.h) Spielraum und Texture
Punkte: Grundklasse fuer Geschenke und Feldpunkte, nutzt Grafikausgabe.
(geschenke.h)
Spielraum: Aufnahme aller noetigen Variablen eines Spiels, ohne Spieler,
(spielraum.h) Nutzung von Ebene, Texture. Verwaltung und Weitergabe der
Werte an nutzende Klassen/Programme.
Texture: Laden einer Textur aus BMP-Datei, Darstellung/Nutzen dieser.
(texture.h)
Haupt-Programm: nutzt Spielraum, Mann, Highscoreboard, Fileviewer.
(spiel.cpp) Zusammenspiel aller wichtigen Klassen geregelt,
GL-Grundfunktionen, Bedienung Tastatur/Maus/Menue.