1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo Game nhập vai RPG

46 219 2

Đ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

Định dạng
Số trang 46
Dung lượng 3,49 MB

Nội dung

Với đề tài số 1 là Xây dựng một game nhập vai đơn giản SimpleRPG. Đề tài này cho ta cái nhìn tổng quát nhất về Lập trình hướng đối tượng. Nó cho ta biết cách xây dựng và thiết kế các đối tượng, liên kết chúng với nhau lại như thế nào và cách để hoàn thiện một chương trình là như thế nào.

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 MƠN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Xây Dựng Một Game Nhập Vai Đơn Giản SimpleRPG Sinh viên thực hiện: Nguyễn Bá Duy 20194261 Lê Thị Nguyệt 20194343 Hoàng Thị Nhung 20194349 Trần Văn Phúc 20194354 Trần Văn Quang 20194147 Lớp :124159 – K64 Giáo viên hướng dẫn : ThS Nguyễn Mạnh Tuấn Hà Nội, tháng năm 2021 Simple RPG Game Lời nói đầu Phân cơng thành viên nhóm CHƯƠNG Khảo sát đặc tả yêu cầu toán 1.1 Mơ tả u cầu tốn 1.2 Biểu đồ Use Case 1.2.1 Biểu đồ use case tổng quan 1.2.2 Biểu đồ use case phân rã mức 1.3 Đặc tả Use Case 1.3.1 Danh sách Actor 1.3.2 Danh sách Use Case 1.3.3 Đặc tả Use Case CHƯƠNG Phân tích thiết kế toán 2.1 Biểu đồ trình tự 2.2 Biểu đồ lớp 2.2.1 Biểu đồ lớp 2.2.2 Biểu đồ lớp package liên quan 15 2.3 Thiết kế chi tiết Pakage Class 21 2.3.1 CHƯƠNG Các lớp quan trọng 21 Cơng nghệ thuật tốn sử dụng 32 3.1 Ngơn ngữ lập trình tảng cơng nghệ 32 3.2 Kỹ thuật, cấu trúc liệu thuật toán 32 CHƯƠNG Xây dựng chương trình minh họa 35 4.1 Kết chương trình minh hoạ 35 4.2 Giao diện chương trình 35 4.3 Kiểm thử chức thực 41 4.3.1 Chức năng: Di chuyển phát va chạm 41 4.3.2 Chức năng: Hệ thống công, HP, Mana người chơi quái 42 4.3.3 Chức năng: Game over win game 42 Kết luận hướng phát triển 43 Tài liệu tham khảo 44 Lời nói đầu Ngày nay, ngành cơng nghệ thông tin phát triển cách vũ bão lĩnh vực đời sống Trong ngành cơng nghệ game bùng nổ, ngày có nhiều sản phẩm game đời để đáp ứng nhu cầu giải trí, sử dụng người Từ xu hướng nhóm chúng em định tạo tựa game nhập vai đơn giản để thầy bạn thử sức Với đề tài số Xây dựng game nhập vai đơn giản SimpleRPG Đề tài cho ta nhìn tổng quát Lập trình hướng đối tượng Nó cho ta biết cách xây dựng thiết kế đối tượng, liên kết chúng cách để hồn thiện chương trình Sau chọn đề tài nhóm bắt đầu tìm hiểu đọc tài liệu liên quan đến đề tài, tìm hiểu cách xây dựng, thiết kế tựa game 2D Khi tìm hiểu nhóm có họp để phân chia cơng việc cho thành viên dựa điểm mạnh người Sau gần học kì, từ cố gắng tìm kiếm tài liệu, tích cực trao đổi thơng tin với thành viên nhóm, nhóm cho đời phiên game nhập vai SimpleRPG, nhiều chức chưa hồn thiện nhiên có đầy đủ chức game đơn giản để đáp ứng nhu cầu giải trí người Vì chương trình nên khơng thể tránh khỏi sai sót q trình xây dựng chương trình Nên nhóm hi vọng nhận phản hồi, đánh giá góp ý tích cực thầy bạn lớp để chương trình hồn thiện Nhóm xin chân thành cảm ơn !!! Nhóm IX Phân cơng thành viên nhóm Họ tên Email Nguyễn Bá Duy duy.nb194261@sis.hust.edu.vn Cơng việc thực Kiểm thử, làm slide, tìm hiểu thuật tốn Lê Thị Nguyệt nguyet.lt194343@sis.hust.edu.vn Xử lí thuật tốn, làm báo cáo, kiểm thử Hồng Thị Nhung nhung.ht194349@sis.hust.edu.vn Code chính, làm báo cáo, trưởng nhóm Trần Văn Phúc phuc.tv194354@sis.hust.edu.vn Làm báo cáo, âm thanh, code phụ Trần Văn Quang quang.tv194147@sis.hust.edu.vn Xử lí đồ họa, làm slide Đánh giá Tốt Tốt Tốt Tốt Tốt Nhóm IX CHƯƠNG Khảo sát đặc tả u cầu tốn 1.1 Mơ tả u cầu toán Người chơi điều khiển nhiều nhân vật đồ lưu cấu trúc liệu, ví dụ: mảng hai chiều, tương ứng với dạng đồ khác (đất, cỏ, nước ) Trên đồ có quái vật di chuyển Các nhân vật người chơi điều khiển quái vật có số xác định tình trạng thể lực (ví dụ HP, MP, Attack, Defense, Speed ) Người chơi công quái vật sử dụng kỹ đặc biệt Tương tự, quái vật tìm đến cơng người chơi Người chơi di chuyển qua lại đồ khác (ví dụ vào vùng M0, M1, M2 đồ) đến kết thúc trị chơi (ví dụ vào vùng END đồ) 1.2 Biểu đồ Use Case 1.2.1 Biểu đồ use case tổng quan Nhóm IX 1.2.2 Biểu đồ use case phân rã mức 1.3 Đặc tả Use Case 1.3.1 Danh sách Actor Tên Actor Actor Ý Nghĩa Người Chơi Game 1.3.2 Danh sách Use Case Tên Use Case Start Level Character Help Ý nghĩa Đưa người chơi vào chơi game Chọn mức độ chơi game dễ khó Chọn nhân vật để chơi game Hướng dẫn chơi game Nhóm IX 1.3.3 Đặc tả Use Case 1.3.3.1 Use case Start Thực User System Hành động Ấn vào button Start Hiển thị giao diện GameState STT Thực User System User System Hành động Ấn vào button Level Hiển thị giao diện Choose Level Chọn level: easy hard Đưa giao diện ban đầu STT Thực Hành động User Ấn vào button Character System Hiển thị giao diện choose Character User Chọn Character System Đưa giao diện ban đầu Thực Hiện User Hành động Ấn vào button Help STT 1.3.3.2 1.3.3.3 1.3.3.4 STT Use Case Level Use Case Character Use Case Help Nhóm IX System Hiển thị giao diện hướng dẫn chơi User System Ấn vào button Restart Đưa giao diện ban đầu CHƯƠNG Phân tích thiết kế tốn 2.1 Biểu đồ trình tự Mơ tả chi tiết Use Case Play Game - Khi bắt đầu chương trình, người chơi đưa đến hình MenuState có nút chọn: • Help : Hướng dẫn chơi • Choose : Chọn nhân vật (có nhân vật để người chơi tùy chọn) • Level : Chọn độ khó cho Game (có mức độ : Easy Hard) Nhóm IX • Start : Bắt đầu khởi động trị chơi Nếu người chơi khơng setting đặc tính nhân vật game Character, Level hệ thống tự tạo mặc định người chơi chọn Gao White Easy Level - Sau Start Game, hệ thống chuyển sang giao diện chơi game Người chơi nhấn nút W, A, S, D để di chuyển; nhấn nút mũi tên Up, Down, Left, Right để công cách phi đao Nếu người chơi cơng trúng qi vật tăng MP, MP>0 mở tính cơng cầu lửa có sức sát thương cao (cầu lửa bắn trúng qi vật khơng tăng MP, qua lần bắn cầu lửa MP giảm) Game có chơi, quái vật chết rơi vật phẩm Có loại vật phẩm : vật phẩm tăng máu vật phẩm mở Với map1 map2 cần lấy đủ số lượng vật phẩm mở Sang map3, nhân vật cần cơng Boss chết thắng Khi nhân vật chết thắng có lựa chọn : chơi lại game Nhóm IX 2.2 Biểu đồ lớp 2.2.1 Biểu đồ lớp Nhóm IX • Lớp ObjectRPG ObjectRPG kế thừa từ StaticEntity/ xConstructor: tạo đối tượng ObjectRPG vị trí (x, y), với hình ảnh img, vật có chiều rộng width, chiều cao height, bound có vị trí bắt đầu (cor_x, cor_y), chiều rộng chiều dài bound b_w, b_h • Lớp Gate Gate kế thừa từ StaticEntity gateSwitch: đối tượng Animation tạo animation cho chuyển động Gate Constructor: tạo đối tượng Gate vị trí (x, y), với chiều rộng width, chiều cao height • Lớp EntityManager EntityManager lớp quản lý Entity khởi tạo World, có quan hệ kết tập với Entity player: ln khởi tạo khởi tạo EntityManager winFlag: winFlag == true người chơi thắng, chuyển đến WinState renderSorter: tạo xếp hiển thị hợp lý cho vật thể tick(): kiểm tra vật thể có active = false xóa, xóa Sword sau 1s xuất băngf cách setActive(false), Sword Sword2 trừ mp addEntity: thêm vật thể getPlayer: trả đối tượng Player List Entity getEntity: trả list Entity entities Nhóm IX 30 • Lớp Item texture: BufferedImage đại diện cho hình ảnh Item id: số int tương ứng với loại Item pickedUp: = false Item chưa nhặt, ngược lại Constructor: tạo đối tượng Item với hình ảnh texture, tên name, id tương ứng tick(): kiểm tra Player va chạm với Item pickedUp = true, cộng máu cho Player ăn Item tăng hp createNewItem(): khởi tạo Item setPosition(int, int): set Item vị trí (x, y) • Lớp ItemManager ItemManager có quan hệ kết tập với Item items: list Item Constructor: tạo đối tượng ItemManager quản lý Item tick(): kiểm tra xem vật phẩm nhặt chưa, nhặt tiến hành xóa addItem(): thêm Item vào List Nhóm IX 31 CHƯƠNG Cơng nghệ thuật tốn sử dụng 3.1 Ngơn ngữ lập trình tảng công nghệ Với game 2D nhập vai Gao Ranger nhóm, nhóm thống chọn sử dụng ngơn ngữ lập trình Java Nếu có hỏi lại chọn Java câu trả lời là: “viết lần, chạy nơi” Code Java làm việc lý tưởng tất thiết bị hệ điều hành, miễn cài đặt Java Runtime Enviroment Ngồi Java cịn coi ngơn ngữ lập trình hướng đối tượng mạnh mẽ chặt chẽ nhất, hệ thống thư viện mã nguồn mở đồ sộ, cú pháp dài tường minh, dễ hiểu, dễ viết, dễ biên dịch gỡ lỗi Điều đảm bảo làm việc hiệu khoảng thời gian không dài để học tập Với đặc điểm tối ưu Java nhóm định sử dụng ngôn ngữ cho Project với công cụ lập trình Intelliji 2021 Với ngơn ngữ Java, để lập trình game Gao Ranger, để hiển thị giao diện 2D hệ thống desktop hệ điều hành Windows, Project sử dụng tảng Java AWT (Abstract Window Toolkit) Đây API để phát triển ứng dụng dựa GUI cửa sổ Java Mặc dù Java AWT khơng đại tối ưu hố Java Swing hay JavaFX, nhiên tutorial Youtube cũ dạy làm game 2D với Java AWT thời gian có hạn nên nhóm em định dùng tảng để thực tập lớn Bên cạnh Project cịn sử dụng Java Swing để vẽ khung giao diện thư viện khác như: java.io, java.util, graphics, javax.imageio, javax.sound, java.net Với thư viện kể sử dụng nhiều tính năng, phương thức xây dựng sẵn nhờ cơng việc lập trình phần mềm trở nên đơn giản nhiều 3.2 Kỹ thuật, cấu trúc liệu thuật tốn Đối với game 2D Gao Ranger kỹ thuật đáng ý đến kỹ thuật lập trình hướng đối tượng kỹ thuật xử lý liệu đầu vào Về hướng đối tượng, để có giao diện tính hồn chỉnh mong đợi trước hết cần phân tích thiết kế để hoạch định tính cần làm vấn đề cần giải Qua việc học mơn lập trình hướng đối tượng có tư phân tích thiết kế cho hệ thống phần mềm với việc chia nhỏ nhóm tính năng, cơng việc thành package, class để vừa dễ dàng phân công nhóm nhiều người làm - tăng suất làm việc, lại vừa tổ chức kiểm sốt, quản lý bảo trì mã nguồn Với việc sử dụng ngôn ngữ hướng đối tượng Java, việc tổ chức thực thi lập trình cho phần mềm giảm bớt nhiều khó khăn, vướng mắc Nhờ lập trình hướng đối tượng với ngơn ngữ Java thể đối tượng, ý tưởng vào mã nguồn xử lý để đưa chúng thành giao diện thực Nhóm IX 32 tế máy tính cách dễ dàng Ở Project tính chất kỹ thuật hướng đối tượng sử dụng nhiều Encapsulation (tính đóng gói class), tiếp đến Inheritance (tính kế thừa class), ngồi số tính chất khác Overriding (tái định nghĩa hàm class), Polymorphism (tính đa hình đối tượng) sử dụng Với kỹ thuật xử lý liệu đầu vào, với kiểu liệu hình ảnh Project tạo nên giao diện hình ảnh với đồ nhân vật game cho chuyển động tạo tương tác vật lý Để tạo chuyển động hình ảnh đối tượng vẽ liên tục lên hình để tạo hiệu ứng động, lần vẽ, frame nhân vật thay đổi, tạo hiệu ứng di chuyển hay công Và kỹ thuật thiếu game, đưa hệ tọa độ vào để tính tốn Dựa vào tọa độ, kiểm tra va chạm nhân vật vật thể, biết nhân vật vị trí đồ, vẽ tất đối tượng lên hình với vị trí nó, Nhìn chung toàn mã nguồn phần mềm cấu trúc liệu thuật toán lớn nhỏ mà lập trình viên quen mặt sử dụng nhiều việc sử dụng biến, cấu trúc lập for, foreach, cấu trúc rẽ nhánh if/else, bật lên cấu trúc ArrayList (List Java) Cịn phía giải thuật bật thuật toán va chạm (checkEntityCollision) thuật tốn tìm kiếm đường Về ý tưởng thuật toán va chạm - mục tiêu để kiểm tra va chạm vật lý thực thể game, việc va chạm dẫn đến việc thực thể xuyên qua nhau, ngăn cản bước di chuyển Ngồi thuật tốn cịn sử dụng việc công nhân vật Một dạng liệu Rectangle để vẽ hình chữ nhật ẩn nhân vật StaticEntity (Thực thể tĩnh cối,…) Khi hai Rectangle giao nhau, nhờ vào hàm intersects biết chúng có chạm hay chưa, từ khơng cho nhân vật qua vào vùng nhân vật khác Tương tự với việc trừ máu Rectangle nhân vật chạm vào Rectangle quái nhân vật bị trừ máu và Rectangle vũ khí phóng chạm vào Rectangle qi qi bị trừ máu Về ý tưởng thuật tốn tìm kiếm: sử dụng phương thức tìm kiếm đơn giản Đầu tiên xét khoảng cách người chơi quái Nếu chúng nhỏ giá trị R(tự quy định) bán kính tìm kiếm qi qi phân tích hướng dịch chuyển tới người.Khi khoảng cách hoành độ lớn khoảng cách tung độ quái dịch chuyển theo phương ngang ngược lại dịch chuyển theo phương thẳng Quy ước xMove, yMove giá trị biểu diễn phương dịch chuyển Lớn sang phải( xuống ) ngược lại Dịch chuyển theo phương ngang: hoành độ qi lớn hồnh độ người qi dịch chuyển sang trái cách giảm xMove ngược lại Tương tự với trường hợp dịch chuyển theo phương Nhóm IX 33 thẳng: nểu tung độ quái lớn tung độ vật quái dịch chuyển lên cách giảm yMove ngược lại Trong trình quái di chuyển đến người thỏa mãn yếu tố va chạm Nhóm IX 34 CHƯƠNG Xây dựng chương trình minh họa 4.1 Kết chương trình minh hoạ • Kết đạt được: o Đạt kỹ làm việc nhóm o Đạt kỹ phân tích, thiết kế, vẽ sơ đồ miêu tả đề o Phát triển tư lập trình hướng đối tượng lập trình đồ họa ngôn ngữ Java o Phát triển kỹ thiết kế đồ họa cho game • Những chức o Tạo thể đồ nhân vật o Triển khai thuật tốn tìm đường giúp quái tự tìm đường ngắn để giao tranh lẫn o Chọn nhân vật tương ứng o Chia game thành hai cấp độ dễ khó 4.2 Giao diện chương trình • Giao diện Menu: Nhóm IX 35 • Giao diện bấm vào Help (hướng dẫn chơi): • Giao diện bấm vào Character (Click chuột để chọn nhân vật): Nhóm IX 36 • Giao diện bấm vào Level (Chọn mức độ dễ, khó): • Bấm vào Start để bắt đầu chơi game: o Game gồm có map: ▪ Map 1: Khu vực cơng viên Nhóm IX 37 ▪ Khi thu thập đủ item di chuyển đến cổng dịch chuyển cuối map chuyển sang map Kiểm tra item cách nhấn vào inventory góc bên phải Nhóm IX 38 ▪ Map 2: Cổng bệnh viện ▪ Khi thu thập đủ item map đến cổng bệnh viện chuyển qua map ▪ Map 3: phòng bệnh Nhóm IX 39 ▪ Game Over: Khi thua, hình hiển thị ảnh Game over với hai lựa chọn Restart (trở Menu) exit ▪ Sau đánh bại boss ảnh win lên: Nhóm IX 40 • Nhân vật game: o Nhân vật thực thể khác vẽ theo phong cách pixel art, mô hoạt động o Nhân vật bao gồm có: Players (5 nhân vật người chơi điều khiển), Enemy (quái boss) 4.3 Kiểm thử chức thực Các chức xây dựng chương trình: • Di chuyển phát va chạm • Hệ thống cơng, HP mà Mana người chơi quái • Game over Win game 4.3.1 Chức năng: Di chuyển phát va chạm Kết quả: • Việc di chuyển nhân vật tốt, mượt mà, không mắc lỗi nhận bàn phím (lưu ý tắt Unikey chuyển sang tiếng anh) • Lỗi nhân vật lên trước StaticEntity khác (render order) Nhóm IX 41 • Thuật tốn va chạm sử dụng Rectangle hình chữ nhật để phát va chạm nên vật thể hình chữ nhật, phức tạp có khoảng trống người chơi không di chuyển vào o Ví dụ: Người chơi di chuyển vào sáp mép đài phun nước nằm Rectangle 4.3.2 Chức năng: Hệ thống công, HP, Mana người chơi qi Kết quả: • Hệ thống cơng hoạt động ổn định Khi người chơi hết mana khơng dùng cơng đặc biệt • Việc quái công trừ máu hoạt động tốt đơn giản chạm vào nhân vật máu, nhiên quái chạm vào nhân vật không bị máu Ở mức dễ làm HP người chơi hơn, mức khó nhiều HP 4.3.3 Chức năng: Game over win game Kết quả: • Khi người chơi hết HP, hình ảnh với âm Game Over xuất kèm theo hai lựa chọn Restart (trở Menu) exit game • Khi tiêu diệt boss, hình ảnh kèm nhạc Win game xuất với lựa chọn trở Menu để Restart (trở Menu) exit game Nhóm IX 42 Kết luận hướng phát triển SimpleRPG Game hoàn thiện phát triển thực chương trình khơng thể tránh khỏi lỗi kỹ thuật khơng đáng có Tuy nhiên, nhóm thường xuyên kiểm thử khắc phục lỗi sau gặp cố Sau thời gian, nhóm xin có vài kết luận hướng phát triển sau: - Ưu điểm: + Chương trình có đầy đủ chức game công, di chuyển qua map, thu thập vật phẩm + Giao diện dễ nhìn, chất lượng tốt + Tương tác tốt với người dùng - Nhược điểm: + Game dùng tảng Java AWT giao diện Java với mã GUI hệ thống gốc có HĐH nên không hoạt động giống hệ thống, code chưa tối ưu + Một số chức chưa hoàn thiện Với Ưu điểm Nhược điểm trên, nhóm có vài hướng phát triển cho Game là: - Xử lí tối ưu phần giao diện, hình ảnh - Thêm chướng ngoại vật khác - Thêm tính cơng Boss với nhân vật Nhóm chúng em cố gắng mình, thành viên nhóm tích cực hồn thành tốt nhiệm vụ giao không ngồi chơi xơi nước Nhờ vào tập lớn khoai thầy mà chúng em có thêm nhiều kiến thức, làm việc nhóm, thức qua đêm để trằn trọc fix bug, nghiên cứu thêm tính nhằm mang lại sản phẩm tốt nhiều Mặc dù Game hoàn thiện nhiên, nhóm muốn phát triển thêm để thỏa mãn nhu cầu giải trí người chơi cao hướng đến nhiều đối tượng Nhóm IX 43 Tài liệu tham khảo Slide giảng mơn Lập trình hướng đối tượng thầy Nguyễn Mạnh Tuấn Youtube https://viettuts.vn/java https://vi.wikipedia.org/ https://codenmore.github.io/ https://www.javatpoint.com/java-awt https://vietjack.com/java_swing/ Nhóm IX 44 ... lí thuật tốn, làm báo cáo, kiểm thử Hoàng Thị Nhung nhung.ht194349@sis.hust.edu.vn Code chính, làm báo cáo, trưởng nhóm Trần Văn Phúc phuc.tv194354@sis.hust.edu.vn Làm báo cáo, âm thanh, code... Các lớp thành phần có vai trị tạo nên lớp Game sở Nhóm IX 10 Giới thiệu class biểu đồ • GameState: có chức khởi tạo World cho Game gọi đến GameState1 đáp ứng đủ yêu cầu GameState (sang mới) •... có vai trị điều hướng State - GameState, GameState1, GameState2: (kế thừa từ State) State cung cấp giao diện trị chơi chương trình tương ứng với map khác Các cổng Gate có vai trò điều hướng GameState,

Ngày đăng: 01/06/2021, 16:54

TỪ KHÓA LIÊN QUAN

w