Game C++ SDL – Bài 7: Đạn bắn và xử lý chuột trong game

Chào mừng các bạn đến với chủ đề học lập trình game c++ SDL.

Bài số 7 này chúng ta sẽ tiếp tục thêm một lớp đối tượng đại diện cho đạn bắn trong game.

Tôi gọi đó là lớp AmoObject.

LINK DOWN PROJECT SAU KHI HOÀN THÀNH BÀI NÀY: 

Project chạy trên phiên bản: Visual Studio 2012

Đã có sẵn thư viện cấu hình đầy đủ debug/release windows 32

=>   CLICK HERE

 

1. Định nghĩa lớp Amo

+ Lớp Amo cũng sẽ được kế thừa từ lớp BaseObject

+ Amo cũng có các trường x_val và y_val để thay đổi vị trí

+ Amo cũng có hàm show và hàm xử lý sự kiện.

+ Amo có thêm biến quản lý cho việc được bắn ra hay là không.

+ Amo có thêm biến type để thể hiện có nhiều lựa chọn.

#include "common_function.h"
#include "BaseObject.h"
#define WIDTH_AMO_LASER 35
#define HEIGHT_AMO_LASER 5
#define WIDTH_AMO_SPHERE 10
#define HEIGHT_AMO_SPHERE 10

class AmoObject : public BaseObject
{
public:
enum AmoType
{
 NONE,
 LASER,
 SPHERE
};

AmoObject();
~AmoObject();

void HandleInputAction(SDL_Event events, SDL_Rect rect_obj);
void HandleMove(const int x_boder, const int y_border);
unsigned int get_type() const {return amo_type_;}

private:
int x_val_;
int y_val_;
bool is_move_;
unsigned int amo_type_;
};
2. Sử dụng mouse left và right để thực hiện bắn đạn.

+ Vì Amo được bắn từ nhân vật, nên chúng ta có thể coi amo là một thành phần của main object.

Do đó chúng ta sẽ tạo ra một trường trong MainObject có kiểu là AmoObject.

+ Nếu chỉ sử dụng 1 VIÊN ĐẠN DUY NHẤT thì chúng ta chỉ cần khai báo 1 đối tượng AmoObject trong MainObject

+ Nếu sử dụng nhiều viên đạn, (nghĩa là mỗi lần bắn một viên được sinh mới). Và khi một viên vượt quá giới hạn thì nó được hủy.

=> Cần khai báo một list các đối tượng Amobobject trong MainObject

Như vậy vì AmoObject là đối tượng thành viên của MainObject. => Xử lý sự kiện Mouse sẽ được xử lý cả 2 nơi.

a. Xử lý Mouse trong MainObject => sẽ khởi tạo các đối tượng Amobject và lưu vào list.

b. Xử lý Mouse trong AmoObject => set cờ is_move = true và sét vị trí ban đầu của amo trên mainobject.

3. Thực Hành

=> DOWNLOAD HÌNH ẢNH CHO AMO VỚI 2 LOẠI: Đạn LASERĐạn CẦU. ==========> click here

  

Sau khi download thì copy vào folder chứa các file nhân vật, background mà trước đó đã copy.

Xem video để thực hành dễ dàng hơn

_____________________________________________________________

Pass Pham

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.