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ợ
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à dichuyễ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ụ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
- Điều khiển nhân vật di chuyển
- Có các thao tác để tấn công quái vật
- 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ể chiathà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ểnnhanh” 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
- Tác nhân : người chơi 1, người chơi 2
- Các use case đối với mỗi người chơi
Bắt đầu game
Chơi game
Dừng game
Trang 8 Thoá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 15 Có 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ông qua card layout, và các mối quan hệ kết tập với cáclớ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ẫnmenu đ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 độngcho 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át
Gó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ứcchung 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 đối tượ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ọa nên phương thức tấn công của các đối tượng này là gâysát thương khi va chạm với nhân vật khác)
o Các lớp thực thi Hunter, Ghost, Monster, Dog thể hiện các nhân vậtngườ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
MainGameDog Hunter
ContainerHiển thị giao diện điều khiển cho MainGame
người chơi ( Menu, tutorial, end, Tutorial
End
GhostThiết lập các chỉ số: HP, MP,
Speed, atk,…các image ứng với
các trạng thái di chuyển
Thiết lập di chuyển cho nhân vật
Ghost
MainGameLongRange
Trang 19Xử lí va chạm, tương tác với người Bullet
Xử lí tương tác của nhân vật với địa Hunter
hình, quái vật và nhân vật khác MainGame
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,… MyMap
trên màn hình chơi game Monster
Thiết lập chức năng phím tắt Hunter
Kiểm tra trạng thái nhân vật, quái MyAdapter
Ghost
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úng
Ngườ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ườichơ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
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 1
Monster HP là lượng máu của nhân vật 2
Monster 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 2
Monster 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)
Bảng 1 : Kết quả kiểm thử chức năng Bắt đầu game
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
đối với nhân vật 2
Player di chuyển lên
đối với nhân vật 2
Player di chuyển sang
4 Nhấn → đối với
nhân vật 1 và D
đối với nhân vật 2
Player di chuyển sangphải
Không xử lý OK
Bảng 3 : Tấn công đối với Player 1
quả
Trang 281 Nhấn Enter Cập nhật lượng máu của
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)
Không xử lý FAIL
Bảng 4 : Kỹ năng của Player 2
nhân vật 1 Cập nhật vị trí của nhânvật 2 trên bản đồ trùng
với nhân vật 1 (Tiêu hao
cạnh nhân vật Lượng máu của nhânvật bị trừ đi 20HP/s Không xử lý OK
vật 1 ( Phím N)
Lượng máu của nhânvật 1 trên thanh công cụtăng 100 ( Ti
Không xử lý OK
3 Đốt quái trong tầm
đốt ở xung quanh
Quái vật bị trừ lượng máu tương ứng số lầnđốt ( 3 Hp/s)
Không xử lý OK
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
Không xử lý OK
Bảng 8 : Thua game
1 Một trong hai nhân
vật có Hp bằng 0 Hiển thị giao diện dừngtrò 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