JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

DirectX Spiel wird sofort beendet

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Rodney
Junior JLI'ler



Anmeldedatum: 24.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 27.09.2003, 13:17    Titel: DirectX Spiel wird sofort beendet Antworten mit Zitat

Hallo Leute,
ich stehe wieder vor einem echten Problem,
ich progge grade an dem Spiel und auf einmal kommt wenn man es testen will einfach nur kurz ein schwarzer Bildschirm (directX eben) und dann wird es sofort beendet, keine Fehlermeldung keine Warnung, nicht.

Woran könnte das liegen???

Mein Main-Code:

Code:
#include "DirectDrawClass.h"
#include "DXAudioClass.h"
#include "global.h"
#include "varis.h"
#include <stdio.h>
#include <windows.h>
#include "Objektklassen.cpp"

#define IMAGE_FILE "..\\..\\media\\jli.bmp"
#define Bild "Bild.bmp"
#define Bild2 "Bild2.bmp"


// Prototypen

// Anwendungsfenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance);

 
Objekt Objekte;

LPDIRECTDRAWSURFACE7 lpDDSurface = NULL;
LPDIRECTDRAWSURFACE7 Bildsurface = NULL;
LPDIRECTDRAWSURFACE7 Waffe = NULL;
LPDIRECTDRAWSURFACE7 Boot = NULL;

// Ausgabefunktion
void Spielschleife(void);
void Render(void);

// Das Fensterhandle
HWND hWnd = 0;

// DirectDrawClass-Objekt
DirectDrawClass DDrawObjekt;
DirectXAudio DXAudio;
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT uMsg,WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT paintStruct;

