Game C++ SDL – Bài 8: Xây Dựng Lớp Threats Game Phần 2

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

Bài số 8  Phần 2 này. Chúng ta sẽ tiế tục phát triển và thực hiện các yêu cầu mới cho Threats

1. Phân Tích Yêu Cầu Cho Lớp ThreatObject

Các yêu cầu trong phần 2 này:

+ Xây dựng số lượng các threats xuất hiện trên màn hình.

+ Thiết Lập chế độ bắn đạn trong các Threats.

 

Chúng ta sẽ coi AmoOject là một trường thành viên của Threat giống như của MainObject.

Điểm khác biệt đó là: AmoObject sẽ được bắn liên tục ra mà không cần chờ đợi sự điều khiển nào cả.

Các Step Chính:

Step 1: Thêm một biến list các AmoObject trong ThreatsObject.

Và nhớ thêm hàm set/get cho nó

 

Step 2: Viết một hàm khởi tạo 1 đối tượng Amo để bắn ra cho một Threats.

+ Sét tham số is_move là true;

+ Set HeightWith Cho amo

+ Chọn type cho amo.

+ Chọn vị trí đạn bắt đầu được bắn ra từ threats

+ Set giá trị đạn được di chuyển

+ Push amo object và list amo

Step 3: Viết một hàm xử lý MoveAmo như dưới đây.

biến is_alive là một biến dành cho việc mở rộng sau này của threats. Tạm thời các bạn có thể chưa cần sử dụng.

Nếu dùng thì nhớ set true khi khởi tạo Threats.

+ Trong hàm MakeAmo chúng ta gọi hàm Show của Amo.

+ Viết một hàm Move từ phải sang trai cho lớp Amo và gọi nó tại đây.

+ Khi viên đạn được bắn ra từ cuối màn hình về đầu màn hình. Vậy khi về đầu màn hình nó gặp giới hạn, nó sẽ được sét biến is_move = false;

=> Khi MakeAmo được gọi, nó sẽ kiểm tra tham số is_move. Nếu is_move = false thì sẽ thiết lập lại vị trí viên đạn như ban đầu nó được sét trên threats.

Step 4: Chúng ta cùng xem xét hàm HandleMoveRightLeft được viết mới trong AmoObject

giá trị x_val_ được xét là 8 ở trên step 2. Rect_.x sẽ được trừ dần giá trị này về đến 0.

Khi nó về 0 thì is_move được sét bằng false.

 

Step 5: Cuối cùng trong hàm main chúng ta chỉ việc gọi hàm p_threats->MakeAmo();

2. Thực Hành.

Ok Các bạn hãy xem video để thực hành cùng tôi.

___________________________________________________

Pass Pham

 

4 thoughts on “Game C++ SDL – Bài 8: Xây Dựng Lớp Threats Game Phần 2

  • 11 February, 2019 at 7:48 pm
    Permalink

    sao e làm như vậy lại k chạy được phần 2 vậy. phần 1 e chạy đc. e dung visual 17

    Reply
    • 13 February, 2019 at 7:08 am
      Permalink

      vào group show hình ảnh bị lỗi lên xem nào

      Reply
  • 6 June, 2020 at 12:11 am
    Permalink

    Mình cũng làm như vậy, Nhưng tới đoạn tạo nhiều Threat thì lại ko bắn ra được đan. mặc dù debug thì vẫn nạp đc đạn.
    Nếu 1 Threat thì vẫn bắn ra đc đạn bình thường. MÌnh dùng visual 2015

    Reply
    • 9 June, 2020 at 9:46 am
      Permalink

      vào group show lỗi xem nào

      Reply

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.