0% found this document useful (0 votes)
26 views12 pages

Bai Tap Lon11

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views12 pages

Bai Tap Lon11

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Mở đầu

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI


1.1. Mô tả bài toán
Trong trò chơi, người chơi sẽ điều khiển một nhân vật có khả năng di chuyển linh
hoạt trong không gian trò chơi nhằm tránh các cuộc tấn công từ những quái vật xuất hiện
xung quanh. Mục tiêu chính của chương trình này là mô phỏng hành vi của nhân vật
người chơi sao cho hiệu quả nhất trong việc né tránh và tấn công quái vật.
a) Hành động di chuyển
Tránh né quái vật: Người chơi phải điều khiển nhân vật di chuyển liên tục để tránh
việc bị quái vật tấn công. Các quái vật có thể xuất hiện từ nhiều hướng và di chuyển với
các quỹ đạo khác nhau, đòi hỏi người chơi phải tính toán nhanh chóng để tìm ra lối thoát
an toàn. Việc né tránh này có thể được thực hiện thông qua các yếu tố như:
+ Tốc độ di chuyển của nhân vật.
+ Khả năng dự đoán quỹ đạo tấn công của quái vật.
b) Tấn công quái vật
Sử dụng vũ khí: Nhân vật được trang bị một khẩu súng để có thể phản công và tiêu
diệt quái vật. Khi tấn công, người chơi phải:
+ Định hướng chính xác mục tiêu quái vật để bắn trúng.
+ Quản lý tài nguyên đạn dược, lựa chọn thời điểm thích hợp để tấn công khi quái
vật tiếp cận ở khoảng cách an toàn.
+ Tính toán khoảng cách giữa nhân vật và quái vật để tránh bị tổn thương trong khi
tấn công.
c) Thử thách và mục tiêu
Người chơi sẽ phải đối đầu với các quái vật qua từng giai đoạn khác nhau. Mỗi giai
đoạn sẽ có một nhóm quái vật nhất định, với mức độ khó tăng dần. Số lượng và tốc độ tấn
công của quái vật cũng sẽ gia tăng theo từng giai đoạn, yêu cầu người chơi cần phải
không ngừng nâng cao chiến thuật né tránh và tấn công.
Mục tiêu cuối cùng của người chơi là chiến đấu và sống sót qua tất cả các giai
đoạn, tiêu diệt hết các quái vật để đến được giai đoạn cuối cùng, nơi quái vật trùm xuất
hiện.
Khi người chơi tiêu diệt được quái vật trùm, họ sẽ giành chiến thắng trò chơi. Quái
vật trùm có sức mạnh và chiến thuật tấn công phức tạp hơn các quái vật trước đó, tạo ra
thử thách lớn nhất cho người chơi.
d) Mô hình hóa và kết quả
Yếu tố chính của bài toán là xác định được phương án tốt nhất cho nhân vật trong
việc vừa tránh né, vừa phản công lại quái vật trong từng giai đoạn, cho đến khi tiêu diệt
được quái vật trùm cuối cùng.
Bài toán này đòi hỏi sự kết hợp giữa chiến thuật, tốc độ phản ứng, và khả năng
thích ứng qua từng giai đoạn để đạt được mục tiêu chiến thắng cuối cùng.
1.2. Thiết kế nhân vật
Tất cả các nhân vật và nền sân khấu được vẽ và sử dụng các hình ảnh có sẵn từ
nhiều nguồn.
Các nhân vật của chương trình như sau:

1.3. Sơ đồ hoạt động của các nhân vật


Danh sách các nhân vật và mô tả chi tiết.
STT Nhân vật Mô tả
1 Player
2 Zombie1
3 Zombie2
4 Zombie3
5 Zombie4
6 Wepon
7 Powerup
8 Bullet
9 Heart
10 Timeline
11 Effect
12 AttackBoss1
13 AttackBoss2
14 Backgroud
15 Start
16 Start_game
17 Play_button
18 Question
19 Tuturial
20 Remove
21 Game_over
22 Game_win
23 Timer
24 Wave
25 Easy, Normal, Hard
26 Again, Out

CHƯƠNG 2: NỘI DUNG CHƯƠNG TRÌNH


2.1. Biến nhớ hệ thống
2.2. Lập trình chi tiết
 Lập trình cho “Player”
Chúng ta tiến hành lập trình cho nhân vật người chơi đầu tiên. Để nhân vật có thể di
chuyển xung quanh các vị trí trên màn hình. Chúng ta sẽ kiểm tra xem nút nào được bấm
trên bàn phím tương ứng với các vị trí lên, xuống, trái, phải bằng lệnh sau:

- Đoạn chương trình điều khiển nhân vật di chuyển trên màn hình là:
- Thiết lập phím W trên bàn phím để chỉ
định khi nhấn vào phím W thì nhân vật sẽ di
chuyển lên phía trên.
- Do nhân vật di chuyển lên phía trên, cho
nên cần thay đổi tọa độ của y tức là sẽ thay đổi
y một lượng bằng 10.
- Sau đó thay đổi trang phục của nhân vật
để tạo nên hiệu ứng mô phỏng chuyển động
của nhân vật. Sau đó chờ 0.05 giây.
Lặp lại với 3 hướng còn lại là đi xuống, sang trái, sang phải. Tuy nhiên với các
hướng sang trái và sang phải thì cần phải thay đổi tọa độ của x, đồng thời đặt hướng của
nhân vật về 90 độ. Sau đó, thiết lập kiểu quay của nhân vật là trái phải, tức là không bao
giờ lộn ngược xuống.

 Lập trình giao diện bắt đầu game


Giao diện mở đầu game sẽ như hình dưới đây:

- Mở đầu game sẽ có tên game và nút “vào trò chơi”.


- Đoạn chương trình của nút “vào trò chơi” là:

- Khi bấm vào lá cờ thì thì nút “ Vào


trò chơi” hiện lên và bắt đầu âm
thanh nhạc nền.
- Khi bấm vào nút “vào trò chơi” chương trình sẽ chuyển sang giao diện tiếp theo.
Đoạn chương trình để làm việc đó như sau:
- Khi nút “vào trò chơi” được bấm thì nút sẽ bị ẩn đi và
gửi thông điệp gd_begin ( giao diện bắt đầu).

- Sau khi nút “vào trò chơi” được bấm, giao diện bắt đầu game sẽ được hiện lên, có các
tùy chọn về mức độ khó của game(Easy, Normal, Hard) và phần hướng dẫn chơi.
- Khi người dùng bấm chọn biểu tượng nút play sẽ phát đi thông
báo “difficulty”, 3 mức độ easy, normal, hard sẽ hiện lên.
- Người dùng sẽ chọn mức độ khó của trò chơi theo mong muốn
bằng cách bấm chọn vào.

- Đoạn chương trình của các nút chọn mức độ “Easy” của game như sau:
- Khi nhận được thông điệp “difficulty”, nút này sẽ hiện lên.

Sau khi người dùng bấm vào nút “Easy” sẽ gửi đi một thông điệp “Easy” sau đó gửi thêm
một thông điệp nữa là “STARTGAME” và ẩn đi.
- Làm tương tự như vậy với 2 nút “Normal” và Hard”.

- Khi bấm vào biểu tượng dấu “?” thông điệp


“huong_dan” sẽ gửi đi.
- Khi nhận được thông điệp sẽ hiện lên giao diện
chứa các thông tin về cách di chuyển nhân vật và
bắn súng.

- Đoạn chương của phần giao diện này như sau:


- Khi nhận thông điệp “huong_dan”, nút này sẽ hiện lên và
khi người chơi bấm vào biểu tượng dấu “x” thì sẽ ẩn đi.
- Phần chương trình của dấu “x” đơn giản chúng ta chỉ cần
khi người chơi bấm vào nút này thì sẽ phát đi thông điệp
“đóng” và ẩn.

 Lập trình cho “mức độ khó của game”


Sau khi người chơi chọn mức độ khó của game, thì game sẽ dự theo mức độ mà
người chơi đã chọn để thay đổi phù hợp. Giả sử ở mức độ “Easy” thì máu của các
zombie sẽ yếu hơn hai mức độ còn lại.

- Khi nhận thông điệp “Easy” sẽ đặt máu cho zombie 1 là 1,


máu của zombie 2 là 10 và của zombie boss sẽ là 20.

Tương tự như vậy, khi nhận thông điệp “Normal” và “Hard” đoạn chương trình sẽ như
sau:

 Lập trình cho “zombie1”


Chúng ta tiến hành lập trình cho nhân vật zombie1 (zombie cấp thường). Để nhân
vật có thể xuất hiện ngẫu nhiên xung quanh từ 4 cạnh của màn hình. Chúng ta sẽ thực
hiện như sau:

- Chúng ta tạo một khối cho việc làm cho zombie


xuất hiện ngẫu nhiên ở 4 cạnh của màn hình.
- Ta cho “Zom_Location” (vị trí của zombie) lấy
ngẫu nhiên các giá trị từ 1 tới 4.
- Sau đó kiểm tra giá trị của vị trí zombie, ví dụ
Zom_Location = 1 thì sẽ cho zombie xuất hiện từ
phía cạnh phải của màn hình (x = 240) và tọa độ
y của nhân vật sẽ ngẫu nhiên trong khoảng từ -180 tới 180. Tương tự như vậy với các
trường hợp bằng 2,3,4.

