Il ne s'agit pas d'un didacticiel détaillé sur DirectX, mais d'une explication sur la façon d'utiliser DELPHI pour développer des jeux DirectX. Parce que les livres sur DirectX, qu'ils soient en ligne ou en librairie, les décrivent essentiellement en C++ ou en VC. Très peu, le but de cet article est de permettre aux lecteurs d'apprendre à utiliser les informations existantes pour apprendre et développer des jeux.
Cet article s'adresse aux lecteurs ayant une certaine compréhension de DirectX mais ne sachant pas comment développer des jeux DirectX sous DELPHI.
Documents de référence recommandés :
<<Guide de programmation de jeux>>,<<DirectX Chinese Collection>>
DELPHI peut-il développer des jeux ?
La réponse est bien sûr : de nombreuses personnes sur de nombreux forums de jeux en ligne pensent que seuls le C++ ou le VC peuvent être utilisés pour développer des jeux. DELPHI ne convient qu'aux applications de bureau. Il est conseillé aux personnes ayant ces vues de démonter et de regarder le code compilé par DELPHI et VC, ou de regarder le jeu "Age of Miracles" qui a été développé avec DELPHI. et les graphismes sont meilleurs qu'Age of Empires.DELP HI est entièrement orienté objet, peut intégrer un assemblage et prend en charge les instructions MMX (les registres MMX dans DELPHI sont mm0-mm7). En fait, quel que soit VC, DELPHI n'est qu'un outil. tant que vous avez de bonnes compétences internes, vous pouvez en faire un bon programme ou un bon jeu.
Préparation:
Il existe actuellement deux options pour développer des jeux DirectX avec DELPHI. L'une consiste à utiliser la déclaration DirectX de Jedi (http://www.delphi-jedi.org). L'autre consiste à utiliser les contrôles DelphiX. Ici, nous allons utiliser DirectX de Jedi. Le package de déclaration X est utilisé pour développer des jeux DirectX. La raison pour laquelle j'ai choisi le package de déclaration DirectX est qu'il utilise la méthode SDK pour développer des jeux. Si j'ai besoin de passer à d'autres langages à l'avenir, je n'ai pas à le faire. réapprendre DirectX. Quant au contrôle DelphiX, je ne l'ai jamais utilisé et je n'ai pas mon mot à dire. Mais je n'utilise pas de produits japonais ;-)
Accédez d'abord à l'adresse suivante pour télécharger le package de déclaration DirectX (http://kuga.51.net/download/files/directx7.rar) et extrayez-le dans votre répertoire personnalisé. Sélectionnez ensuite Outils->Options d'environnement dans DELPHI, Sélectionnez l'onglet Bibliothèque dans la fenêtre ouverte et cliquez sur le bouton derrière Chemin de la bibliothèque. Une fenêtre Répertoires apparaîtra, puis cliquez sur Éléments grisés indiqués comme non valides. sur le côté droit du chemin. Sélectionnez le répertoire dans lequel la déclaration DirectX est extraite. Cliquez ensuite sur le bouton AJOUTER pour ajouter le répertoire où se trouve la déclaration DirectX au chemin de la bibliothèque de DELPHI. Vous pouvez directement référencer l'unité dans la déclaration DirectX. dans les utilisations. Cette déclaration Le package est livré avec plusieurs exemples qui peuvent être utilisés comme référence pour commencer.
Expérience de débogage :
Lors du développement d'un jeu en plein écran, il est préférable de définir la résolution de l'écran lors de la conception sur la même résolution que celle du jeu pour éviter d'endommager l'écran en changeant fréquemment de résolution pendant le débogage.
Il est préférable de développer des jeux en plein écran sous WIN2000/XP. Sinon, lors du débogage sous 98, le jeu entrera dans une boucle infinie ou une exception se produira lorsqu'un jeu en plein écran entrera dans une boucle infinie. sous 2000/XP, vous pouvez appuyer sur ALT+ TAB pour passer à DELPHI (mais pour le moment Étant donné que les jeux DirectX sont en plein écran et occupent l'écran, il n'y aura aucun changement à l'écran, vous devez donc essayer plusieurs fois.) Appuyez sur CTRL+F2 pour terminer le jeu. Si cela est anormal, passez à DELPHI et. appuyez d'abord sur Entrée, puis appuyez sur CTRL+F2 pour terminer le jeu de débogage.
Avis:
Si vous utilisez DELPHI7, veuillez remplacer la ligne 145 {$IFDEF VER140} dans DirectDraw.pas par {$IFDEF VER150} pour une compilation et une interprétation normales.
Il est préférable d'utiliser l'API pour créer la fenêtre principale du jeu plutôt que d'utiliser la classe TFORM de VCL.
Jetons d'abord un coup d'œil à l'extrait de code qui initialise un objet DirectDraw à l'aide de C++ et DELPHI.
Version C++ :
BOOL InitDDraw( )
{
LPDIRECTDRAW7 lpDD; //Pointeur vers l'objet DirectDraw
if (DirectDrawCreateEx (NULL, (void **)&lpDD, IID_IDirectDraw7, NULL) != DD_OK )
renvoie FALSE ; {Créer un objet DirectDraw}
{La méthode if (xxx != DD_OK) est utilisée pour la détection des erreurs, qui est la méthode la plus couramment utilisée}
si (lpDD->SetCoOperativeLevel(hwnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN) != DD_OK )
return FALSE ; {Définir le niveau de contrôle DirectDraw}
si ( lpDD->SetDisplayMode( 640, 480, 32, 0, DDSDM_STANDARDVGAMODE ) != DD_OK )
return FALSE ; {définir le mode d'affichage}
}
Version DELPHI :
fonction TForm1.InitDirectDraw : booléen ;
var
lpDD : IDirectDraw7 ;
commencer
Résultat := False ; {Supposer que l'initialisation a échoué}
{Créer un objet DirectDraw}
si DirectDrawCreateEx(nil, lpDD, IID_IDIRECTDRAW7, nil) <> DD_OK alors
sortie;
{Définissez le niveau de contrôle de DirectDraw. Le premier paramètre est le handle de la fenêtre DirectDraw. Ici, le niveau de contrôle est défini sur plein écran plus mode exclusif}.
si lpDD.SetCooperativeLevel(Hwnd, DDSCL_EXCLUSIVE ou DDSCL_FULLSCREEN) <> DD_OK alors
sortie;
{Définissez le mode d'affichage. Les premier et deuxième paramètres sont la résolution. Le troisième paramètre est utilisé pour définir le nombre de chiffres de couleur dans le mode d'affichage.
Le quatrième paramètre définit le taux de rafraîchissement de l'écran. 0 est la valeur par défaut. La seule valeur valide du quatrième paramètre est DDSDM_STANDARDVGAMODE}.
si lpDD.SetDisplayMode(640, 480, 32, 0, DDSDM_STANDARDVGAMODE) <> DD_OK alors
sortie;
Résultat := Vrai ;
fin;
On peut voir que ces deux morceaux de code sont exactement les mêmes, à l'exception de la syntaxe et des noms d'objets. Tant que nous comprenons cela, nous pouvons nous référer aux informations VC ou C++, puis utiliser DELPHI pour créer nos propres objets dans le jeu. Déclaration DirectX dans DELPHI Le nom, le nom de la structure et le VC sont différents. La correspondance générale est la suivante :
DELPHI VC
Objet DirectDrawIDirectDraw7 LPDIRECTDRAW7
Objet de page IDirectDrawSurface7 LPDIRECTDRAWSURFACE7
Description de la page DirectDraw TDDSurfaceDesc2 DDSURFACEDESC2
Fondamentalement, seuls les préfixes sont différents. En raison de l'espace, tous les objets et structures ne sont pas répertoriés ici.