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

Báo cáo giữa kỳ lậptrình nâng cao Đề tài Ứng dụng ngôn ngữ java trong lập trình game Đối kháng 2d dabde

24 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Ứng dụng Ngôn Ngữ Java Trong Lập Trình Game Đối Kháng 2D - DABDE
Tác giả Trần Bảo Duy, Nguyễn Ngọc Tuyên, Phan Văn Hùng, Vũ Đình Khải, Nguyễn Thái Dương
Người hướng dẫn PTS. Nguyễn Thanh Bình
Trường học Trường Đại học Bách Khoa Hà Nội
Chuyên ngành Lập Trình Nâng Cao
Thể loại Báo cáo giữa kỳ
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 24
Dung lượng 2,77 MB

Nội dung

Người chơi lựa chọn nhân vật mình mong muốn và sử dụng các phím đã được quy định để điều khiển nhân vật để đánh nhau nhân vật kia do người chơi khác điều khiển.. Các điều khiển cần phải

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

TRƯỜNG ĐIỆN – ĐIỆN TỬ

BÁO CÁO GIỮA KỲ

LẬP TRÌNH NÂNG CAO

ĐỀ TÀI: ỨNG DỤNG NGÔN NGỮ JAVA

TRONG LẬP TRÌNH GAME ĐỐI KHÁNG 2D - DABDE

Hà Nội, 12 - 2022

Trang 2

MC LC

Chương 1: Tổng quan đề tài 6

1.1 Giới thiệu game 6

1.1.1 Tổng quan về game Dabde 6

1.1.2 Bối cảnh của trò chơi 6

1.1.3 Cách chơi 7

1.2 Xác định yêu cầu 7

1.2.1 Giao tiếp hệ thống 7

1.2.2 Giao tiếp về điều khiển 8

1.2.3 Giao tiếp về giao diện 8

Chương 2: Phân tích và thiết kế hệ thống 9

2.1 Phân tích nội dung game 9

2.1.1 Biểu đồ Use-case 9

2.2 Thiết kế hệ thống 13

2.2.1 Hệ thống nhân vật 13

2.2.2 Hệ thống map 14

2.2.3 Hệ thống điều khiển nhân vật 14

2.2.4 Sơ đồ quan hệ giữa các lớp 14

Chương 3: Xây dựng Game 17

3.1 Khung hình 17

3.2 Vòng lặp Game 17

3.3 Xây dựng nhân vật 19

3.3.1 Thiết kế đồ họa và hiệu ứng animation 19

3.3.2 Lớp Entity 20

3.3.3 Lớp Character 21

3.4 Xây dựng bản đồ 22

3.4.1 Map sprite 22

3.4.2 Bản đồ trong game 22

3.4.3 Xử lý va chạm với nhân vật 23

3.5 Trọng lực và sự kiện nhảy 23

3.5.1 Trọng lực 23

3.5.2 Sự kiện nhảy 23

2

Trang 3

Danh mục hình ảnh

Hình 1: Biểu đồ Use-case tổng quát 9

Hình 2:Minh họa màn hình lựa chọn nhân vật 10

Hình 3: Biểu đồ mô tả người chơi tương tác với nhân vật 11

Hình 4: Sơ đồ quan hệ giữa các lớp 15

Hình 5: Hình ảnh nhân vật được in ra trong hệ tọa độ 16

Hình 6: Minh họa cách hoạt động của hiệu ứng Animations 17

Hình 7: Vòng lặp game 17

Hình 8: Sprite sheet cho nhân vật Fighter 18

Hình 9: Minh họa cách chia hình ảnh vào trong mảng 2 chiều 19

Hình 10: Hình ảnh nhân vật (màu đen) và hit box (màu đỏ) 20

Hình 11: Map sprite sử dụng trong game 21

Hình 12: Minh họa cách chia các khối vào trong mảng 1 chiều 21

Hình 13: Map được tạo ra 22

3

Trang 4

Tóm tắt nội dung đã triển khai

STT Công việc Mô tả Thời gian Kết quả đạt được

1 Thành lập nhóm -Thành lập nhóm

-Xác định đề tài và các yêu cầu để thực hiện

1 tuần:

23 - 31/10/2022

Đã thành lập nhóm và xác định được đề tài, tuy nhiên nội dung còn thiếu hấp dẫn người chơi

2 Xây dựng nhân

vật -Thiết kế lớp nhân vật-xử lý các hiệu ứng

animation cơ bản cho nhân vật: đứng yên, di chuyển trái phải, nhảy

1 tuần:

1 - 8/11/2022 Đã xây dựng một lớp tổng quát cho nhân