switch (uMsg)
{
case WM_PAINT:
hDC=BeginPaint(hwnd,&paintStruct);
if (hDC != NULL)
EndPaint(hwnd,&paintStruct);
break;
   
case WM_KEYDOWN:
         switch(wParam)
         {
            case VK_ESCAPE:                     
                    PostQuitMessage(0);
                break;

            case VK_LEFT:
             
               break;
            }
        break;
         
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
         
               DXAudio.PlaySoundEffect("schrot.wav");
         break;

         case WM_RBUTTONDOWN:

               // Nachladen
            break;

         case WM_MOUSEMOVE:

            MausX = LOWORD(lParam)+8;
                MausY = HIWORD(lParam)+8;
               break;

default :
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
// Windows main-Funktion
int WINAPI WinMain(HINSTANCE hInstance,      // Handle der Programminstanz
                   HINSTANCE hPrevInstance,  // Handle der letzten Instanz
                   LPSTR lpCmdLine,          // Kommandozeile
                   int nCmdShow)             // Art wie das Fenster angezeigt werden soll
{   

   
   

 
   
   
    // Fenster erzeugen und Handle speichern
    hWnd = CreateMainWindow(hInstance);

    // Wenn der Rückgabewert 0 ist, ist ein Fehler aufgetreten
    if(0 == hWnd)
    {
        return Error("Fehler beim Erzeugen des Fenster");
    }


    DDrawObjekt.Init(hWnd);
   DXAudio.Init();
   DXAudio.AddSound("schrot.wav");

   
// Bilder in Surface kopieren (Surface erstellen)
    lpDDSurface = DDrawObjekt.CreateSurfaceFromBitmap(Bild,0,0);
   Bildsurface = DDrawObjekt.CreateSurfaceFromBitmap(Bild2,0,0);
   Waffe = DDrawObjekt.CreateSurfaceFromBitmap("schrotflinte.bmp",0,0);
   Boot = DDrawObjekt.CreateSurfaceFromBitmap("Boot.bmp",0,0);
   // Struktur, in der Informationen zur Nachricht gespeichert werden
    MSG msg;
    DDCOLORKEY ColorKey;
   ColorKey.dwColorSpaceLowValue = RGB(201,101,201);
   ColorKey.dwColorSpaceHighValue = RGB(201,101,201);
   Bildsurface->SetColorKey(DDCKEY_SRCBLT,&ColorKey);
   lpDDSurface->SetColorKey(DDCKEY_SRCBLT,&ColorKey);
      Waffe->SetColorKey(DDCKEY_SRCBLT,&ColorKey);
      Boot->SetColorKey(DDCKEY_SRCBLT,&ColorKey);
     Abstand = Frequenz / 30;
   QueryPerformanceCounter((LARGE_INTEGER*)&AktuelleZeit);
   NaechstesFrame = AktuelleZeit + Abstand;
    // Diese Schleife läuft bis WM_QUIT gesendet wird
  while(TRUE)
   {   
        if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
        {
            if(msg.message == WM_QUIT)
            {
                break;
            }
   
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
         // wenn keine Nachricht vorliegt,
        else
        {
   BootX = BootX + 3;
   if (BootX > 960)
      BootX = 0;
   
      
           
         

        }
    }

    if(lpDDSurface)
    {
        lpDDSurface->Release();
        lpDDSurface = NULL;
    }
if(Bildsurface)
    {
        Bildsurface->Release();
        Bildsurface = NULL;
    }

    // Rückgabewert an Windows
    return 0;
}


HWND CreateMainWindow(HINSTANCE hInstance)
{
    WNDCLASSEX wndClass;                                   // WNDCLASSEX Struktur
 
    // Struktur initialisieren
    wndClass.cbSize        = sizeof(WNDCLASSEX);           // Größe angeben (nie vergessen!)
    wndClass.style         = CS_DBLCLKS | CS_OWNDC |
                             CS_HREDRAW | CS_VREDRAW;      // Standard Stile
    wndClass.lpfnWndProc   = WindowFunc;                   // Die Callback Funktion angeben

    wndClass.cbClsExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
    wndClass.cbWndExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
    wndClass.hInstance     = hInstance;                    // Anwendungsinstanz

    wndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); // Schwarzer Pinsel
    wndClass.hCursor       = LoadCursorFromFile("Cursor1.cur");  // Normaler Cursor
    wndClass.lpszMenuName  = NULL;                         // Das Fenster hat kein Menü
    wndClass.lpszClassName = "WindowClass";                // Der Name der Klasse
    wndClass.hIcon         = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo
    wndClass.hIconSm       = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo

    RegisterClassEx(&wndClass);

    return CreateWindowEx(NULL,                   // Keine erweiterten Stile nutzen
                          "WindowClass",          // Klassenname
                          "Bibershooter",              // Fenstertitel
                          WS_POPUP |              // Fenster
                          WS_VISIBLE,             // Eigenschaften
                          0, 0,                   // Anfangsposition
                          SCR_WIDTH, SCR_HEIGHT,  // und Größe  des Fensters
                          NULL,                   // Handle des Elternfensters
                          NULL,                   // Handle des Menüs
                          hInstance,              // Anwendungsinstanz
                          NULL);                  // wird nicht benötigt
}
void Render(void)
{
    // Hintergrund löschen
    DDrawObjekt.Clear(0);     
    // Surface in den Hintergrund Blitten
    DDrawObjekt.GetBuffer()->BltFast(0,0,lpDDSurface,NULL,DDBLTFAST_SRCCOLORKEY); 

    //Waffenberechnung

x = MausX;
y = MausY;
   if (x < 150)
      x = 150;
   if (x > 820)
      x = 820;
   

y1 = MausY / 10;


   RECT r = { 0, 0, 136, 150-y1};


     DDrawObjekt.GetBuffer()->BltFast(x-34,618+y1,Waffe,&r,DDBLTFAST_SRCCOLORKEY); 
    DDrawObjekt.GetBuffer()->BltFast(BootX,0,Boot,NULL,DDBLTFAST_SRCCOLORKEY); 
   
   // primäre Oberfläche anzeigen
    DDrawObjekt.Flip();   
}





DANKE IM VORRAUS!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 27.09.2003, 17:43    Titel: Antworten mit Zitat

Normalerweise liegt das daran das er was nicht findet. Also Bilder, Sounds, Musik,... oder so. Überprüf das mal.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 27.09.2003, 18:38    Titel: Antworten mit Zitat

Stimmt. Am besten stepst du den Code mal durch um die Stelle zu finden wo er sich beendet.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum