Trong phần này, mình sẽ hướng dẫn các bạn cách làm Game Manager có tác dụng quản lí các sự kiện trong game như tính điểm, tạo sinh thiên thạch, thắng thua,...
À, trong bài trước mình quên nói về wrap đối với obj_rock khi nằm ngoài Room.
Mở Step của obj_rock và obj_rock_small, thêm vào move_wrap(true, true, 100).
1. Tạo thiên thạch ngẫu nhiên
Chúng ta không thể nào chỉ tạo ra các thiên thạch bằng cách kéo thả obj_rock vào Room như trước được, bởi vì số lượng thiên thạch sẽ có hạn. Chúng ta cần một object mới có chức năng đó.
Hãy tạo một obj_game_manager trong thư mục Objects. Thêm sự kiện Create và Step. Đặt số lượng thiên thạch lớn nhất có thể có trong Room là max_Rocks = 20 và count = 0 trong Create.
Mở Step lên và nhập vào đoạn code bên dưới:
- choose(value1, value2, ...) sẽ chọn ngẫu nhiên một Value. Value có thể là Integer, String, hay Object, v.v
Đồng thời giảm count xuống nếu obj_rock bị phá huỷ.
Sau đó kéo thả obj_game_manager vào Room và chạy thử (nhớ xoá các obj_rock có sẵn trong Room ở phần trước đi nhé) .
Các obj_rock và obj_rock_small có hướng đều giống nhau nhìn không được sinh động lắm, hãy mở Create thêm vào image_angle = random_range(0, 359) và Step thêm vào image_angle += 0.5.
Vậy là xong phần tạo thiên thạch, chuyển sang phần kế nào.
2. Mạng (Lives) và điểm
Thêm vào Create của obj_game_manager hai biến là lives = 3 và score = 0.
Mở sang Destroy của obj_player lên và thêm vào đoạn code sau:
Để hiển thị số điểm và lượt chơi còn lại, hãy thêm vào obj_game_manager sự kiện Draw GUI.
Trong đó, thêm vào đoạn code sau:
Mở game lên và chạy thử.
Ồ, chúng ta có một lỗi là khi phi thuyền hồi sinh thì nếu có thiên thạch ngay tại vị trí đó sẽ làm phi thuyền bị nổ một lần nữa. Để khắc phục hãy thêm cho phi thuyền có thời gian "vô địch" khi mới hồi sinh.
Mở Create của obj_player, thêm vào image_alpha = 0.5 và alarm[0] = 300.
Thêm sự kiện Alarm 0 vào obj_player với nội dung là image_alpha = 1.
Tiếp đó, sửa code trong Collision đối với obj_rock và obj_rock_small thành:- image_alpha là mức độ trong suốt của object, có giá trị từ 0 đến 1.
- Alarm 0 là sự kiện xảy ra khi đồng hồ đếm ngược alarm[0] kết thúc.
- alarm[0] là đồng hồ đếm ngược thứ 0.
3. Thua cuộc
- "\n" có nghĩa là newline, ngắt xuống dòng.









