KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀITOÁN 1.1 Miêu tả yêu cầu bài toán - Người chơi điều khiển một hoặc nhiều nhân vật trong một bản đồ được lưu trong một cấu trúc dữ liệu trên bản đồ có các quái
Trang 1VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
-
& -BÀI TẬP LỚN
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
ĐỀ TÀI: XÂY DỰNG MỘT GAME NHẬP VAI SIMPLE RPG
Giáo viên hướng dẫn: ThS Nguyễn Mạnh Tuấn
Mã lớp: 124159 - Nhóm: 13 Sinh viên thực hiện:
1 Phan Ngọc Khải 20194302 khai.pn194302@sis.hust.edu.vn KTMT-01
Quế Hòa
3 Từ Hoàng Giang 20183518 giang.th183518@sis.hust.edu.vn KHMT03
4 Nguyễn Tiến Lâm 20194313 lam.nt194313@sis.hust.edu.vn KTMT-01
Hà Nội – 5/2021
Trang 2MỤC LỤC 1
DANH MỤC HÌNH ẢNH 3
LỜI NÓI ĐẦU 4
1 Lý do chọn và tầm quan trọng của đề tài 4
2 Mô tả đề tài 4
3 Quá Trình Tiếp Cận 4
PHÂN CÔNG THÀNH VIÊN TRONG NHÓM 5
CHƯƠNG 1 KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN 6
1.1 Miêu tả yêu cầu bài toán 6
1.2 Biểu đồ use case 6
1.2.1 Biểu đồ use case tổng quan 6
1.2.2 Biểu đồ use case phân rã mức 2 7
1.3 Đặc Tả Use Case 8
CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ BÀI TOÁN 10
2.1 Biểu đồ trình tự 10
2.2 Biểu đồ gói và biểu đồ lớp 12
2.2.1 Tổng Quát gói Gui, Manager, Map, Weapons 12
2.2.2 Tổng quát gói Actor 13
2.2.3 Biểu đồ lớp cụ thể từng phần 15
2.3 Thiết kế chi tiết lớp 16
CHƯƠNG 3 CÔNG NGHỆ VÀ THUẬT TOÁN SỬDỤNG 18
3.1 Công Nghệ 18
3.2 Kiến Thức 18
3.3 Thuật Toán 18
CHƯƠNG 4 XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA 19
4.1 Kết quả chương trình minh họa 19
4.2 Giao diện chương trình 19
4.2.1 Giao diện chính 20
4.2.2 Giao diện dừng trò chơi 23
4.2.3 Giao diện chiến thắng 23
Trang 34.2.4 Giao diện xử thua cuộc 24
4.3 Kiểm thử các chức năng đã thực hiện 24
4.4 Kết luận 27
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 28
1 Những mặt đã đạt được 28
2 Những mặt chưa đạt được 28
3 Hướng phát triển 28
TÀI LIỆU THAM KHẢO 29
Trang 4DANH MỤC HÌNH ẢNH
Hình 1 : Biểu đồ tuần tự 7
Hình 2 : Biểu đồ lớp tổng quát 8
Hình 3 : Sơ đồ lớp tổng quát gói GUI, Manager, Map, Weapons 8
Hình 4 : Sơ đồ lớp tổng quát 10
Hình 5 : Giao diện chính 15
Hình 6 : Giao diện hướng dẫn 16
Hình 7 : Giao diện màn giới thiệu 17
Hình 8 : Giao diện map cụ thể 17
Hình 9 : Thanh chỉ số của mỗi nhân vật 18
Hình 10 : Giao diện dừng trò chơi 18
Hình 11 : Giao diện chiến thắng 19
Hình 12 : Giao diện thua cuộc 19
Trang 5LỜI NÓI ĐẦU
1 Lý do chọn và tầm quan trọng của đề tài
Khi mới bắt đầu làm quen với lập trình hướng đối tượng thì cách tiếp cậnnhanh chóng mà hiệu quả nhất là đi vào các ví dụ mà ở đó ranh giới giữa cácđối tượng là rõ ràng Như đã biết, game nhập vai không phải là khuynh hướnggame mới mẻ tuy nhiên đây vẫn luôn là thể loại game được nhiều người yêuthích Chúng em cảm thấy đây là một trò chơi rất đỗi quen thuộc và cuốn hút,đồng thời game nhập vai sẽ là một ví dụ tốt để từng thành viên trong nhóm cóđược cái nhìn rõ hơn về môn học nói riêng và lập trình hướng đối tượng nóichung Chính vì lý do này, nhóm chúng em chọn đề tài “Xây dựng một gamenhập vai Simple RPG” để thực hiện chương trình Escape-Ghost demo cho bàitập lớn môn học Chương trình được viết hoàn toàn bởi ngôn ngữ lập trình Java– ngôn ngữ lập trình thuần đối tượng
Bởi do mới làm quen với ngôn ngữ Java cũng như việc xử lý trong lập trìnhhướng đối tượng nên trong chương trình còn hạn chế là việc không tránh khỏi.Vậy nên nhóm chúng em mong có được nhận xét từ phía thầy về đề tài củanhóm để có những khắc phục
2 Mô tả đề tài
Game nhập vai ESCAPE-GHOST gồm có:
• Menu: hiển thị cho phép người chơi lựa chọn thông tin ( Xem hướng dẫn,
chọn chế độ chơi,…)
• Người chơi (Player): Game có 2 người chơi hỗ trợ nhau trong quá trình chơi
• Kẻ địch (Enemy): có khả năng gây sát thương cho player, tấn công và di
chuyễn ngẫu nhiên trên bản đồ
• Bản đồ (Map): bao gồm đường đi, đất, nước,…
3 Quá Trình Tiếp Cận
Chúng em lựa chọn đề tài dựa trên sở thích và khả năng của các thành viêntrong nhóm Quá trình hoàn thiện đề tài kéo dài trong vòng 3 tháng bao gồm cảviệc lên ý tưởng, thảo luận để lựa chọn đề tài
Trang 6PHÂN CÔNG THÀNH VIÊN TRONG NHÓM
Trang 7CHƯƠNG 1 KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI
TOÁN 1.1 Miêu tả yêu cầu bài toán
- Người chơi điều khiển một hoặc nhiều nhân vật trong một bản đồ được lưu trong một cấu trúc dữ liệu (trên bản đồ có các quái vật có thể di chuyển được)
- Các nhân vật người chơi điều khiển và quái vật có các chỉ số xác định tình trạng
và thể lực (ví dụ HP, MP, Attack, Defense, Speed, ) Người chơi có thể tấn công quái vật và sử dụngcác kỹ năng đặc biệt Tương tự, quái vật cũng có thể tìm đến và tấn công người chơi
- Người chơi có thể di chuyển qua lại giữa các bản đồ khác nhau (ví dụ khi đi vàovùng M0, M1, M2, trên bản đồ) hoặc đi đến kết thúc của trò chơi (ví dụ khi đi vào vùng END trên bản đồ)
Đáp ứng yêu cầu bài toán bao gồm:
- Thể hiện bản đồ và các đối tượng trên bản đồ trên giao diện đồ họa
- Quái vật có khả năng di chuyển và tấn công người chơi (quái vật có thể chia thành nhiều loại: tấn công gần, loại có thể tấn công / bắn đạn từ xa, boss,…)
- Game có hai chế độ chơi dễ / khó theo mức độ “thông minh”, “di chuyển
nhanh” hoặc “lượng máu” của quái vật
1.2 Biểu đồ use case
1 Biểu đồ use case tổng quan
Chơi gameDừng gameThoát Game
Nhóm 14
Trang 8Hình 1 Use-case chính
2 Biểu đồ use case phân rã mức 2
Hình 2 Use case “Bắt đầu game” phân rã
Trang 9Hình 3 Use case “chơi game” phân rã đối với người chơi 1
Hình 4 Use case “chơi game” phân rã đối với người chơi 2
1.3 Đặc Tả Use Case
Trang 10Mã UC UC01 Tên Bắt đầu game
(Player 1)
Luồng thực thi
chính
(Player 2)
Trang 11Tác nhân Người dung chương trình
Luồng thực thi
chính
của nhân vật
Trang 12CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ BÀI TOÁN 2.1 Biểu đồ trình tự
Hình 1 : Biểu đồ tuần tự
Trang 132.2 Biểu đồ gói và biểu đồ lớp
Hình 2 : Biểu đồ lớp tổng quát
- Gói Image: Gồm hình ảnh các đối tượng đồ họa dưới dạng các file *.png
- Gói Actor: Gồm mã của nhân vật gồm người chơi, quái vật, boss,
- Gói GUI: Gồm mã của những đối tượng đồ họa
- Gói map: Gồm mã của bản đồ cùng với quái vật cho từng màn chơi
- Gói weapons: Gồm mã của các loại vũ khí
- Gói Manager: Gồm mã của lớp Manager chịu trách nhiệm xử lí va chạm, xử lí qua màn, kết thúc và bắt đầu game
2.2.1 Tổng Quát gói Gui, Manager, Map, Weapons
Hình 3 : Sơ đồ lớp tổng quát gói GUI, Manager, Map, Weapons
Các gói trong biểu đồ trên thuộc tầng giao diện, nghiệp vụ
Trang 14Có các đối tượng thể hiện các menu, hiển thị nhân vật và các hiệu ứng
động Tổng quan về các lớp trong gói:
o Lớp Frame kế thừa từ lướp JFrame hiển thị giao diện trò chơi
o Lớp Container kế thừa từ lớp JPanel chịu trách nhiệm hiển thị các giaodiện điều khiển cho người dùng như là màn hình Menu, Tutorial, MainGame, thôngqua card layout, và các mối quan hệ kết tập với các lớp kết thừa JPanel
o Lớp MainGame thể hiện màn hình chơi game của người chơi kế thừa từ lớp JPanel là nơi thể hiện các đối tượng nhân vật, quái vật,
o Các lớp Tutorial, Menu, End là các JPanel hiển thị màn hình hướng dẫn menu điều khiển và màn hình kết thúc game
o Lớp MyMap lưu giữ thông tin về màn chơi như bản đồ được lưu dướidạng mảng 2 chiều, và các ArrayList quái vật của từng màn chơi Do điều kiện thửnghiệm nên số lượng map là 4 map với 1 mâp khởi động cho người chơi làm quen
o Lớp Manager có các phương thức xử lí va chạm, xử lí các thao tác ngườidùng, xử lí các tương tác của các nhân vật với địa hình, nhân vật khác
o Lớp StatusBar kế thừa từ JPanel hiển thị các thông số của nhân vật
2.2.2 Tổng quát gói Actor
Trang 15Hình 4 : Sơ đồ lớp tổng quátGói thuộc tầng nghiệp vụ.
Gói chịu trách nhiệm lưu giữu thông tin về các đối tượng nhân
vật Tổng quan về các lớp trong gói:
o Lớp Abtract Actor lưu giữ các thuộc tính và phương thưc cơ bản của cácđối tượng nhân vật như các chỉ số HP, MP, speed, các phương thức chung như move,kill,
o Lớp Abtract LongRange kế thừa từ lớp Actor lưu giữ các thuộc tính vàphương thưc cơ bản của các đối tượng nhân vật có tầm đánh xa Lớp này sở hữu một đốitượng vũ khí là Bullet
o Lớp Abtract ShortRange kế thừa từ lớp Actor lưu giữ các thuộc tính vàphương thưc cơ bản của các đối tượng nhân vật có tầm đánh ngắn(do điều kiện đồ họanên phương thức tấn công của các đối tượng này là gây sát thương khi va chạm với nhânvật khác)
o Các lớp thực thi Hunter, Ghost, Monster, Dog thể hiện các nhân vật
người chơi và quái vật kế thừa từ các lớp Abstract trên
o Lớp MyAdapter có các phương thức lắng nghe tác động điều khiển nhân vật cũng như lắng nghe tín hiệu tạm dừng game của người chơi
Trang 162.2.3 Biểu đồ lớp cụ thể từng phần
Trang 172.3 Thiết kế chi tiết lớp
Các lớp quan trọng: MyMap, Container, Ghost, Manager, Actor,
MainGame Mô tả mẫu CRC:
MyMapTạo bản đồ, quái vật
Setup vị trí và số lượng quái
trong từng màn
MainGameDogHunter
ContainerHiển thị giao diện điều khiển
cho người chơi ( Menu, tutorial,
end, maingame,…)
MainGameTutorialMenuEnd
Trang 18Xử lí va chạm, tương tác với
người chơi
Xử lí tương tác của nhân vật với
địa hình, quái vật và nhân vật khác
BulletDogHunterMainGame
ActorTạo các thuộc tính cho nhân vật và
quái như: HP, Max_HP, MP,
Max_MP, defaultSpeed, speed, atk,
defense, status, dead, type,…
MainGameLongRangeShortRange
MainGameHiển thị nhân vật, quái vật, map,…
trên màn hình chơi game
Trang 19CHƯƠNG 3 CÔNG NGHỆ VÀ THUẬT
TOÁN SỬDỤNG
3.1 Công Nghệ
- Môi trường lập trình : Eclipse
- Phần mềm quản lý mã nguồn : Github
3.2 Kiến Thức
Bài tập lớn gồm lượng lớn kiến thức về phân tích và thiết kế hướng đối tượng Cụthể như sau:
- Mô hình lập trình: hướng đối tượng
- Các nguyên lý trong lập trình hướng đối tượng: đóng gói, kế thừa, đa hình, interface,…
- Ngôn ngữ: ngôn ngữ lập trình hướng đối tượng Java
- Cơ bản về cơ sở dữ liệu và thiết kế cơ sở dữ liệu cho game
3.3 Thuật Toán
Trang 20CHƯƠNG 4 XÂY DỰNG CHƯƠNG
TRÌNH MINH HỌA 4.1 Kết quả chương trình minh họa
Nhìn chung sản phẩm minh họa khá thành công vì đã thực hiện được hầu hết các yêucầu đưa ra:
- Thể hiện bản đồ và các đối tượng trên bản đồ trên giao diện đồ họa - Điều khiểnnhân vật di chuyển
- Có 2 người chơi với phím di chuyển và kỹ năng khác nhau :
Người chơi 1 có khả năng di chuyển và tấn công quái bằng súngNgười chơi 2 có khả năng đốt quái ở trong phạm vi gần, dịch chuyển đến
vị trí người chơi 1 và hồi máu cho cả 2
- Quái vật có khả năng di chuyển và tấn công người chơi
- Game có hai chế độ hơi dễ/khó theo mức độ “thông minh”, “di chuyển nhanh” hoặc “lượng máu” của quái vật
- Có thể dừng game để tiếp tục sau 1 khoảng thời gian
Game nhập vai Escape Ghost có chức năng chính như sau :
- Giao diện khi vào game có Tutorial giúp người chơi có thể biết được kỹ năng
của mỗi người chơi và hiểu về cách thức để chiến thắng game
- Khi vào game người chơi có thể chọn 2 chế độ chơi :
Play Easy : trong chế độ này người chơi 1 không thể tấn công được người chơi 2, quái vật có chỉ số thấp hơn
Play Hard : ở chế độ này người chơi 1 có thể tấn công người chơi 2 đồng thời tang chỉ số của quái vật
- Người chơi có thể dừng game với phím P và tiếp tục game sau khi nhấn nút
Space
- Người chơi vượt qua mỗi màn chơi bằng cách đi vào bụi cỏ ở bên phải màn
hình sau khi tiêu diệt quái vật
- Nhân vật 1 được điều khiển di chuyển bằng các phím ↓ ↑ ← → và tấn công
quái vật bằng phím Enter
- Nhân vật 2 được điều khiển di chuyển bằng các phím W S A D và có các kỹ năng như thiêu đốt quái xung quanh, dung phím B để dịch chuyển đến nhân vật 1 và hồi máu bằng phím N
- Người chơi có thể bị xử thua sau khi 1 trong 2 nhân vật hết lượng máu (HP) củamình
4.2 Giao diện chương trình
Trang 214.2.1 Giao diện chính
Hình 5 : Giao diện chính
- Trên giao diện chính của game gồm có 3 chức năng chính :
TUTORIAL : Xem hướng dẫn game
Trang 22Hình 6 : Giao diện hướng dẫn
PLAY EASY : Chơi ở chế độ dễ
PLAY HARD : Chơi ở chế độ khó
Dù chơi ở chế độ nào người chơi cũng bắt đầu ở một màn chơi không có quái vật để làm quen với game ( di chuyển và sử dụng skill đối với mỗi nhân vật)
Trang 23Hình 7 : Giao diện màn giới thiệu
Sau khi vượt qua màn giới thiệu giao diện trong game sẽ thay đổi vào giao diện mỗi map
Hình 8 : Giao diện map cụ thể
Trang 24Trong màn giới thiệu và kể cả màn chơi thông số của nhân vật 1 và
nhân vật 2 đều được nêu rõ ở thanh dưới màn hình
Hình 9 : Thanh chỉ số của mỗi nhân vậtTrong đó
Ghost HP là lượng máu của nhân vật 1
Ghost MP là mana dùng để tấn công của nhân vật 1 ( có thể hồi lại khi đạn trúng vật cản hoặc đi ra ngoài map)
Ghost-ATK là chỉ số tấn công của nhân vật 1Monster HP là lượng máu của nhân vật 2Monster MP là lương mana để sử dụng kỹ năng của nhân vật 2
Monster-ATK là số dame đốt quái xung quanh mỗi giây của nhân vật 2Monster AT-Ranger là phạm vi đốt quái vật của nhân vật 2
4.2.2 Giao diện dừng trò chơi
Hình 10 : Giao diện dừng trò chơi
4.2.3 Giao diện chiến thắng
Trang 25Hình 11 : Giao diện chiến thắng
4.2.4 Giao diện xử thua cuộc
Hình 12 : Giao diện thua cuộc
4.3 Kiểm thử các chức năng đã thực hiện
Các chức năng đã được xây dựng trong chương trình :
Trang 261 Bắt đầu game
2 Di chuyển đối với mỗi nhân vật
3 Tân công (đối với Player 1)
4 Kỹ năng của nhân vật 2 ( Gồm : dịch chuyển đến nhân vật 1, hồi máu cho nhân vật 1, đốt quái xung quanh)
5 Quái tấn công : Quái vật tầm gần Quái vật tầm xa
Bảng 1 : Kết quả kiểm thử chức năng Bắt đầu game
ở màn hình chính hướng dân game
2 Chọn chế độ Play Hiển thị giao diện game Không xử lý OK
Bảng 2 : Kết quả kiểm thử chức năng di chuyển đói với mỗi nhân vật
nhân vật 1 và W phía trên
đối với nhân vật 2
nhân vật 1 và S đối phía dưới
với nhân vật 2
3 Nhấn ← đối với Player di chuyển sang Không xử lý OK
nhân vật 1 và A trái
đối với nhân vật 2
nhân vật 1 và D phải
đối với nhân vật 2
Bảng 3 : Tấn công đối với Player 1
quả
Trang 271 Nhấn Enter Cập nhật lượng máu của Không xử lý FAIL
quái vật nếu lượng máuthấp hơn 0 quái vật sẽbiến mất khỏi bản đồ(Lương MP sẽ giảm đi 1sau 1 lần tấn công)
Bảng 4 : Kỹ năng của Player 2
1 Dịch chuyển đến Cập nhật vị trí của nhân Không xử lý FAIL
nhân vật 1 vật 2 trên bản đồ trùng
với nhân vật 1 (Tiêu hao
10 MP)
vật 1 ( Phím N) vật 1 trên thanh công cụ
tăng 100 (Tiêu hao 20MP)
3 Đốt quái trong tầm Quái vật bị trừ lượng Không xử lý OK
đốt ở xung quanh máu tương ứng số lần
đốt ( 3 Hp/s)
Bảng 5 : Quái tấn công
cạnh nhân vật vật bị trừ đi 20HP/s
vật 1 ( Phím N) vật 1 trên thanh công cụ
tăng 100 ( Ti
3 Đốt quái trong tầm Quái vật bị trừ lượng Không xử lý OK
đốt ở xung quanh máu tương ứng số lần
đốt ( 3 Hp/s)
Bảng 6 : Chuyển map
1 Cả 2 nhân vật đều Giao diện chuyển đến Chưa tiêu diệt OK
ở bụi cỏ bên phải map tiếp theo sau hết quái vật
Trang 28chuyển đến sẽxảy ra lỗi
Bảng 7 : Dừng và tiếp tục game
1 Người chơi nhấn Hiển thị “Press Space to Không xử lý OK
1 Một trong hai nhân Hiển thị giao diện dừng Không xử lý OK
vật có Hp bằng 0 trò chơi và đưa ra lựa
chọn cho người chơi 2lựa chọn “Go Menu”
Trang 29KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1 Những mặt đã đạt được
- Hiểu và làm viêc được
- Cơ hội làm quen với lập trình game cơ bản, được xây dựng chương trình cụ thể
- Game thiết kế với đồ họa dễ nhìn cách chơi đơn giản không gặp quá nhiểu lỗi tích hợp được nhiều tính năng và thỏa mãn tiêu chí đề ra
2 Những mặt chưa đạt được
3 Hướng phát triển
Trang 30TÀI LIỆU THAM KHẢO
[1] Lập trình hướng đối tượng – Bài giảng của ThS Nguyễn Mạnh Tuấn