TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆ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
MỤC LỤC
MỤ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.
2.1
PHÂN TÍCH THIẾT KẾ BÀI TOÁN........................................... 10
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
4.2.2
4.2.3
Giao diện chính........................................................................................ 20
Giao diện dừng trò chơi........................................................................... 23
Giao diện chiến thắng.............................................................................. 23
4.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
IT3100 – Lập trình hướng đối tượng
DANH 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
Nhóm 14
3
LỜ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ận
nhanh 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ướng
game mới mẻ tuy nhiên đây vẫn luôn là thể loại game được nhiều người yêu
thí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ói
chung. Chính vì lý do này, nhóm chúng em chọn đề tài “Xây dựng một game
nhập vai Simple RPG” để thực hiện chương trình Escape-Ghost demo cho bài
tậ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ình
hướ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ủa
nhó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ên
trong 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.
PHÂN CÔNG THÀNH VIÊN TRONG NHÓM
1
CHƯƠ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ể 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
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
Thoát Game
2
Hình 1. Use-case chính
Biểu đồ use case phân rã mức 2
Hình 2. Use case “Bắt đầu game” phân rã
Hì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
Mã UC
UC01
Tên
Tác nhân
Người dung chương trình
Điều kiện trước
Không có
Luồng thực thi
chính
No.
Thực hiện
Hành động
1.
Player
Mở trò chơi
2.
System
3.
Player
Hiện thị giao diện
chọn chế độ chơi
Chọn chế độ
4.
System
5
System
Khởi tạo game với
chế độ đã chọn
Hiển thị giao diện
chơi
Không có
UC02
Tên
Điều kiện sau
Mã UC
Tác nhân
Người dung chương trình
Điều kiện trước
Tác nhân đã bắt đầu game
Luồng thực thi
chính
No.
Thực hiện
Hành động
1.
Player1
Chơi game
2.
System
3.
Player1
4.
System
5.
System
Hiển thị giao diện
chơi
Di chuyển hoặc tấn
công
Cập nhật vị trí của
nhân vật
Cập nhật quái vật
bị bắn trúng
Không có
Điều kiện sau
Mã UC
UC03
Tên
Bắt đầu game
Chơi Game
(Player 1)
Chơi game
(Player 2)
Tác nhân
Người dung chương trình
Điều kiện trước
Tác nhân đã bắt đầu game
Luồng thực thi
chính
No.
Thực hiện
Hành động
1.
Player2
Chơi game
2.
System
3.
Player2
4.
System
5
Player2
Hiển thị giao diện
chơi game
Dịch chuyển đến
người chơi 1 hoặc
di chuyển
Cập nhật vị trí của
người chơi 2
Hồi máu
6.
System
Điều kiện sau
Cập nhật lại máu
của nhân vật
Không có
CHƯƠNG 2.
2.1
PHÂN TÍCH THIẾT KẾ BÀI TOÁN
Biểu đồ trình tự
Hình 1 : Biểu đồ tuần tự
2.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ụ.
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 giao
diệ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á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ưới
dạ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ười
dù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
Hì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ứ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 đố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ây
sá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ậ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
2.2.3 Biểu đồ lớp cụ thể từng phần
2.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:
MyMap
Tạo bản đồ, quái vật.
Setup vị trí và số lượng quái trong
từng màn.
MainGame
Dog
Hunter
Container
Hiển thị giao diện điều khiển cho
người chơi ( Menu, tutorial, end,
maingame,…)
MainGame
Tutorial
Menu
End
Ghost
Thiế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.
MainGame
LongRange
Manager
Xử 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.
Bullet
Dog
Hunter
MainGame
Actor
Tạ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,…
MainGame
LongRange
ShortRange
MainGame
Hiể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
vật
Manager
(dead, live)
Dog
Ghost
CHƯƠNG 3.
3.1
Công Nghệ
-
3.2
CÔNG NGHỆ VÀ THUẬT TOÁN
SỬDỤNG
Môi trường lập trình : Eclipse
Phần mềm quản lý mã nguồn : Github
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
- Xem thêm -