KHẢO SÁT, ĐẶC TẢ YÊU CẦUBÀ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
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: 14
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
Trang 34.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ìnhtrạ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ụng cá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ào vù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 game
Nhóm 14
Trang 8Thoát Game
Trang 9Hì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 10Hì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 11Mã UC UC01 Tên Bắt đầu game
(Player 1)
Luồng thực thi
chính
(Player 2)
Trang 12Tác nhân Người dung chương trình
Luồng thực thi
chính
của nhân vật
Trang 13CHƯƠ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 142.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
Trang 15Có 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 16Hì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
Trang 172.2.3 Biểu đồ lớp cụ thể từng phần
Trang 182.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
MainGame
DogHunter
Container
Hiển thị giao diện điều khiển
cho người chơi ( Menu, tutorial,
end, maingame,…)
MainGame
TutorialMenuEnd
Trang 19Xử 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,…
MainGameLongRange
ShortRange
MainGame
Hiển thị nhân vật, quái vật, map,
… trên màn hình chơi game
MyAdapter
ManagerDogGhost
Trang 20CHƯƠ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 21CHƯƠ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êu cầ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 224.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 23Hì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 24Hì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
Trang 25Trong 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 26Hì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
Trang 271. 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
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
Trang 281 Nhấn Enter Cập nhật lượng máu của
quái vật nếu lượng máu thấ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)
Không xử lý FAIL
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
Trang 29chuyể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 30KẾ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 31TÀ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