vật,có thể dễ dàng thay đổi kích thước, hiệu ứng animations và thêm 1 người chơi vào trong game

1 tuần:

17 - 24/11/2022 Xây dựng được lớp bản đồ, xử lý được trường

hợp map lớn hơn cửa sổ trò chơi

Tạo được công cụ giúp

-Thiết lập sự kiện ngồi xuống

-Xử lý va chạm sao cho nhân vật đứng được trênđất

2 tuần:

9/12/2022

25/11-Thêm trọng lực cho nhânvật, xử lý được sự kiện nhảy, vừa nhảy vừa di chuyển trái phải và sự kiện va chạm với các khối vật thể rắn trong bản đồ

4

Trang 5

Nội dung tiếp tục thực hiện

1 -Thiết kế thanh máu, mana

-Xây dựng lớp nhân vật

Fighter

-Thêm thanh máu, mana cho nhân vật và có thể hiển thị lên màn hình game

2 Xây dựng lớp nhân vật

Pirate -Xây dựng kỹ năng:Tấn công gần, tăng tốc độ di

chuyển và sát thương, dựng tường chặn công tầm xa, đặt bẫy gây choáng

1 tuần:24-31/12/2022

3 Xây dựng bảng chọn nhân

vật

Xử lý hiệu ứng âm thanh

Trước khi bắt đầu game sẽ xuất hiện bảng chọn nhân vật cho người chơi lựa chọn

Chèn âm thanh vào game

1 tuần:2-9/1/2023

chức năng Play, Setting, Quit

-Xử lý sự kiện kết thúc game

1 tuần:10-16/1/2023

5 Điều chỉnh lại hiệu ứng

animation Tìm/thiết kế các hiệu ứng cho nhân vật sao cho phù hợp và

đẹp mắt

1 tuần:17-23/1/2023

5

Trang 6

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI

1.1 Giới thiệu game.

1.1.1 Tổng quan về game Dabde.

Dabde là một game đối kháng 1 vs 1 được xây dựng trên không gian 2 chiều được lấy cảm hứng từ tựa game “Đấu trường thú” và các trò chơi cùng thể loại giúp người chơi giải trí cùng bạn bè sau những giờ làm việc mệt mỏi Theo dòng game đối kháng dành cho 2 người chơi

1.1.2 Bối cảnh của trò chơi.

Cốt truyện:

Trong thiên hà số 7, có một hành tinh tên là Alen Ở đây có tồn tại những con sinh vật khủng bố, đầy khát máu và để con người có thể sống sót trên hành tinh này thì không thể nào tồn tại kẻ yếu được Cùng với sự tồn tại của quái vật thì hành tinh này còn được nhiều vị thần bảo hộ Nhiều con người với sức mạnh phi thường đã thức tỉnh dưới sức mạnh của các vị thần, họ đứng lên dẫn dắt con người đứng lên đấu tranh với lũ quái vật Tuy nhiên với bản tính của con người, không chịu phục tùng ai cả Và ở một thành phố Z - nơi tồn tại những người siêu mạnh đã mở ra đấutrường Dabde nhằm tìm ra người có sức mạnh phi thường có thể lãnh đạo đội quânchống lại lũ quái vật Ở đây mọi người muốn thể hiện sức mạnh mong muốn được công nhận được, mỗi người đều là một tài năng hiếm có, họ tinh thông những độc chiêu riêng biệt mà chỉ ở họ mới có được

gươm biển cả

Là kẻ sống ở biển cả, nơi tồn tại nhiều thủy quái nguy hiểm Hắn là

kẻ mạnh, có thể gọi là vua biển cả trong thời kỳ này với những kỹ năngtấn công và phòng thủ kì quặc 6

Trang 7

Ngoài biển cả, hắn còn muốn là chủ lãnh đạo loài người chống lại lũ quáivật đáng sợ kia.

Alain Sát thủ A SS+ Dao lưỡi

liềm Một gã sát thủ chuyên nghiệp khét tiếng trên thê giới Tuy nhiên trong

lòng gã vẫn đau đáu 1 nỗi đau Con gái lão bị quái vật giết bỏ Lão mongmuốn giành chiến thắng trong đấu trường để tiêu diệt lũ quái vật

thần công

Là một người không quan tâm đến chiến thắng trong cuộc đấu chỉ muốn những kỹ thuật của mình đượctrọng dụng để giúp ích cho nhân loại

Thể loại game:

Game là thể loại game chiếu đấu đối kháng 1 vs 1 Mang tính kỹ năng và chiến thuật cao Người chơi lựa chọn nhân vật mình mong muốn và sử dụng các phím đã được quy định để điều khiển nhân vật để đánh nhau nhân vật kia do người chơi khác điều khiển