Sau khi đã làm cho nhân vật zombie1 xuất hiện ngẫu nhiên từ 4 cạnh của sân khấu.
Chúng ta cần cho chúng xuất hiện và tạo ra các bản sao để tạo ra một đội quân zombie tấn
công người chơi. Đoạn chương trình để thực hiện công việc đó như sau:
Cứ sau mỗi 2 giây thì sẽ tạo thêm một bản sao của zombie1.

Sau khi tạo bản sao, zombie sẽ hướng về phía nhân vật Player.
- Đầu tiên ta đặt Max_Hp1 = 0 (số lượng đạn mà
zombie1 trúng phải)
- Sau đó cho xuất hiện bằng khối “Vitriquaivat”
- Zombie1 sẽ liên tục hướng về phía Player.
- Nếu zombie1 đang chạm phải đạn thì sẽ tăng
Max_Hp1 lên 1. Nếu Max_Hp1 lớn hơn Hp_z1 thì
sẽ tăng Exp của người chơi lên 1 và xóa bản sao
này.
 Lập trình cho “zombie2”
Với nhân vật zombie2 này sẽ là một zombie cấp tướng. Nó sẽ có máu nhiều hơn
zombie1 và sát thương gây ra cũng lớn hơn, kinh nghiệm nhận được cũng nhiều hơn.
Phần xuất hiện ở vị trí ngẫu nhiên sẽ làm tương tự như zombie1. Đoạn chương trình
cho nhân vật zombie2 sẽ như sau:

Khi bấm vào lá cờ, nhân vật sẽ ẩn đi và đặt Max_Hp2


thành 0( số lượng đạn mà zombie2 trúng phải)

Khi nhận thông điệp “wave1” nhân vật zombie2 sẽ xuất


hiện với vị trí ngẫu nhiên từ 4 cạnh của sân khấu.

- sau khi xuất hiện, zombie2 sẽ luôn hướng về


nhân vật Player.
- Nếu zombie2 chạm phải đạn thì sẽ tăng
Max_hp2 lên 1.
- Nếu Max_hp2 > Hp_z2 thì tăng Exp của người
chơi lên 5 và ẩn đi.
 Lập trình cho “zombie3”
Với nhân vật zombie3 này sẽ tương đồng với nhân vật zombie2 chỉ thay đổi về
ngoại hình và sẽ xuất hiện khi nhận thông điệp “wave2”.
 Lập trình cho “zombie4”
Nhân vật zombie4 sẽ là Boss chính của game. Với lượng máu lớn, sát thương cao
và đi kèm theo đó là các kĩ năng bắn ra những viên đạn chết chóc. Khi tiêu diệt được
zombie4, người chơi sẽ giành chiến thắng. Đoạn chương trình cho nhân vật zombie4
như sau:
- Khi nhận thông điệp “wave3”, đặt
Max_hp4 thành 0 ( số lượng đạn mà
zombie4 trúng phải).
- Sau đó đi tới cạnh phải phải và xuất hiện
ngẫu nhiên trong khoảng y từ -170 tới
170.
- Phát âm thanh sau đó hiện lên.

- Sau khi xuất hiện zombie4 sẽ liên tục đi về


hướng nhân vật Player.
- Nếu đang chạm phải viên đạn thì thay đổi
Max_Hp4 lên 1.
- Tới khi Max_Hp4 > Hp_z3 thì ẩn đi và phát
thông điệp “Win” và dừng kịch bản này lại.

Quân trần làm tiếp đi


 Lập trình cho “Wave”
Nhân vật Wave sẽ là nhân vật bao quát, điều hành chung của chương trình. Nhân
vật sẽ thực hiện gửi 3 thông điệp sau khi chạy chương trình.
Wave1 Thông điệp thông báo trò chơi chuyển sang mức độ khó hơn.
Zombie2 xuất hiện.
Wave2 Thông điệp thông báo trò chơi chuyển sang mức độ khó hơn.
Zombie3 sẽ xuất hiện.
Wave3 Thông điệp thông báo trò chơi chuyển sang mức độ cuối. Boss cuối
của trò chơi sẽ xuất hiện.

Đoạn chương trình gửi đi thông điệp Wave1 như sau:


Khi Exp của người chơi = 10 ta sẽ tăng exp lên 1 để tránh
tin wave1 bị phát nhiều lần.

Khi đến wave 1, dòng chữ “Wave1” sẽ được hiện lên để thông báo cho người chơi biết.
- Khi nhận thông điệp wave1. Nhân vật sẽ chuyển
sang trang phục phù hợp và hiện trong 1 giây và ẩn
đi.

Tương tự như vậy với “Wave2” và “Wave3”.


 Lập trình cho “Chơi lại”
Nhân vật này khi bấm vào cho phép chúng ta chơi lại. Phần lập trình sẽ như sau:

You might also like