1. Trang chủ
  2. » Tất cả

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

31 11 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Một Game Nhập Vai Simple Rpg
Người hướng dẫn ThS. Nguyễn Mạnh Tuấn
Trường học Trường Đại Học Bách Khoa Hà Nội
Thể loại Bài tập lớn
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 31
Dung lượng 1,1 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1. Lý do chọn và tầm quan trọng của đề tài (5)
  • 2. Mô tả đề tài (5)
  • 3. Quá Trình Tiếp Cận (5)
  • CHƯƠNG 1. KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN (7)
    • 1.1 Miêu tả yêu cầu bài toán (7)
    • 1.2 Biểu đồ use case (7)
      • 1.2.1 Biểu đồ use case tổng quan (0)
      • 1.2.2 Biểu đồ use case phân rã mức 2 (0)
    • 1.3 Đặc Tả Use Case (10)
  • CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ BÀI TOÁN (13)
    • 2.1 Biểu đồ trình tự (13)
    • 2.2 Biểu đồ gói và biểu đồ lớp (14)
      • 2.2.1 Tổng Quát gói Gui, Manager, Map, Weapons (14)
      • 2.2.2 Tổng quát gói Actor (15)
      • 2.2.3 Biểu đồ lớp cụ thể từng phần (17)
    • 2.3 Thiết kế chi tiết lớp (18)
  • CHƯƠNG 3. CÔNG NGHỆ VÀ THUẬT TOÁN SỬDỤNG (20)
    • 3.1 Công Nghệ (20)
    • 3.2 Kiến Thức (20)
    • 3.3 Thuật Toán (20)
  • CHƯƠNG 4. XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA (21)
    • 4.1 Kết quả chương trình minh họa (21)
    • 4.2 Giao diện chương trình (21)
      • 4.2.1 Giao diện chính (22)
      • 4.2.2 Giao diện dừng trò chơi (25)
    • 4.4 Kết luận (29)
    • 1. Những mặt đã đạt được (30)
    • 2. Những mặt chưa đạt được (30)
    • 3. Hướng phát triển (30)
  • TÀI LIỆU THAM KHẢO (31)

Nội dung

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ợ

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, cách tiếp cận hiệu quả nhất là học qua các ví dụ cụ thể, nơi ranh giới giữa các đối tượng rõ ràng Trong đó, game nhập vai là thể loại game quen thuộc và hấp dẫn, giúp các thành viên dễ dàng hiểu hơn về môn học này Chúng tôi chọn đề tài “Xây dựng game nhập vai Simple RPG” để thực hành môn học, đặc biệt là qua dự án Escape-Ghost demo, được phát triển hoàn toàn bằng ngôn ngữ lập trình Java – ngôn ngữ hướng đối tượng nổi bật.

Do còn mới tiếp cận với ngôn ngữ Java và lập trình hướng đối tượng, nhóm chúng em gặp phải những hạn chế trong quá trình phát triển dự án Chúng em rất mong nhận được ý kiến phản hồi từ thầy để có thể khắc phục các hạn chế và hoàn thiện đề tài một cách tốt nhất.

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,…

Quá Trình Tiếp Cận

Chúng tôi 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, đảm bảo phù hợp và có thể phát triển tốt Quá trình hoàn thiện đề tài kéo dài khoảng 3 tháng, bao gồm các bước lên ý tưởng, thảo luận và lựa chọn đề tài phù hợp nhất Việc này giúp nhóm xây dựng nội dung chất lượng, sáng tạo và phù hợp với xu hướng tìm kiếm của khách hàng.

PHÂN CÔNG THÀNH VIÊN TRONG NHÓM

KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN

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 trên bản đồ trong trò chơi, được lưu trữ trong các cấu trúc dữ liệu tối ưu để quản lý vị trí và trạng thái của các nhân vật cũng như quái vật Trên bản đồ, có các quái vật di chuyển và tương tác, tạo nên trải nghiệm game hấp dẫn và chiến thuật Quản lý dữ liệu chính xác giúp cung cấp trải nghiệm chơi mượt mà và sinh động hơn cho người chơi.

Trong các trò chơi, nhân vật người chơi và quái vật đều có các chỉ số quan trọng như HP, MP, Attack, Defense, và Speed để xác định trạng thái và thể lực của họ 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 để chiến đấu hiệu quả Ngược lại, quái vật cũng có khả năng tìm đến và tấn công người chơi, tạo ra các trận chiến đầy kịch tính và hấp dẫn.

Người chơi có thể dễ dàng di chuyển giữa các bản đồ khác nhau như M0, M1, M2, nhằm khám phá các khu vực mới trong trò chơi Ngoài ra, họ còn có khả năng tiến đến đích cuối cùng của trò chơi bằng cách đi đến vùng END trên bản đồ Khả năng di chuyển linh hoạt này giúp tăng trải nghiệm độc đáo và thúc đẩy sự thú vị trong quá trình chơi game.

 Đá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 trong game có khả năng di chuyển linh hoạt và tấn công người chơi một cách đa dạng Các loại quái vật gồm có quái vật tấn công cận chiến, quái vật có khả năng tấn công hoặc bắn đạn từ xa, và các boss mạnh mẽ với đòn tấn công đặc biệt Sự đa dạng về loại hình và khả năng của quái vật tạo nên trải nghiệm chơi game hấp dẫn và thử thách hơn.

- 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

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

2 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

Đặc Tả Use Case

Mã UC UC01 Tên Bắt đầu game

Tác nhân Người dung chương trình Điều kiện trước Không có

No Thực hiện Hành động

2 System Hiện thị giao diện chọn chế độ chơi

4 System Khởi tạo game với chế độ đã chọn

5 System Hiển thị giao diện Điều kiện sau Không cóchơi

Mã UC UC02 Tên Chơi Game

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

No Thực hiện Hành động

2 System Hiển thị giao diện

3 Player1 Di chuyển hoặc tấnchơi

4 System Cập nhật vị trí củacông nhân vật

5 System Cập nhật quái vật bị bắn trúng Điều kiện sau Không có

Mã UC UC03 Tên Chơi game

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

No Thực hiện Hành động

2 System Hiển thị giao diện chơi game

3 Player2 Dịch chuyển đến người chơi 1 hoặc di chuyển

4 System Cập nhật vị trí của người chơi 2

6 System Cập nhật lại máu của nhân vật Điều kiện sau Không có

PHÂN TÍCH THIẾT KẾ BÀI TOÁN

Biểu đồ trình tự

Hình 1 : Biểu đồ tuần tự

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ác đối tượng thể hiện các menu, hiển thị nhân vật và các hiệu ứng động.

Các lớp trong gói được thiết kế để xây dựng và quản lý giao diện cũng như chức năng của trò chơi Lớp Frame kế thừa từ JFrame để hiển thị giao diện chính của trò chơi, trong khi lớp Container kế thừa từ JPanel chịu trách nhiệm hiển thị các giao diện điều khiển 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 con của JPanel Lớp MainGame thể hiện màn hình chơi game chính, nơi các đối tượng như nhân vật và quái vật xuất hiện, đều kế thừa từ JPanel Các lớp như Tutorial, Menu, End cũng là các JPanel, đảm nhiệm việc hiển thị các màn hình hướng dẫn, điều khiển và kết thúc trò chơi Lớp MyMap lưu giữ dữ liệu về bản đồ màn chơi dưới dạng mảng 2 chiều và các danh sách ArrayList chứa quái vật cho từng cấp độ, với tổng số bản đồ gồm 4 map trong quá trình thử nghiệm Lớp Manager xử lý các thao tác va chạm, tương tác của người chơi với môi trường và các đối tượng khác trong game Cuối cùng, lớp StatusBar kế thừa từ JPanel, dùng để hiển thị các thông số của nhân vật như máu, điểm số, v.v.

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

Các lớp trong gói được thiết kế theo cấu trúc rõ ràng nhằm phù hợp với các đặc điểm của từng loại nhân vật Lớp Abstract Actor giữ các thuộc tính cơ bản như HP, MP và speed, cùng các phương thức chung như move và kill Lớp Abstract LongRange kế thừa từ Actor, dành cho các đối tượng có tầm đánh xa, sở hữu một đối tượng vũ khí là Bullet Lớp Abstract ShortRange cũng kế thừa từ Actor, dành cho các đối tượng có tầm đánh gần, thực hiện tấn công dựa trên va chạm gây sát thương Các lớp 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 phù hợp Cuối cùng, lớp MyAdapter chứa các phương thức lắng nghe sự kiện điều khiển nhằm xử lý các tác động từ người chơi.

2.2.3 Biểu đồ lớp cụ thể từng phần

Thiết kế chi tiết lớp

 Các lớp quan trọng: MyMap, Container, Ghost, Manager, Actor, MainGame.

MyMap Tạo bản đồ, quái vật.

Setup vị trí và số lượng quái trong từng màn.

Container Hiển thị giao diện điều khiển cho MainGame người chơi ( Menu, tutorial, end, Tutorial maingame,…) Menu

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

Xử lí va chạm, tương tác với người Bullet chơi Dog

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

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 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

CÔNG NGHỆ VÀ THUẬT TOÁN SỬDỤNG

Công Nghệ

- 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

XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA

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ển nhâ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ườ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

- 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ủa mình

Giao diện chương trì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

Hình 6 : Giao diện hướng dẫn

 PLAY EASY : Chơi ở chế độ dễ

 PLAY HARD : Chơi ở chế độ khó

Dù lựa chọn chế độ chơi nào đi chăng nữa, người chơi cũng bắt đầu với một màn đấu không có quái vật để làm quen với cách chơi, bao gồm các thao tác di chuyển và sử dụng kỹ năng của từng nhân vật Điều này giúp người chơi dễ dàng làm quen với cơ chế game trước khi đối mặt với những thử thách thực sự Việc bắt đầu từ những màn chơi không có quái vật giúp tăng khả năng làm quen và nâng cao kỹ năng điều khiển nhân vật, đảm bảo trải nghiệm game mượt mà hơn.

Hì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ể

Trong 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ật

 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

Hì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

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)

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

STT input output Exception Kết quả

1 Chọn TUTORIAL ở màn hình chính Hiển thị giao diện hướng dân game Không xử lý OK

Hiển thị giao diện game mới ở chế độ dễ

Hiển thị giao diện game mới ở chế độ dễ

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

STT input output Exception Kết quả

1 Nhấn ↑ đối với nhân vật 1 và W đối với nhân vật 2

Player di chuyển lên phía trên Không xử lý OK

2 Nhấn ↓ đối với nhân vật 1 và S đối với nhân vật 2

Player di chuyển xuống phía dưới

3 Nhấn ← đối với nhân vật 1 và A đối với nhân vật 2

Player di chuyển sang trái Không xử lý OK

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 sang phải

Bảng 3 : Tấn công đối với Player 1

STT input output Exception Kết

Khi nhấn Enter để cập nhật lượng máu của quái vật, nếu máu của chúng giảm xuống dưới 0, quái vật sẽ biến mất khỏi bản đồ Lượng MP của quái vật cũng sẽ giảm đi 1 sau mỗi lần tấn công, ảnh hưởng đến khả năng chiến đấu của chúng.

Bảng 4 : Kỹ năng của Player 2

STT input output Exception Kết quả

1 Dịch chuyển đến nhân vật 1 Cập nhật vị trí của nhân vật 2 trên bản đồ trùng với nhân vật 1 (Tiêu hao

2 Hồi máu cho nhân vật 1 ( Phím N)

Lượng máu của nhân vật 1 trên thanh công cụ tăng 100 (Tiêu hao 20 MP)

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)

STT input output Exception Kết quả

1 Quái tầm gần ở cạnh nhân vật Lượng máu của nhân vật bị trừ đi 20HP/s Không xử lý OK

2 Hồi máu cho nhân vật 1 ( Phím N)

Lượng máu của nhân vật 1 trên thanh công cụ tăng 100 ( Ti

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)

STT input output Exception Kết quả

1 Cả 2 nhân vật đều ở bụi cỏ bên phải Giao diện chuyển đến map tiếp theo sau Chưa tiêu diệt hết quái vật OK chuyển đến sẽ xảy ra lỗi

Bảng 7 : Dừng và tiếp tục game

STT input output Exception Kết quả

1 Người chơi nhấn phím P để dừng game trong lúc chơi

Hiển thị “Press Space to play” đồng thời dừng mọi hoạt động của game

Space để tiếp tục chơi game (Sau khi nhấn P)

Hiển thị lại giao diện còn dở ở lần nhấn P lúc trước

STT input output Exception Kết quả

1 Một trong hai nhân vật có Hp bằng 0 Hiển thị giao diện dừng trò chơi và đưa ra lựa chọn cho người chơi 2 lựa chọn “Go Menu” hoặc “Again”

Kết luận

- Các chức năng thử nghiệm đều ổn định và không gặp bất cứ lỗi hay phải xử lý ngoại lệ.

Quá trình thử nghiệm mang tính chủ quan cao, gây ra nhiều hạn chế như các lỗi chưa được phát hiện trong quá trình kiểm thử, hoặc kiểm thử không phát hiện lỗi nhưng khi vận hành thực tế lại gây ra sự cố.

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

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 được thiết kế với đồ họa dễ nhìn, tạo trải nghiệm trực quan và thân thiện với người chơi Cách chơi đơn giản, dễ tiếp cận, phù hợp với mọi đối tượng người dùng Ngoài ra, trò chơi không gặp nhiều lỗi kỹ thuật, đảm bảo vận hành mượt mà và ổn định Bên cạnh đó, game tích hợp nhiều tính năng hấp dẫn, giúp nâng cao trải nghiệm người chơi và đáp ứng các tiêu chí đề ra về chất lượng và độ hấp dẫn của sản phẩm.

Ngày đăng: 04/04/2023, 05:26

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w