Search…

CBP-1: Tổng Quan về Project Ví Dụ

14/09/20203 min read
Giới thiệu về Component Base Programming (CBP) - sơ lược về project ví dụ sẽ dùng trong chuỗi bài viết CBP.

Giới thiệu

Component Base Programming (CBP) - 1 khái niệm mà không ít lập trình viên biết đến và mong muốn mình có thể làm chủ được kỹ thuật lập trình này. Chuỗi bài viết này của tôi gồm 10 bài, được đánh dấu bởi tiền tố CBP, hướng dẫn độc giả hiện thực 1 hệ thống Component - Entity.

Đây là kinh nghiệm và là sự tìm tòi, nghiên cứu và thử nghiệm của tôi trong suốt 6 tháng. Thông qua 1 sản phẩm được hiện thực bởi hệ thống này, tôi rút ra được những kinh nghiệm cần thiết và quan trọng, đáng để chia sẻ cho những độc giả quan tâm.

FRED_FRAMEWORK là gì?

Đây là framework đơn giản do tôi tạo ra để làm phần demo hướng dẫn về CBP, làm việc với Win32 với 1 số thao tác cơ bản như tạo cửa sổ, load, vẽ ảnh, truy vấn phím đang nhấn.

Framework này sẽ theo xuyên suốt trong 10 bài viết để giúp độc giả dễ dàng tiếp cận CBP.

FRED_FRAMEWORK gồm những gì?

FKeyboard

Là 1 lớp Singleton, có chức năng quản lý thiết bị nhập của người dùng, với phương thức chính là isKeyDown, có chức năng kiểm tra phím tương ứng với Virtual Keycode được truyền vào có đang nhấn hay không, return true nếu phím đang được nhấn.

static bool isKeyDown(int keycode);

Các Keycode khả dụng để truyền vào phương thức này có 1 số quy tắc:

  • Hầu hết được khởi đầu với VK_.
  • Nếu là phím thuộc Numpad, tiền tố sẽ là VK_NUMPAD.
  • Nếu là phím ký tự hoặc phím số, keycode sẽ tương ứng với mã ASCII của ký tự viết hoa của ký tự đó (ví dụ: K, L, 1, ...).

FTexture

Lớp định nghĩa 1 texture, hiện tại FTexture chỉ có thể load ảnh định dạng .bmp, với phương thức chính là draw, vẽ hình ảnh đã load lên màn hình. Ảnh load là ảnh có đường dẫn trùng với đường dẫn được truyền vào Constructor của FTexture.

void draw(HDC hdc, int posX = 50, int posY = 50);

FWindows

Là lớp định nghĩa 1 đối tượng cửa sổ Win32, phương thức chính của FWindows bao gồm Constructorrun.

FWindows(HINSTANCE hInst, int nCmdShow, 
         int width, int height, 
         Function_I_float_O_void updateFunc, 
         Function_I_HDC_O_void drawFunc);
  • hInst, nCmdShow: lấy từ đối số truyền vào hàm WinMain của chương trình.
  • width, height: kích thước cửa sổ.
  • updateFunc: con trỏ hàm kiểu void(*)(float), là con trỏ đến hàm định nghĩa thao tác update của vòng lặp game, đối số float của hàm là deltaTime - thời gian của vòng lặp trước tính theo giây.
  • drawFunc: con trỏ hàm kiểu void(*)(HDC), là con trỏ đến hàm định nghĩa thao tác draw của vòng lặp game, đối số HDC là Handle của Device Context sử dụng trong lượt vẽ này (tôi yêu cầu đối số này để hiện thực double buffer).
void run();

Đây là phương thức dùng để khởi động các xử lý cửa sổ game, hay nói nôm na, phương thức này chính là vòng lặp game.

Bài chung series

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024