Topic này để các tutor về DX. Đề nghi kô chat chit ở đây hén.
Topic này để các tutor về DX. Đề nghi kô chat chit ở đây hén.
Direct Draw bài 1. Tạo 3D trên màn hình 2D
Source code ở đây
http://www.gamevn.com/forum/attachme...achmentid=1052
http://www.gamevn.com/forum/forumdisplay.php?f=43
Được sửa bởi DieHard lúc 11:56 ngày 06-11-2003
khó quábvbbbbbbbbb
Cái source code này được zip bằng WinRar3.0Được gửi bởi Trần văn Lưu
Dùng Visual Studio 6 để mở cái project. Có sẵng ...Release\XPro.exe trong đó để chạy thử.
Direct X SDK download từ Microsoft.
Class chính trong chương trình:
http://www.gamevn.com/forum/attachme...achmentid=1064
VB programmers, đến lúc Vứt Bỏ nó được rồi.
Cần phải biết 1 chút về VC++, tạo window bằng WinAPI. Biết về COM càng tốt.
bạn nào đã từng lập trình DIRECTRAW 7 (của DX8.1)với VB6 ,xin chỉ cách sử dụng.Mình chẳng biết BLIT,SURFACE là cái gì và cách thức hoạt động của nó( dù đã đọc kỹ tài liệu SDK),xin chỉ dùm .Mình đã thực hiện y chang tutorial 1 của MSDN(10-2001),(không có source code) nhưng chảng thấy ảnh hiện lên dù chương trình không báo lỗi.Mình nản ghê gớm!!!!
Nếu thật sự muốn đi về software graphics/games nên dùng VC++. Đặc biệt là nó được hổ trợ sẳng DirẹctXĐược gửi bởi txt
Dùng VB hay Delphi thì củng được thôi .Tớ sẻ đưa lên 1 ví dụ giống như ví dụ ở trên nhưng mà dùng Delphị
Hàm Blt trong DirectDrawSurface dùng để vẽ nhanh, chuyển hình từ 1 surface này qua 1 surface khác. Surface là 1 memory buffer dùng để lu hình. Coi Blt củng giống như là copy memory thì có thể dể hiểu hơn
Chào các bác !
Lập trình DirectDraw thi mình cũng OK, nhưng khi với đến phần DirectInput thì có một cái mà không biết làm seo ?
Tức là bên DI nó ánh xạ từng phím thành các hằng số và define với tiếp đầu ngữ cho mỗi thằng là DIK_<Phím> ... Bây giờ muốn chuyển qua lại từ mấy thằng VK_<Phím> như của API bình thường thì làm sao ta ? Ví dụ có công thức tổng quát nào cho việc chuyển đổi này hay không ?
Predefined key code:
Key_Escape = $01;
Key_1 = $02;
Key_2 = $03;
Key_3 = $04;
Key_4 = $05;
Key_5 = $06;
Key_6 = $07;
Key_7 = $08;
Key_8 = $09;
Key_9 = $0A;
Key_0 = $0B;
Key_Minus = $0C;//- on main keyboard
Key_Equals = $0D;
Key_Back = $0E;//Backspace
Key_Tab = $0F;
Key_Q = $10;
Key_W = $11;
Key_E = $12;
Key_R = $13;
Key_T = $14;
Key_Y = $15;
Key_U = $16;
Key_I = $17;
Key_O = $18;
Key_P = $19;
Key_LBracket = $1A;
Key_RBracket = $1B;
Key_Return = $1C;//Enter on main keyboard
Key_LControl = $1D;
Key_A = $1E;
Key_S = $1F;
Key_D = $20;
Key_F = $21;
Key_G = $22;
Key_H = $23;
Key_J = $24;
Key_K = $25;
Key_L = $26;
Key_SemiColon = $27;
Key_Apostrophe = $28;
Key_Grave = $29;//Accent grave
Key_LShift = $2A;
Key_BackSlash = $2B;
Key_Z = $2C;
Key_X = $2D;
Key_C = $2E;
Key_V = $2F;
Key_B = $30;
Key_N = $31;
Key_M = $32;
Key_Comma = $33;
Key_Period = $34;//. on main keyboard
Key_Slash = $35;///on main keyboard
Key_RShift = $36;
Key_Multiply = $37;//* on numeric keypad
Key_LMenu = $38;//Left Alt
Key_Space = $39;
Key_Capital = $3A;
Key_F1 = $3B;
Key_F2 = $3C;
Key_F3 = $3D;
Key_F4 = $3E;
Key_F5 = $3F;
Key_F6 = $40;
Key_F7 = $41;
Key_F8 = $42;
Key_F9 = $43;
Key_F10 = $44;
Key_NumLock = $45;
Key_Scroll = $46;//Scroll Lock
Key_NumPad7 = $47;
Key_NumPad8 = $48;
Key_NumPad9 = $49;
Key_Subtract = $4A;//- on numeric keypad
Key_NumPad4 = $4B;
Key_NumPad5 = $4C;
Key_NumPad6 = $4D;
Key_Add = $4E;//+ on numeric keypad
Key_NumPad1 = $4F;
Key_NumPad2 = $50;
Key_NumPad3 = $51;
Key_NumPad0 = $52;
Key_Decimal = $53;//. on numeric keypad
Key_F11 = $57;
Key_F12 = $58;
Key_F13 = $64;//NEC PC98
Key_F14 = $65;//NEC PC98
Key_F15 = $66;//NEC PC98
Key_Kana = $70;//Japanese keyboard
Key_Convert = $79;//Japanese keyboard
Key_NoConvert = $7B;//Japanese keyboard
Key_Yen = $7D;//Japanese keyboard
Key_NumPadEquals = $8D;//= on numeric keypad NEC PC98
Key_CircumFlex = $90;//Japanese keyboard
Key_AT = $91;//NEC PC98
Key_Colon = $92;//NEC PC98
Key_UnderLine = $93;//NEC PC98
Key_Kanji = $94;//Japanese keyboard
Key_Stop = $95;//NEC PC98
Key_AX = $96;//Japan AX
Key_UnLabeled = $97;//J3100
Key_NumPadEnter = $9C;//Enter on numeric keypad
Key_RControl = $9D;
Key_NumPadComma = $B3;//,on numeric keypad NEC PC98
Key_Divide = $B5;///on numeric keypad
Key_SysRQ = $B7;
Key_RMenu = $B8;//Right Alt
Key_Pause = $C5;//Pause
Key_Home = $C7;//Home on arrow keypad
Key_Up = $C8;//UpArrow on arrow keypad
Key_Prior = $C9;//PgUp on arrow keypad
Key_Left = $CB;//LeftArrow on arrow keypad
Key_Right = $CD;//RightArrow on arrow keypad
Key_End = $CF;//End on arrow keypad
Key_Down = $D0;//DownArrow on arrow keypad
Key_Next = $D1;//PgDn on arrow keypad
Key_Insert = $D2;//Insert on arrow keypad
Key_Delete = $D3;//Delete on arrow keypad
Key_LWin = $DB;//Left Windows Key
Key_RWin = $DC;//Right Windows Key
Key_Apps = $DD;//AppMenu Key
Key_Power = $DE;
Key_Sleep = $DF;
Key_BackSpace = Key_Back ;//Backspace
Key_NumPadStar = Key_Multiply;//* on numeric keypad
Key_LAlt = Key_LMenu ;//Left Alt
Key_CapsLock = Key_Capital ;//CapsLock
Key_NumPadMinus = Key_Subtract;//- on numeric keypad
Key_NumPadPlus = Key_Add ;//+ on numeric keypad
Key_NumPadPeriod = Key_Decimal ;//. on numeric keypad
Key_NumPadSlash = Key_Divide ;///on numeric keypad
Key_RAlt = Key_RMenu ;//Right Alt
Key_UpArrow = Key_Up ;//UpArrow on arrow keypad
Key_PgUp = Key_Prior ;//PgUp on arrow keypad
Key_LeftArrow = Key_LEFT ;//LeftArrow on arrow keypad
Key_RightArrow = Key_Right ;//RightArrow on arrow keypad
Key_DownArrow = Key_Down ;//DownArrow on arrow keypad
Key_PgDn = Key_Next ;//PgDn on arrow keypad
Hic, ... Hông phải vậy !
Cái đó là định nghĩa của mình rồi ... Mở file dinput.h ra cũng có cả đống mừ !....
Ý em là vậy nè :
- Game của em có 2 thằng chơi ... Yêu cầu đặt ra là có thể config lại cái keyboard control cho mỗi thằng.
- Do đó em dùng một cái hotkey control để user thiết lập (giao diện giống như cách thiết lập Accelerator Keyboard Shortcut của VC++ cho mấy cái ID đó !!) ...
=> Khổ nỗi là thằng này nó xài theo kiểu VK_<Tên phím> ... trong khi đó thằng DInput thì nó xài theo dạng DIK_<Tên phím> ... 2 thằng điên này lại chẳng thấy công thức tổng quát gì để chuyển đổi cả ... Hic, một thằng thì ánh xạ như trên bàn phím, còn thằng VK_ thì ánh xạ trên cái luật rừng nó đặt ra ... Hic ... Điếc luôn !... Ai giúp em dzới !!....
Dùng bảng ánh xạ sang là xong mừ ?
Bookmarks