Ngoài ra game còn có những map đầy thú vị, người chơi cần chú ý để có thể có những chiến thuật chơi hợp lí

Trang 8

Chạy trên nền tảng App desktop trên Windows OS.

Ngôn ngữ lập trình: Java

1.2.2 Giao tiếp về điều khiển.

Các điều khiển phải đầy đủ, dễ dàng sử dụng để người dùng không bị ngượng khi sử dụng ứng dụng Các điều khiển cần phải có hệ thống quản lý rõ ràng, liênkết chặt chẽ với nhau và đặc biệt phải phục vụ được đầy đủ các chức năng khi người dùng chơi game

1.2.3 Giao tiếp về giao diện.

Giao diện phải sử dụng các hình ảnh sắc nét, mượt mà, mới lạ, dễ nhìn Giao diện phải sắp xếp các nút điều khiển, các hình ảnh, các chữ một cách ngănnắp, gọn gàng và đặc biệt là phải phân bố hợp lý không bị loạn

Có hiệu ứng chuyển động animation làm cho game thêm phần sinh động

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ

HỆ THỐNG2.1 Phân tích nội dung game.

Với thể loại game đối kháng theo sự tìm hiểu trên thị trường thì có những yếu tố nổi bật có thể liệt kê: Nhân vật, map, điều khiển, âm thanh và hình ảnh

8

Trang 9

2.1.1 Biểu đồ Use-case

Biểu đồ Use-case tổng quát

Hình 1: Biểu đồ Use-case tổng quát

Đặc tả Use-case “Play game”

- Tên use-case: Use-case Play game

- Người sử dụng: Người dùng

- Mục đích: Chức năng này là chức năng chơi game, là chức năng sử dụng chính của ứng dụng

- Dòng sự kiện:

Hành động của tác nhân Phản ứng của hệ thống

1 User vào ứng dụng Hệ thống đưa ra giao diện chính

2 User nhấn vào button “Play” Hệ thống hiện thị ra màn hình lựa

chọn nhân vật

- Mô tả chi tiết:

9

Trang 10

Hình 2:Minh họa màn hình lựa chọn nhân vật.

Khi người chơi nhấn vào “ Play” sẽ xuất hiện 1 khung hình có các hình ảnh nhân vật và 2 khung Khung hình này có vai trò chọn nhân vật cho 2 người chơi Người chơi dùng các hướng mũi tên để di chuyển vị trí, Phím Space dùng đểchốt nhân vật sử dụng cho màn chơi

Sau đó người chơi ấn “OKE” để bắt đầu màn chơi

Hành động của tác nhân Phản ứng của hệ thống

1 User sau khi ấn vào nút “Play” Hệ thống đưa ra phần lựa chọn nhân

vật

2 User nhấn vào button “OKE” Hệ thống hiện thị phần chơi game cho

người chơi

10

Trang 11

Hình 3: Biểu đồ mô tả người chơi tương tác với nhân vật

Khi người chơi nhấn vào “OKE” sẽ xuất hiện 1 khung hình có nhân vật và map xung quanh

Nhân vật:

Được điểu khiển bởi người chơi bằng bàn phím hoặc chuột

Nhân vật di chuyển trong map theo tọa độ từng điểm, có những khu vực trong maplàm chết nhân vật

Nhân vật cần có thanh máu và thanh sức mạnh, có giao diện hình ảnh và hiệu ứng

di chuyển

Khi người điều khiển cho nhân vật đánh nhân vật đối thủ phải có sự kiện làm giảm máu nếu đánh trúng, hình ảnh cũng phải đáp ứng theo sự điều khiển

Map:

Thay đổi theo hướng đi của nhân vật ( hiệu ứng chuyển cảnh)

Trò chơi kết nối 2 người nên cần xây dựng một lớp để có thể kết nối 2 ngườilại với nhau

Đi kèm với trò chơi cần hiệu ứng hình ảnh và âm thanh

Phần kết nối:

Cần xây dựng một cách kết nối để chơi game cho 2 người chơi:

- Chơi cùng trên một máy tính

- Chơi trên 2 máy tính khác nhau

Tùy vào những ưu và nhược điểm của 2 cách trên để lựa chọn Với mục tiêu là kết nối nhanh, thuận tiện cho người dùng

11

Trang 12

- Các yêu cầu đặc biệt:

Không có

- Trạng thái hệ thống trước khi bắt đầu thực hiện Use-case:

Hệ thống đang ở màn hình chính

- Trạng thái hệ thống sau khi thực hiện Use-case:

Hệ thống hiển thị ra màn hình chơi game chính

âm thanh, FPS trong game

- Các yêu cầu đặc biệt: Không có

- Trạng thái hệ thống khi bắt đầu thực hiện Use-case:

Hệ thống đang ở màn hình chính

- Trạng thái hệ thống sau khi thực hiện Use-case:

Hệ thống hiện thị màn hình điểu chỉnh âm thanh trong game

Trang 13

Hệ thống đang ở màn hình chính.

- Trạng thái hệ thống sau khi thực hiện Use-case:

Hệ thống thoát ra khỏi màn hình giao diện chính

Các nhân vật được xây dựng theo bối cảnh câu truyện với những kĩ năng độc đáo cùng với độ phù hợp với khả năng lập trình của nhóm

Nhân vật Kỹ năng đặc biệt

Fighter - Thánh quang vô tận (Tung ra một vầng hào quang +20 sát thương

nếu trúng tướng địch) – Kỹ năng thay đổi thông số chiến đấu

- Dịch chuyển tức thời (Nhân vật có khả năng dịch chuyển 1 khoảng cách nhất định) – Kỹ năng thay đổi vị trí nhân vật

- Đại địa hào quang (Khi địch đến gần tạo ra một địa chấn +5 sát thương và làm suy giảm tốc độ tướng địch trong 2s) – Kỹ năng thay đổi thông số chiến đấu + tốc độ di chuyển khung hình

Pirate -Nhất đao ( Tạo ra một dòng nước biển bắn đến kẻ địch sát thương

+10 và +2 tốc độ di chuyển cho bản thân trong 1s) – Kỹ năng thay đổithông số chiến đấu + tốc độ di chuyển khung hình)

-Rào chắn (Tạo ra một tảng địa hình để tạo khó khăn cho quân địch) -Kỹ năng làm thay đổi bản đồ

- Thu thủy (Lấy cảm hứng về dòng nước mùa thu, một nhát kiếm nhẹ nhàng, chiêu thức tầm gần nhưng hiệu quả +15 sát thương cho tướng địch) – Kỹ năng thay đổi thông số chiến đấu

Alain -Tàng hình (Trong vòng 2s có khả năng tàng hình nhưng sát thương

giảm 5 tuy nhiên nếu đánh trúng đối phương 10 lần thì giữ nguyên)

- Ám sát (Đâm đối phương +5 sát thương, +10 sát thương nếu đang trong trạng thái tàng hình và đánh trúng tướng địch 10 lần) - Kỹ năng thay đổi thông số chiến đấu

- Phi tiêu vô tận (Chiêu thức tầm xa, Alain tung phi tiêu +5 sát thươngvới mỗi phi tiêu trúng, tổng cộng có 5 phi tiêu) -Kỹ năng thay đổi thông số chiến đấu + hình ảnh

13

Trang 14

Vegote - Súng vô tận (Bắn liên tục chiêu laze sát thương +2) -Kỹ năng thay

đổi thông số chiến đấu

- Di ảnh hoán hình (Bằng công nghệ kì lạ cho phép bản thân và kẻ địch đổi chỗ cho nhau) -Kỹ năng thay đổi vị trí nhân vật

- Headshot (Bắn ra một viên đạn có mức sát thương + 30 tuy nhiên bản thân bị làm chậm trong 4s) -Kỹ năng thay đổi thông số chiến đấu + tốc độ khung hình

Ngoài ra các nhân vật còn các kỹ năng đánh thường bình thường khác và một nănglực ẩn thân thú vị

2.2.2 Hệ thống map.

Là các nơi hiểm địa trên khắp hành tinh Alen

2.2.3 Hệ thống điều khiển nhân vật.

Nhân vật được điều khiển bằng chuột và bàn phím, các phím di chuyển và sử dụng

ác kỹ năng được tính toán sao cho hợp lý và quy ước

Nhân vật được điều khiển bằng chuột và bàn phím, các phím di chuyển và sử dụng

ác kỹ năng được tính toán sao cho hợp lý và quy ước

2.2.4 Sơ đồ quan hệ giữa các lớp

Để hiểu rõ hơn về yêu cầu của đề tài, nhóm nghiên cứu đề xuất phương án thiết kế các biểu đồ để hiểu thêm về cách thức hoạt động, cách xử lý của đề tài

14

Trang 15

Hình 4: Sơ đồ quan hệ giữa các lớp

Mô tả:

-MainClass: Khi bắt đầu chương trình sẽ gọi hàm main -> tạo Game mới.-Game: Game sẽ khởi tạo GamePanel, GameWindow, các Character và vòng lặpgame

-GamePanel: Tạo panel, lắng nghe các sự kiện từ bàn phím, chuột và hiển thị cáchình ảnh trong game

15

Trang 16

-GameWindow: Cài đặt các tham số cho cửa sổ game (kích thước, ẩn/hiện GamePanel,…)

-Entity: Lớp chứa các thuộc tính hỗ trợ cho lớp Character như tọa độ, chiều dài/rộng hình ảnh nhân vật, Hit box

-Character: Lớp nhân vật được kết thừa từ Entity, bổ xung thêm các thuộc tính như các hình ảnh animation, tốc độ di chuyển, đội đuổi/chạy, Map hiện tại Character là nơi xử lý các sự kiện chung nhất của các nhân vật và là nền móng

để xây dựng lên các lớp nhân vật

-Lớp nhân vật Pirate và Fighter kế thừa các thuộc tính và phương thức của Character và có thêm các kỹ năng cho nhân vật

-Map: Chứa ma trận 2 chiều mô tả bản đồ

-MapManager: Lớp quản lý các bản đồ hình ảnh từng khối của bản đồ sau đó kếthợp với ma trận của Map để tạo nên ảnh Map hoàn chỉnh

16

Trang 17

CHƯƠNG 3: XÂY DỰNG GAME.3.1 Khung hình

Khi bắt đầu, chương trình sẽ khởi tạo 1 lớp GameWindows nhằm mục đích tạo một cửa sổ game với kích thước 832x448 và 1 lớp gamePanel kế thừa từ lớp JPanel trong Java Swing Lớp gamePanel này được khởi tạo nhằm lắng nghe các

sự kiện được ấn xuống từ bàn phím, chuột và cũng là để hiển thị các hình ảnh trong game

Hệ tọa độ trong cửa sổ gồm 2 chiều x,y có gốc tọa độ là góc trên cùng bên trái với đơn vị là pixel

Hình 5: Hình ảnh nhân vật được in ra trong hệ tọa độ

Trang 18

Ý tưởng cho việc làm game là xây dựng một vòng lặp có thể cập nhật lại các hình ảnh và tọa độ của chúng.

Hình 7: Vòng lặp game

Số hình ảnh được cập nhật trong vòng 1 giây được gọi là FPS (Frames Per Second) Khi FPS càng lớn nhân vật di chuyển càng mượt mà và ngược lại FPS nhỏ sẽ làm cho game trở nên giật lag, tuy nhiên thời gian để cập nhật một hình ảnh sẽ lớn và tốn tài nguyên của máy tính hơn rất nhiều lần thời gian để tính toán xử lý logic

Nếu hệ thống hoạt động theo tuần tự nghĩa là: bắt ký tự -> tính toán -> cập nhật lại hình ảnh -> bắt ký tự -> … thì việc tính toán sẽ bị phụ thuộc vào việc cập nhật lại hình ảnh điều này làm chúng ta khó có thể tăng được nhịp độ game Vì vậy giải pháp là sẽ đưa phần cập nhật hình ảnh và xử lý tính toán logic có tốc độ cập nhật khác nhau Số lần cập nhật xử lý tính toán logic trong 1 giây được gọi

là UPS UPS càng lớn thì nhịp game càng nhanh, ngoài ra điều này còn giúp choquá trình xử lý va chạm với vật thể được diễn ra tốt hơn

Trong báo cáo này ta sẽ sử dụng FPS là 120 và UPS là 200

18

Trang 19

3.3 Xây dựng nhân vật

3.3.1 Thiết kế đồ họa và hiệu ứng animation.

Tất cả các hình ảnh như chuyển động của các nhân vật sẽ được đưa vào 1 tấm hình được gọi là sprite sheet với các hàng ngang là các chuyển động của nhân vật (đứng yên, rẽ trái, rẽ phải, nhảy…) còn các cột dọc tương ứng là các frame chuyển động của hành động đó

Hình 8: Sprite sheet cho nhân vật Fighter

Các sprite sheet này có thể được tạo ra bằng các phần mềm như Adobe Animate,Unity,…

Khi đã có đươc sprite sheet cùng với các chiều cao, chiều rộng của 1 khung ảnh nhân vật ta có thể tính toán vị trí của các frame và đưa chúng vào một mảng 2 chiều với cách sắp xếp hành động tương tự như trong sprite sheet

Bằng cách này ta có thể dễ dàng tính toán được hình ảnh nào tiếp theo sẽ được

in ra

19

Ngày đăng: 20/10/2024, 17:59

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

TÀI LIỆU LIÊN QUAN

w