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_zst@gmx.de Webseite: http://www.stefanziegler-online.de/weihnachten/weihprogs.html (English version in readme_EN.txt) Lizenz/License --- 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_zst@gmx.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 fuer 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" im gleichen Verzeichnis 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.