Ini bukan tutorial detail tentang DirectX, melainkan penjelasan cara menggunakan DELPHI untuk mengembangkan game DirectX. Karena buku tentang DirectX, baik online maupun di toko buku, pada dasarnya menjelaskannya dalam C++ atau VC Sedikit sekali, tujuan artikel ini adalah untuk memungkinkan pembaca mempelajari bagaimana menggunakan informasi yang ada untuk mempelajari dan mengembangkan game.
Artikel ini ditujukan bagi pembaca yang memiliki pemahaman tertentu tentang DirectX tetapi tidak mengetahui cara mengembangkan game DirectX di bawah DELPHI.
Bahan referensi yang direkomendasikan:
<<Panduan Pemrograman Game>>,<<Koleksi DirectX Mandarin>>
Bisakah DELPHI mengembangkan game?
Jawabannya tentu saja. Banyak orang di banyak forum game online yang percaya bahwa hanya C++ atau VC yang bisa digunakan untuk mengembangkan game. DELPHI hanya cocok untuk aplikasi desktop. Orang dengan pandangan ini disarankan untuk membongkar dan melihat kode yang dikompilasi oleh DELPHI dan VC, atau melihat game "Age of Miracles" yang dikembangkan dengan DELPHI dan grafisnya lebih baik dari Age of Empires.DELP HI sepenuhnya berorientasi objek, dapat menyematkan perakitan, dan mendukung instruksi MMX (register MMX di DELPHI adalah mm0-mm7). selama Anda memiliki keterampilan internal yang baik, Anda dapat menjadikannya program atau permainan yang bagus.
Persiapan:
Saat ini ada dua opsi untuk mengembangkan game DirectX dengan DELPHI. Yang pertama adalah menggunakan deklarasi DirectX jedi (http://www.delphi-jedi.org). Yang lainnya adalah menggunakan kontrol DelphiX Paket deklarasi X digunakan untuk mengembangkan game DirectX. Alasan mengapa saya memilih paket deklarasi DirectX adalah karena paket tersebut menggunakan metode SDK untuk mengembangkan game. Jika saya perlu beralih ke bahasa lain di masa mendatang, saya tidak perlu melakukannya mempelajari kembali DirectX. Sedangkan untuk kontrol DelphiX, saya belum pernah menggunakannya dan tidak punya pendapat.
Pertama pergi ke alamat berikut untuk mengunduh paket deklarasi DirectX (http://kuga.51.net/download/files/directx7.rar), dan ekstrak ke direktori khusus Anda. Kemudian pilih Tools->Environment Options di DELPHI, Pilih tab Library di jendela yang terbuka dan klik tombol di belakang Library Path. Jendela Direktori akan muncul, lalu klik Item berwarna abu-abu yang dinyatakan tidak valid tombol di sisi kanan jalur. Pilih direktori tempat deklarasi DirectX diekstraksi. Kemudian klik tombol ADD untuk menambahkan direktori tempat deklarasi DirectX ke jalur Perpustakaan DELPHI dalam penggunaan. Deklarasi ini Paket ini dilengkapi dengan beberapa contoh yang dapat digunakan sebagai referensi untuk memulai.
Pengalaman men-debug:
Saat mengembangkan game layar penuh, yang terbaik adalah mengatur resolusi layar selama desain ke resolusi yang sama dengan game untuk menghindari kerusakan layar dengan sering mengganti resolusi selama proses debug.
Yang terbaik adalah mengembangkan game layar penuh di bawah WIN2000/XP. Jika tidak, saat melakukan debug di bawah 98, game akan memasuki loop tak terbatas atau pengecualian akan terjadi di bawah 2000/XP, Anda dapat menekan ALT+ TAB untuk beralih ke DELPHI (tetapi saat ini Karena game DirectX adalah layar penuh dan menempati layar, tidak akan ada perubahan pada layar, jadi Anda perlu mencoba beberapa kali lagi). Tekan CTRL+F2 untuk mengakhiri game tekan Enter terlebih dahulu lalu tekan CTRL+F2 dapat mengakhiri permainan debugging.
Melihat:
Jika Anda menggunakan DELPHI7, harap ubah baris 145 {$IFDEF VER140} di DirectDraw.pas menjadi {$IFDEF VER150} untuk kompilasi dan interpretasi normal.
Lebih baik menggunakan API untuk membuat jendela permainan utama daripada menggunakan kelas TFORM VCL.
Pertama mari kita lihat cuplikan kode yang menginisialisasi objek DirectDraw menggunakan C++ dan DELPHI.
versi c++:
BOOL InitDDraw( )
{
LPDIRECTDRAW7 lpDD; //Penunjuk ke objek DirectDraw
jika (DirectDrawCreateEx (NULL, (void **)&lpDD, IID_IDirectDraw7, NULL) != DD_OK )
return FALSE; {Buat objek DirectDraw}
{Metode if (xxx != DD_OK) digunakan untuk mendeteksi kesalahan, yang merupakan metode yang paling umum digunakan}
jika (lpDD->SetCoOperativeLevel(hwnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN) != DD_OK )
return FALSE; {Setel tingkat kontrol DirectDraw}
jika ( lpDD->SetDisplayMode( 640, 480, 32, 0, DDSDM_STANDARDVGAMODE ) != DD_OK )
kembalikan FALSE; {setel mode tampilan}
}
Versi DELPHI:
fungsi TForm1.InitDirectDraw: Boolean;
var
lpDD: IDirectDraw7;
mulai
Hasil := Salah; {Asumsikan inisialisasi gagal}
{Buat objek DirectDraw}
jika DirectDrawCreateEx(nil, lpDD, IID_IDIRECTDRAW7, nil) <> DD_OK lalu
KELUAR;
{Setel tingkat kontrol DirectDraw. Parameter pertama adalah pegangan jendela DirectDraw. Di sini, tingkat kontrol diatur ke layar penuh ditambah mode eksklusif}
jika lpDD.SetCooperativeLevel(Hwnd, DDSCL_EXCLUSIVE atau DDSCL_FULLSCREEN) <> DD_OK maka
KELUAR;
{Atur mode tampilan. Parameter pertama dan kedua adalah resolusi. Parameter ketiga digunakan untuk mengatur jumlah digit warna dalam mode tampilan.
Parameter keempat mengatur kecepatan refresh layar. 0 adalah nilai default. Satu-satunya nilai yang valid dari parameter keempat adalah DDSDM_STANDARDVGAMODE}
jika lpDD.SetDisplayMode(640, 480, 32, 0, DDSDM_STANDARDVGAMODE) <> DD_OK maka
KELUAR;
Hasil := Benar;
akhir;
Terlihat bahwa kedua potongan kode ini sama persis kecuali sintaksis dan nama objek. Selama kita memahaminya, kita dapat merujuk ke informasi VC atau C++ dan kemudian menggunakan DELPHI untuk membuat game kita sendiri Deklarasi DirectX di DELPHI Nama, nama struktur, dan VC berbeda. Korespondensi umumnya adalah sebagai berikut:
DELPHI VC
Objek DirectDrawIDirectDraw7 LPDIRECTDRAW7
Objek halaman IDirectDrawSurface7 LPDIRECTDRAWSURFACE7
Deskripsi halaman DirectDraw TDDSurfaceDesc2 DDSURFACEDESC2
Pada dasarnya, hanya awalannya yang berbeda. Karena ruang, tidak semua objek dan struktur dicantumkan di sini.