STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • Bình luận
    • 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

    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.

    Phù hợp cho bạn

    Đề xuất

    Validate Form Bằng Thư Viện Knockout-Validation trong Dự Án Durandaljs

    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ữ ...

    JavaScriptKiến thức

    05/11/2017

    SOLID trong Lập Trình Hướng Đối Tượng

    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 ...

    Software ArchitectureSOLID Principles

    06/08/2020

    Khám phá thêm

    Giới Thiệu về Kỹ Thuật Phần Mềm – Software Engineering

    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 ...

    Trung Nguyễn

    22/09/2014

    Toán Tử Khung Xương trong Ảnh Nhị Phân - Skeleton Binary Morphology

    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 ...

    Computer VisionOpenCV

    24/05/2016

    5 Lý Do Kiến Trúc Sư Nên Học Lập Trình

    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 ...

    STDIO TrainingGóc nhìn

    09/08/2020

    Thông Số Kỹ Thuật Arduino Uno R3 - Các Biến Thể và Lưu Ý

    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 ...

    Điện Tử Ứng DụngArduino

    13/10/2014

    Phép Tích Chập Trong Xử Lý Ảnh (Convolution)

    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 ...

    Computer VisionNền tảng

    20/04/2016

    Memoization - Kỹ Thuật Tối Ưu Hiệu Suất Tính Toán

    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 ...

    La Kiến Vinh

    02/06/2014

    Xử Lý Ảnh Với OpenCV: Các Phép Toán Hình Thái Học

    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 ...

    Computer VisionOpenCV

    23/01/2015

    Khởi Tạo Môi Trường Lập Trình Game Sử Dụng Thư Viện SDL (Simple DirectMedia Layer)

    Khởi Tạo Môi Trường Lập Trình Game Sử Dụng Thư Viện SDL (Simple DirectMedia Layer)

    Giới thiệu về thư viện Simple DirectMedia Layers và làm quen 1 số thao ...

    Lập Trình GameSDL

    08/10/2015

    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