Đôi khi trả tiền để được ở trên giường vào ngày thứ Hai, thay vì dành phần nghỉ ngơi còn lại của tuần gỡ rối mật mã ngày thứ Hai. Vidiu Platon.
STDIO Đây là bài viết đầu tiên của tôi trong chuỗi 10 bài viết về Component Base Programming (CBP) nhằm giới thiệu sơ lược về project ví dụ sẽ dùng trong loạt bài viết và cách để độc giả đọc bài viết của tôi.
Nội dung bài viết

Giới thiệu

Component Base Programming (CBP) – một 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. Tuy nhiên, với nguồn tài liệu tiếng Việt mù mờ như hiện tại, thật khó để họ học hỏi một cách kỹ càng và chi tiết.

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, sẽ hướng dẫn độc giả hiện thực một hệ thống Component – Entity do tôi sáng tạo dựa trên tư tưởng này. Đâ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 một 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.

Tiền đề bài viết

Đây là bài viết đầu tiên của tôi trong chuỗi bài viết về CBP thuộc STDIO :: www.stdio.vn.

Đối tượng hướng đến

Các lập trình viên:

  • Mong muốn tham khảo một phương pháp hiện thực của CBP.
  • Có kiến thức nền tảng tương đối tốt về C++.

Các lập trình viên khác có thể sử dụng làm tài liệu tham khảo.

Danh mục các bài viết CBP

Các bài viết liên quan

FRED_FRAMEWORK

Đây là framework đơn giản do chính tôi định nghĩa, làm việc với Win32 với một số thao tác cơ bản như tạo cửa sổ, load, vẽ ảnh, truy vấn phím đang ấn.

FKeyboard

Là một 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 ấn hay không (return true nếu phím đang được ấn).

static bool isKeyDown(int keycode);

Các phương thức khác được dùng để hiện thực Singleton Pattern và các lớp framework khác.

Các Keycode khả dụng để truyền vào phương thức này có một 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

Đây là lớp định nghĩa một 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 một đối tượng cửa sổ Win32, phương thức chính của FWindows bao gồm Constructor run.

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.

Để đọc bài viết của chúng tôi hiệu quả

Không chỉ những bài viết của tôi, mà tất cả những bài viết trên STDIO :: www.stdio.vn đều mong muốn độc giả học hỏi được nhiều hơn những gì mà chúng tôi chia sẻ. Nghe thì có vẻ mâu thuẫn, nhưng thật vậy, những bài viết của chúng tôi không đơn thuần là chia sẻ về kỹ thuật mới, khái niệm mới hay phương pháp giải quyết một vấn đề, mà đó còn là những chia sẻ về phương pháp chúng tôi tư duy, cách chúng tôi đưa ra giải pháp và khắc phục những yếu điểm, vấn đề của giải pháp đó. Không chỉ vậy, qua những bài viết này, nếu chú ý, độc giả còn có thể biết được thêm những cách dùng mới của những kiến thức mà chúng tôi đã từng chia sẻ, những kinh nghiệm xương máu mà chúng tôi đã phải đánh đổi bằng thời gian, công sức và sự cố gắng không ngừng nghỉ, qua đó tránh được những vết xe đổ và tích lũy được kinh nghiệm cho bản thân.

Không ngừng sáng tạo, không bị bó buộc bởi những gì chúng tôi bày sẵn. Hãy đọc, hãy hiểu và hãy vận dụng theo cách mà mình hiểu, đó mới là mục tiêu cuối cùng của việc học hỏi.

Chúc các bạn thành công.

Bạn cần hỗ trợ các dự án kết nối không dây?

Quí doanh nghiệp, cá nhân cần hỗ trợ, hợp tác các dự án IoT, kết nối không dây. Vui lòng liên hệ, hoặc gọi trực tiếp 0942.111912.

  • TỪ KHÓA
  • Arduino
  • ESP32
  • ESP8266
  • Wifi
  • Bluetooth
  • Zigbee
  • Raspberry Pi
THẢO LUẬN
ĐÓNG