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
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 Và Đạ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