Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » genesis3d 1.6 und Dev-Cpp

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
01.06.2006, 18:40 Uhr
~co
Gast


hi leute,
ich habe verschiedene fehlermeldungen von irgendwelchen undeclared Functions.
konkretes Problem hab ich, weiß aber nicht ob irgendwer mir helfen kann, und ob ich teile des genesis codes hier drinne bringen kann.
Prob:
immer beim compilieren
undeclared function geEngine_Create()...
Diese funktion is eigentlich mit #define und so erklärt (beispiel auf anfrage s.o.)
also:
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.06.2006, 18:47 Uhr
Spacelord
Hoffnungsloser Fall


Na dann zeig doch mal etwas Code.
Hast du die entsprechenden Header denn alle eingebunden und die Lib mitgelinkt?

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.06.2006, 19:51 Uhr
mike
Pinguinhüpfer
(Operator)



--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.06.2006, 01:05 Uhr
Hans
Library Walker
(Operator)


@mike: Wozu sollte diese Verschiebung jetzt gut sein?
Bei Genesis handelt es sich um eine GameEngine, was nicht unbedingt etwas mit der WinAPI zu tun haben muss. Und das Problem des Fragestellers ist wahrscheinlich, das er irgendwo ein paar #includes vergessen hat. Okay, Genesis-3d gibt es nur für Windoof, aber trotzdem scheint mir das Problem nicht Windows-spezifisch zu sein.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.06.2006, 12:42 Uhr
~co
Gast


ok, in dem Bucgh was ich habe, steht das die dll/lib nur in den Game Ordner muss. Muss ich die denn dann auch über #Include einbinden?

@hans et mike:
stimmt, aber verschiebs uhig in den ANSI bereich.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.06.2006, 13:03 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich denke du solltest dir erstmal die grundlagen von c++ und co ansehen bevor du dich mit einer 3d engine beschäftigst.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.06.2006, 17:37 Uhr
~co
Gast


header sind da, die lib steckt im game ordner. wie klinkt man die denn mit ein??????????
@FloSoft:
Hab ich erfolgreich schon einigermaßen gemacht! Trotzdem Danke für den Tipp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.06.2006, 17:56 Uhr
Spacelord
Hoffnungsloser Fall


Was heißt Header sind da?
Jetzt zeig mal endlich etwas Code und genau Fehlermeldungen.

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.06.2006, 18:49 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von ~co:

Hab ich erfolgreich schon einigermaßen gemacht! Trotzdem Danke für den Tipp

ansehen hilft nichts, durcharbeiten musst du das zeug schon...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.06.2006, 11:14 Uhr
Co



also codes:

C++:
/*
/ Game1.cpp :
/ Nur Anzeige von BSP-Welt (ohne Bewegungen)
/---------------------------------------------------*/


#include <windows.h>
#include "Game1.h"

// Spielobjekt
TGame Game;

// Vorwärtsdeklaration (für Fensterereignisse)
LRESULT CALLBACK WndProc (HWND hWnd,
  UINT iMessage, WPARAM wParam, LPARAM lParam);

