 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Rodney Junior JLI'ler
Anmeldedatum: 24.09.2003 Beiträge: 60
Medaillen: Keine
|
Verfasst am: 27.09.2003, 13:17 Titel: DirectX Spiel wird sofort beendet |
|
|
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 |
|
 |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 27.09.2003, 17:43 Titel: |
|
|
Normalerweise liegt das daran das er was nicht findet. Also Bilder, Sounds, Musik,... oder so. Überprüf das mal. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 27.09.2003, 18:38 Titel: |
|
|
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 |
|
 |
|
|
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
|