Search…

Hiện Thực Cơ Bản của Game

27/09/20203 min read
Giới thiệu các kiến thức mở đầu cho lập trình game cho người mới.

Những ngày đầu tiên tiếp xúc với việc lập trình Game thật sự rất vất vả.

  • Không biết phải bắt đầu từ đâu?
  • Phải làm như thế nào?

Đặc biệt là thiếu đi sự hình dung, để hình dung ra được vấn đề và cách giải quyết từng vấn đề đó trong quá trình lập trình.

Hiểu được khó khăn đó, bài viết này ra đời để chia sẻ những cơ bản đầu tiên, bắt đầu lập trình game như thế nào, tăng thêm sự thân thiện khi mới bắt đầu lập trình game.

Game là gì?

Hiểu 1 cách đơn giản thì game cũng là 1 chương trình, nhưng nó cần giữ cho chương trình chạy không kết thúc nên cần 1 vòng lặp chính, trong vòng lặp đó lần lượt làm các công việc:

  • Tính toán, cập nhật thông tin các đối tượng.
  • Thể hiện (vẽ) các đối tượng.
  • ...

Các công việc này lặp liên tục trong vòng lặp đó.

#include <stdio.h>

int main()
{
	while(1)
	{
	}
	return 0;
} 

Để thể hiện rõ hơn, thêm 1 số code vào vòng lặp while này.

#include <stdio.h>
#include <Windows.h>

int main()
{
	while(1)
	{
		printf("This is my First Game\n");
	}
	return 0;
} 

Để hoàn thiện hơn, có thể làm chậm quá trình thể hiện game, dùng hàm Sleep() trong thư viện Windows.h.

#include <stdio.h>
#include <Windows.h>

int main()
{
	while(1)
	{
		printf("This is my First Game\n");
		Sleep(1000); // số 1000 này là 1000 mili-giây.
	}
	return 0;
} 

Như vậy game đã được kiểm soát nhịp độ.

Game là 1 đối tượng

Để quản lý game tốt hơn, có thể đóng game và class Game, các phương thức cần thiết sẽ lưu vào đây để dễ quản lý.

Hình thành 1 class Game

1 game cơ bản cần có 3 quá trình chính là:

  • Khởi tạo.
  • Cập nhật
  • Hủy.

Chính vì vậy có thể tạo class Game với 3 phương thức cơ bản này và định nghĩa từng phương thức.

class Game
{ 
private:
	int  num;
	bool isExit;        // thuộc xác định thoát game
public:
	Game(){}
	~Game(){}

	void init();    // Khởi tạo Game
	void run();     // Cập nhật, vẽ các Object
	void destroy(); // Hủy sau khi thoát
};

Định nghĩa phương thức

Với phương thức init(), có thể gán giá trị, cấp phát vùng nhớ cho những thuộc tính cần sử dụng trong Game.

void Game::init()
{
	num = 0;
	isExit = false;
}

Phương thức trên khởi tạo giá trị kiểu int num có giá trị khởi điểm là 0. Thuộc tính này có chức năng đếm số lần vòng lặp while chạy trong phương thức run(). Thuộc tính isExit sẽ giải thích thêm trong ví dụ dưới đây.

void Game::run()
{
	while (!isExit)
	{
		num += 1; // Xử lý, update giá trị
		printf("Game Update %d :D :D :D.\n", num); // Vẽ	
		Sleep(1000); // Delay Time
	}
}

Phương thức trên sẽ chạy cho đến khi nào thuộc tính isExit không còn là false nữa. Mỗi 1 giây trôi qua run sẽ in lên màn hình số lần Game thực hiện xong 1 lần lặp.

Khi game thoát (isExit == true) thì hàm main kết thúc và Game bị hủy.

void Game::destroy()
{
	printf("Game Over...\n");
}

Ứng dụng class Game vào hàm main.

int main()
{
	Game game;

	game.init();
	game.run();
	game.destroy();

	return 0;
}
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