// Windows-Hauptfunktion mit Game-Schleife
int WINAPI WinMain
  (HINSTANCE hInstance, HINSTANCE hPrevInstance,
   LPSTR lpCmdLine, int nCmdShow)
{
  // Fensterklasse initialisieren
  WNDCLASS Win;     // Objekt der Fensterklasse
  MSG      msg;     // Aktuelle Meldung
  // Extrabytes für Klassen/Fensterinstanz
  Win.cbClsExtra = 0;
  Win.cbWndExtra = 0;
  // Instanz der Fensterklasse
  Win.hInstance  = hInstance;    
  // Symbol und Cursor der Fensterklasse
  Win.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
  Win.hCursor = LoadCursor(NULL, IDC_ARROW);
  // Hintergrundfarbe (schwarz) und Fensterstil
  Win.hbrBackground =
    (HBRUSH)GetStockObject(BLACK_BRUSH);
  Win.style = CS_HREDRAW | CS_VREDRAW;
  // Verknüpfung mit Ereignis-Routine
  Win.lpfnWndProc = WndProc;
  // Name der Fensterklasse
  Win.lpszClassName = GVersion;
  Win.lpszMenuName = NULL;    // kein Menü
  // Registrierung der Fensterklasse
  RegisterClass (&Win);
  // Fenster erzeugen
  GHandle = CreateWindow (Win.lpszClassName,
    "Genesis3D - [Esc]=Ende", WS_TILED,
    CW_USEDEFAULT, CW_USEDEFAULT, MaxWidth,
    MaxHeight, NULL, NULL, hInstance, NULL);
  if (!GHandle)
  {
    return 0;  // nicht ok
  }
  // Mauszeiger verbergen
  ShowCursor (false);
  // Fenster zeigen und "auffrischen"
  ShowWindow   (GHandle, nCmdShow);
  UpdateWindow (GHandle);
  // Spielinitialisierung
  Game.CreateGame ();
  // Spielmodus auf "Laufen" einstellen
  Game.isRunning = true;
  // Solange Spiel "läuft"
  while (Game.isRunning)
  {
    // evtl. Fenstereignisse abfragen
    while (PeekMessage
      (&msg, NULL, 0, 0, PM_NOREMOVE))
    {
      // Spielverlauf
      Game.RunGame ();
      if (!GetMessage(&msg, NULL, 0, 0))
      {
        Game.isRunning = false;
        break;
      }
      // Ereignisdaten auswerten (lassen)
      TranslateMessage (&msg);
      DispatchMessage  (&msg);
    }
  }
  // Programm-/Spielende
  Game.FreeGame ();
  return 1;  // ok
}

// Verarbeitung der Fensterereignisse
LRESULT CALLBACK WndProc (HWND hWnd,
  UINT iMessage, WPARAM wParam, LPARAM lParam)
{
  // Ereignis auswerten
  switch (iMessage)
  {
    case WM_KEYDOWN:
    {
      switch (wParam)
      {
        case VK_ESCAPE:  // Spielende mit [Esc]-Taste
        {
          MessageBox(NULL,"Halloooooooooooooooooooooooh?","Frage:",48);
          PostMessage(hWnd, WM_QUIT, 0, 0);
        }
      }
    }
    // ansonsten Ereignis an "Default-Handler"
    default:
      return DefWindowProc
        (hWnd, iMessage, wParam, lParam);
  }
  return 0;
}

//---------------------------------------------------

// Spiel initialisieren/"aufbauen"
void TGame::CreateGame (void)
{
  geRect   WorldScreen;    // Anzeigefläche
  char     WorldName[64];  // Name der Welt/Level
  geVFile *WorldFile;      // BSP-Datei (Welt/Level)

  // 3D-Engine initialisieren
  Engine = geEngine_Create (GHandle, GVersion, ".");
  if (!Engine) ExitError
    ("3D-Engine kann nicht gestartet werden!");
  // Anzeigedaten für Engine ausschalten
  geEngine_EnableFrameRateCounter(Engine, GE_FALSE);
  // Treiber auswählen
  SetDriver ();
  // Anzeigefläche festlegen
  WorldScreen.Left   = 0;
  WorldScreen.Right  = MaxWidth  - 1;
  WorldScreen.Top    = 0;
  WorldScreen.Bottom = MaxHeight - 1;
  // Koordinaten-Matrix setzen
  geXForm3d_SetIdentity (&XForm);
  // Kamera initialisieren
  Camera = geCamera_Create (2.0, &WorldScreen);
  if (!Camera) ExitError
    ("Kamera kann nicht installiert werden!");
  // BSP-Datei laden
  strcpy (WorldName, Pfad);
  strcat (WorldName, BSP_Datei);
  WorldFile = geVFile_OpenNewSystem (NULL,
    GE_VFILE_TYPE_DOS, WorldName, NULL,
    GE_VFILE_OPEN_READONLY);
  // Wenn Datei ok, Welt/Level erzeugen
  if (WorldFile)
  {
    World = geWorld_Create(WorldFile);
    geVFile_Close(WorldFile);
  };
  if (!World) ExitError
    ("Welt/Level lässt sich nicht erzeugen!");
  // Welt/Level mit 3D-Engine verknüpfen
  if (!geEngine_AddWorld(Engine, World)) ExitError
    ("Welt/Level lässt sich nicht einbinden!");
}

//---------------------------------------------------

// Spiel "in Szene setzen"
void TGame::RunGame (void)
{
  // Koordinaten und Winkel ausrichten
  geXForm3d_SetIdentity (&XForm);
  geXForm3d_RotateX (&XForm, 0.0);
  geXForm3d_RotateY (&XForm, 0.0);
  geXForm3d_RotateZ (&XForm, 0.0);
  geXForm3d_Translate (&XForm, 0.0, 0.0, 0.0);
  geCamera_SetWorldSpaceXForm (Camera, &XForm);
  // Rendering starten
  if (!geEngine_BeginFrame(Engine, Camera, GE_TRUE))
    ExitError ("BeginFrame gescheitert!");
  // Welt/Level rendern und darstellen
  if (!geEngine_RenderWorld
    (Engine, World, Camera, 0.0)) ExitError
      ("Rendering gescheitert!");
  // Rendering beenden
  if (!geEngine_EndFrame(Engine)) ExitError
    ("EndFrame gescheitert!");
}

//---------------------------------------------------

// Spiel "abbauen"
void TGame::FreeGame (void)
{
  // Kamera, Welt und Engine freigeben
  if (Camera) geCamera_Destroy (&Camera);
  if (World) geWorld_Free (World);
  if (Engine)
  {
     geEngine_ShutdownDriver(Engine);
     geEngine_Free (Engine);
  }
  // Zeiger "nullen"
  Camera = NULL; World = NULL; Engine = NULL;
}

//--------------------------------------------------

// Grafiktreiber/modus wählen/setzen
void TGame::SetDriver (void)
{
  geDriver_System *DriverSystem; long Breite, Hoehe;
  // Treibersystem "einbetten"
  DriverSystem = geEngine_GetDriverSystem (Engine);
  if (!DriverSystem)
    ExitError ("Kein Treibersystem gefunden!");
  // DirectX-Grafiktreiber aufnehmen
  Driver = geDriver_SystemGetNextDriver
    (DriverSystem, NULL);
  if (!Driver) ExitError ("Treiber nicht gefunden!");
  // Suchschleife für Grafikmodus
  DMode = geDriver_GetNextMode (Driver, NULL);
  // Liste nach passendem Modus durchsuchen
  while(true)
  {
    if (!DMode) ExitError ("Falscher Treibermodus!");
    // Auflösungswerte ermitteln
    geDriver_ModeGetWidthHeight
      (DMode, &Breite, &Hoehe);
    // Wenn Maße passen, Schleife verlassen
    if (Breite == MaxWidth && Hoehe == MaxHeight) break;
    // Ansonsten weitersuchen
    DMode = geDriver_GetNextMode (Driver, DMode);
  }
  // Grafiktreiber/modus überprüfen
  if ((!Driver) || (!DMode)) ExitError
    ("Kein passender Grafiktreiber/modus!");
  // Grafiktreiber/modus initialisieren
  if (!geEngine_SetDriverAndMode
    (Engine, Driver, DMode)) ExitError
      ("Grafikinitialisierung fehlgeschlagen!");
}

//--------------------------------------------------

// Spielabbruch bei Fehler
void TGame::ExitError (char *Txt)
{
  // Fehlermeldung anzeigen, Programm abbrechen
  MessageBox (NULL, Txt, "Fehler", 48);
  FreeGame();
  _exit(EXIT_FAILURE);
  
  
}






C++:
//---------------------------------------------------
// Game1.h :
// Header mit Klassendeklaration von TGame
//---------------------------------------------------

// #define _BCB  // nur für Borland C++Builder

#include <windows1.h>
#include "include\Genesis.h"

class TGame
{
public:
  // Eigenschaften
  geEngine      *Engine;     // 3D-Engine
  geWorld       *World;      // World/Level
  geCamera      *Camera;     // Kamera/Betrachter
  geDriver      *Driver;     // Grafiktreiber
  geDriver_Mode *DMode;      // Grafikmodus
  geXForm3d      XForm;      // Welt-Matrix
  bool           isRunning;  // Spielmodus an/aus
  // Methoden
  void CreateGame (void);
  void RunGame    (void);
  void FreeGame   (void);
  void SetDriver  (void);
  void ExitError  (char *Txt);
} ;

// Pfad- und Dateinamen
const char *Pfad      = ".\\levels\\";
const char *BSP_Datei = "World0.bsp";
const char *GVersion  = "GPlay1";
// Globale Konstanten
const int MaxWidth    = 1280;   // Max. Screenbreite
const int MaxHeight   = 1024;   // Max. Screenhöhe

// Globalvariable
HWND GHandle;      // Handle des "Spielfensters"




--
Wer später stirbt, hat mehr vom Leben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: