STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    Áp Dụng Kỹ Thuật OOP Trong Quá Trình Xây Dựng Framework Dựa Trên Thư Viện SDL

    Áp dụng kỹ thuật lập trình - OOP trong quá trình xây dựng Engine Game bằng thư viện SDL (Simple DirectMedia Layer).

    Hoàng Thái

    09/09/2015
    27/09/2020
    2 phút đọc
    Áp Dụng Kỹ Thuật OOP Trong Quá Trình Xây Dựng Framework Dựa Trên Thư Viện SDL

    Để khởi tạo của sổ bằng thư viện SDL cần có những yếu tố sau:

    • Kích thước của cửa sổ.
    • Tên tiêu đề của cửa sổ.
    • Một con trỏ kiểu SDL_Window để quản lý cửa sổ.

    Cách hiện thực

    Đầu tiên, khởi tạo một class để chứa các thông tin của cửa sổ, đặt tên class đó là MyWindow.

    Trong phần khai báo class:

    #ifndef __MY_WINDOW_H__
    #define __MY_WINDOW_H__
    
    #include "SDL.h"
    
    class MyWindow
    {
    public:
    	MyWindow();
    	MyWindow(const char* name, const int& width, const int& height);
    
    	~MyWindow();
    
    private:
    	int		m_ScreenWidth;
    	int		m_ScreenHeight;
    	char*		m_pTitle;
    	SDL_Window*	m_pWindow;
    };
    
    
    #endif // !__MY_WINDOW_H__
    

    Class MyWindow, gồm các thuộc tính sau:

    • m_ScreenWidth là chiều dài của cửa sổ màn hình.
    • m_ScreenHeight là chiều cao của cửa sổ màn hình.
    • m_pTitle là tên của cửa sổ màn hình.
    • m_pWindow là con trỏ quản lý cửa sổ màn hình.

    Trong phần định nghĩa class:

    MyWindow::MyWindow(const char* name, const int& width, const int& height)
    {
    	m_pTitle	= new char[SDL_strlen(name) + 1];
    	SDL_strlcpy(m_pTitle, name, SDL_strlen(name) + 1);
    	m_ScreenWidth	= width;
    	m_ScreenHeight	= height;
    
    	//Initializes the subsystems
    	if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
    	{
    		SDL_Log("Unable to initialize SDL %s\n", SDL_GetError());
    		return;
    	}
    
    	// Create window
    	m_pWindow = SDL_CreateWindow(m_pTitle,
    		SDL_WINDOWPOS_UNDEFINED,
    		SDL_WINDOWPOS_UNDEFINED,
    		m_ScreenWidth,
    		m_ScreenHeight,
    		SDL_WINDOW_OPENGL);
    
    	if (m_pWindow == nullptr)
    	{
    		SDL_Log("Could not create windows: %s \n", SDL_GetError());
    		return;
    	}
    
    	// Delays 10 seconds
    	SDL_Delay(10000);
    	//Destroy a window
    	SDL_DestroyWindow(m_pWindow);
    	//This function cleans up all initialized subsystems
    	SDL_Quit();
    }

    Kiểm tra và kết quả

    Để kiểm tra class System có hoạt động đúng hay không, tạo file main.cpp với đoạn code như sau để kiểm tra:

    #include <Windows.h>
    #include "MyWindow.h"
    
    int WINAPI WinMain(HINSTANCE hInstance,
    	HINSTANCE hPrevInstance,
    	LPSTR lpCmdLine,
    	int nCmdShow)
    {
    	MyWindow*	window = new MyWindow("STDIO - MY WINDOW", 400, 320);
    	delete window;
    }

    Tiến hành chạy chương trình, thu được kết quả như sau:

    ss_1

    * Nếu chạy chương trình mà xuất hiện lỗi như bên dưới, copy SDL2.dll trong thư mục SDL2/lib/x86 vào thư mục Debug của chương trình và chạy lại.

    ss_2

    Code demo

    STDIO_Example_V2013

    0 Bình luận
    Lập Trình Game

    Lập Trình Game

    Kiến thức, kỹ thuật, kinh nghiệm lập trình game.

    Đề xuất

    Validate Form Bằng Thư Viện Knockout-Validation trong Dự Án Durandaljs
    Bài viết hướng dẫn sử dụng thư viện Knockout-Validation để kiểm tra dữ ...
    SOLID trong Lập Trình Hướng Đối Tượng
    SOLID trong lập trình hướng đối tượng có giá trị như thế nào trong việc ...

    Khám phá

    Giới Thiệu về Kỹ Thuật Phần Mềm – Software Engineering
    Software Engineering là một phần của System Engineering - liên quan đến ...
    22/09/2014
    Toán Tử Khung Xương trong Ảnh Nhị Phân - Skeleton Binary Morphology
    Giới thiệu giải thuật thực hiện toán tử khung xương (skeleton) dựa trên ...
    5 Lý Do Kiến Trúc Sư Nên Học Lập Trình
    Trong AutoCAD có hỗ trợ lập trình với Python, Revit có thể viết tự động ...
    Các Kiến Thức Cần Chuẩn Bị Cho Buổi Phỏng Vấn C++
    Các kiến thức cần chuẩn bị cho buổi phỏng vấn C++ và cho công việc C++.
    Thông Số Kỹ Thuật Arduino Uno R3 - Các Biến Thể và Lưu Ý
    Arduino board có rất nhiều phiên bản với hiệu năng và mục đích sử dụng ...
    Phép Tích Chập Trong Xử Lý Ảnh (Convolution)
    Convolution là kỹ thuật quan trọng trong Xử Lý Ảnh, được sử dụng chính ...
    Memoization - Kỹ Thuật Tối Ưu Hiệu Suất Tính Toán
    Nếu bài toán nào tính toán quá lâu trong quá trình thực thi có thể tính ...
    02/06/2014
    Xử Lý Ảnh Với OpenCV: Các Phép Toán Hình Thái Học
    Giới thiệu những thuật toán cơ sở trong xử lý hình thái học, những thuật ...
    Khi bạn nhấn vào liên kết sản phẩm do STDIO đề xuất và mua hàng, STDIO có thể nhận được hoa hồng. Điều này hỗ trợ STDIO tạo thêm nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020