1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn môn ngôn ngữ lập trình java Đề tài game 2d

29 1 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 đề Game 2D
Tác giả Đỗ Hữu Việt, Đường Thị Huyền
Người hướng dẫn TS. Vũ Hữu Tiến
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Ngôn ngữ lập trình Java
Thể loại Báo cáo
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 29
Dung lượng 7,26 MB

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

Nội dung

LỜI NÓI ĐẦUNgôn ngữ lập trình Java từ lâu đã trở thành một công cụ mạnh mẽ và phổ biến trong việc phát triển các ứng dụng đa nền tảng, đặc biệt là trong lĩnh vực lập trình game.. Với khả

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA ĐA PHƯƠNG TIỆN -  -

BÁO CÁO BÀI TẬP LỚN MÔN: NGÔN NGỮ LẬP TRÌNH JAVA

Trang 2

LỜI NÓI ĐẦU

Ngôn ngữ lập trình Java từ lâu đã trở thành một công cụ mạnh mẽ và phổ biến trong việc phát triển các ứng dụng đa nền tảng, đặc biệt là trong lĩnh vực lập trình game Với khả năng hỗ trợ đồ họa 2D phong phú cùng thư viện đa dạng, Java mang lại nhiều cơ hội để hiện thực hóa các ý tưởng sáng tạo và phát triển các trò chơi hấp dẫn

Trong bài tập lớn này, nhóm 06 chúng em chọn đề tài phát triển Game 2D

nhằm áp dụng các kiến thức đã học về lập trình Java Đề tài không chỉ giúp củng cố

lý thuyết về lập trình hướng đối tượng, quản lý sự kiện, mà còn mở rộng khả năng

xử lý đồ họa, âm thanh và tương tác với người chơi Thông qua dự án, chúng tôi mong muốn tạo ra một sản phẩm hoàn chỉnh, vừa mang tính giải trí, vừa thể hiện khả năng lập trình và tư duy sáng tạo

Bài báo cáo này sẽ trình bày quá trình nghiên cứu, thiết kế, và phát triển game 2D, đồng thời nêu rõ những thách thức gặp phải cùng bài học kinh nghiệm rút ra từ

dự án Chúng tôi hy vọng rằng sản phẩm này không chỉ đáp ứng yêu cầu của bài tậplớn, mà còn là tiền đề cho các dự án lập trình sau này

Lời cuối cùng, nhóm chúng em xin gửi lời cảm ơn chân thành đến thầy Vũ HữuTiến - người đã tận tình hướng dẫn, giảng dạy và truyền đạt những kiến thức quý báutrong suốt học phần Ngôn ngữ lập trình Java Chính sự nhiệt huyết và hỗ trợ của thầy

đã giúp chúng em hoàn thành bài tập lớn này một cách tốt nhất Xin chúc thầy nhiềuthành công và hạnh phúc trong cuộc sống!

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 1

MỤC LỤC 2

CHƯƠNG I: GIỚI THIỆU 3

1 Đặt vấn đề 3

1.1 Lý do chọn đề tài 3

1.2 Giới thiệu game 4

2 Nội dung liên quan 5

2.1 Khảo sát 5

2.2 Công cụ, phần mềm hỗ trợ phát triển sản phẩm 5

3 Kết luận chương 6

CHƯƠNG II: MÔ TẢ SẢN PHẨM 7

1 Các Module chính 9

CHƯƠNG III: KẾT QUẢ VÀ ĐÁNH GIÁ 12

1 Hình ảnh sản phẩm 12

2 Đánh giá sản phẩm 15

TÀI LIỆU THAM KHẢO 16

PHÂN CÔNG CÔNG VIỆC 16

Trang 4

CHƯƠNG I: GIỚI THIỆU

1 Đặt vấn đề

1.1 Lý do chọn đề tài

Game Tetris là một trong những trò chơi kinh điển và được yêu thích trên toàn cầu, không chỉ bởi tính giải trí mà còn vì những yếu tố về thiết kế gameplay đơn giản nhưng đầy thử thách Lý do nhóm chúng em chọn làm game Tetris cho bài tập lớn môn Ngôn ngữ lập trình Java là bởi các yếu tố sau:

Tetris là một trong những trò chơi lâu đời nhất và nổi tiếng nhất trong lịch sử game Được phát triển vào những năm 1980, Tetris đã chứng tỏ được sự bền vững và khả năng gây nghiện của nó Chính sự đơn giản nhưng cuốn hút của Tetris đã làm cho trò chơi này trở thành một biểu tượng văn hóa trong ngành công nghiệp game Do đó, việc làm một phiên bản Tetris giúp chúng em khám phá lại sự hấp dẫn của trò chơi này và áp dụng những kỹ thuật lập trình hiện đại để tái tạo nó

Tetris yêu cầu người chơi phải suy nghĩ nhanh và lên chiến lược cho từng di chuyển, giúp rèn luyện khả năng giải quyết vấn đề và lập kế hoạch Điều này tương tự với quá trình lập trình, nơi tôi phải giải quyết những vấn đề về cấu trúc dữ liệu, xử lý sự kiện, và tối ưu hóa hiệu suất Vì vậy, làm game Tetris làmột cách tuyệt vời để áp dụng những lý thuyết về lập trình vào thực tế

Mặc dù thiết kế của Tetris rất đơn giản, nhưng lối chơi lại đầy thử thách và có chiều sâu Việc tạo ra các khối hình với các hình dạng khác nhau và cho phépngười chơi xoay, di chuyển chúng sao cho phù hợp với không gian, đòi hỏi một sự cân nhắc kỹ lưỡng trong việc triển khai thuật toán và cấu trúc dữ liệu Chọn Tetris là một cơ hội để chúng em thử thách khả năng lập trình của mình, đồng thời hiểu rõ hơn về những yếu tố cần thiết trong việc phát triển một trò chơi hoàn chỉnh

Cuối cùng, Java là một ngôn ngữ lập trình mạnh mẽ và phổ biến trong việc pháttriển phần mềm, đặc biệt là game Việc lựa chọn Tetris làm đề tài giúp chúng

em áp dụng và nâng cao kỹ năng lập trình Java, đồng thời giúp tôi hiểu rõ hơn về cách các game 2D được xây dựng và cách thức quản lý các đối tượng,

sự kiện, và giao diện trong game

Trang 5

1.2 Giới thiệu game

Sản phẩm: Tetris

Thể loại: Game xếp hình (Puzzle)

Lối chơi:

o Trò chơi bao gồm các khối hình (gọi là Tetromino) với nhiều dạng khác nhau (I, O,

T, S, Z, L, J) Các khối này sẽ rơi từ trên xuống theo thời gian

o Nhiệm vụ của người chơi là di chuyển và xoay các khối hình sao cho chúng xếp đầymột hàng ngang Khi một hàng được lấp đầy, nó sẽ biến mất, và người chơi ghi được điểm

o Nếu các khối hình chồng lên đến đỉnh màn hình, trò chơi kết thúc

Trang 6

o Trò chơi sẽ ngày càng khó hơn với tốc độ rơi của khối hình tăng dần theo thời gian, thử thách khả năng phản xạ và tư duy của người chơi.

o Điểm số được tính dựa trên số hàng xóa được cùng lúc và thời gian chơi

Trò chơi mang tính giải trí cao, phù hợp với nhiều lứa tuổi, và giúp cải thiện kỹ năng tư duy logic cũng như khả năng xử lý nhanh nhạy

2 Nội dung liên quan

Tetris là một trò chơi kinh điển được yêu thích qua nhiều thế hệ, với lối chơi đơn giản nhưng cuốn hút Nhận thấy tiềm năng phát triển và khả năng sáng tạo, chúng em quyết định thực hiện phiên bản Tetris này, bổ sung giao diện

đồ họa hiện đại để tăng tính hấp dẫn

Khảo sát trải nghiệm người dùng:

o Gameplay: Lối chơi đơn giản, chỉ cần thao tác với các phím mũi tên trên bàn phím

để di chuyển và xoay khối, dễ làm quen nhưng khó để thuần thục

o Màu sắc: Bố cục màu sắc rõ ràng, các khối hình với màu sắc đa dạng giúp dễ nhận

diện và phân biệt, tạo cảm giác hài hòa và bắt mắt

o Hình ảnh: Thiết kế giao diện đơn giản nhưng hiện đại, các khối gạch vuông vức và

hiệu ứng rơi mượt mà mang lại cảm giác dễ chịu khi chơi

Từ khảo sát trên, nhóm em đã xác định rõ các điểm mạnh và yếu tố hấp dẫn của game Tetris, từ đó xây dựng một phiên bản hoàn thiện hơn và phù hợp với thị hiếu người chơi hiện nay

Trang 7

2.2 Công cụ, phần mềm hỗ trợ phát triển sản phẩm

Để phát triển game Tetris, nhóm đã sử dụng các công cụ và phần mềm sau:

Ngôn ngữ lập trình Java: Java được lựa chọn vì tính phổ biến, dễ học và khả

năng hỗ trợ tốt trong việc xây dựng các ứng dụng đồ họa 2D thông qua thư viện Java Swing

IDE (Integrated Development Environment): Sử dụng IntelliJ IDEA để viết,

biên dịch và kiểm tra mã nguồn Các IDE này hỗ trợ nhiều tính năng như gợi

ý mã, kiểm tra lỗi, và tích hợp công cụ quản lý dự án giúp việc phát triển nhanh chóng và hiệu quả hơn

Thư viện đồ họa: Sử dụng Java Swing và AWT để vẽ giao diện, xử lý các

thành phần đồ họa trong trò chơi, như khối gạch và màn hình

Phần mềm quản lý phiên bản: Sử dụng Git và GitHub để quản lý mã nguồn,

đảm bảo việc hợp tác giữa các thành viên trong nhóm diễn ra trôi chảy và tránh xung đột mã

Công cụ kiểm thử: Dựa vào các công cụ kiểm thử tích hợp trong Java IDE

(JUnit) để kiểm tra logic của trò chơi, đảm bảo các tính năng hoạt động đúng như mong đợi

Các công cụ và phần mềm trên đã hỗ trợ nhóm em rất nhiều trong việc phát triển, thử nghiệm và hoàn thiện trò chơi, giúp sản phẩm trở nên ổn định và đáp ứng yêu cầu đề ra

3 Kết luận chương

Từ những kiến thức và hiểu biết đã trình bày, nhóm em đã triển khai phát triển một trò chơi Tetris 2D với các tính năng cơ bản như điều khiển khối gạch, sắp xếp khối để xóa hàng, và tăng dần độ khó Những công cụ, phần mềm, và phươngpháp được lựa chọn đã hỗ trợ hiệu quả trong việc hoàn thiện sản phẩm, đảm bảo đáp ứng đúng yêu cầu và mang lại trải nghiệm thú vị cho người chơi

Trang 8

CHƯƠNG II: MÔ TẢ SẢN PHẨM

Trang 9

o Hàm khởi tạo GamePanel: Thiết lập các thuộc tính ban đầu của bảng điều khiển:

Đặt kích thước, màu nền, và bố cục

Thêm bộ lắng nghe phím (KeyHandler)

Tạo đối tượng PlayManager để quản lý logic trò chơi

Gọi phương thức createStartButton để tạo nút bắt đầu trò chơi

Tải hình nền

o Phương thức createStartButton tạo nút bắt đầu:

Tạo đối tượng JButton với font chữ, màu sắc, và kích thước xác định

Thêm hành động lắng nghe để gọi phương thức startGame khi nút được nhấn

Thêm nút vào bảng điều khiển

Trang 10

o Phương thức startGame,launchGame:

Ẩn nút bắt đầu và gọi phương thức launchGame để khởi động trò chơi

Tạo và bắt đầu chủ đề trò chơi

o Phương thức run thực hiện vòng lặp trò chơi:

Tính toán thời gian để đảm bảo tốc độ khung hình ổn định

Gọi phương thức update để cập nhật trạng thái trò chơi và repaint để vẽ lại bảngđiều khiển theo chu kỳ

Trang 11

o Phương thức update cập nhật trạng thái trò chơi:

Kiểm tra nếu trò chơi không bị tạm dừng và không kết thúc, cập nhật trạng thái trò chơi thông qua đối tượng PlayManager

Nếu trò chơi kết thúc và phím Enter được nhấn, khởi động lại trò chơi

o Phương thức paintComponent vẽ bảng điều khiển trò chơi:

Vẽ hình nền nếu có

Vẽ màu nền cho khu vực chơi

Gọi phương thức draw của đối tượng PlayManager để vẽ các thành phần trò chơi

Lớp PlayManager là lớp quản lý chính của trò chơi Tetris, xử lý logic và quản lý trạng thái trò chơi

Trang 12

o Khai báo các biến và hàm khởi tạo:

width và height: Kích thước của khu vực chơi

left_x, right_x, top_y, bottom_y: Tọa độ biên giới của khu vực chơi

currentMino, nextMino: Các khối Tetris hiện tại và tiếp theo

Mino_Start_x, Mino_Start_y: Tọa độ bắt đầu của khối Tetris

NextMino_x, NextMino_y: Tọa độ của khối Tetris tiếp theo

staticBlocks: Danh sách các khối Tetris đã dừng lại

gameOver: Trạng thái kết thúc trò chơi

dropInterval: Khoảng thời gian giữa các lần thả khối

level, lines, score: Cấp độ, số dòng đã xóa và điểm số của trò chơi

scoreManager: Quản lý điểm số cao nhất

Trang 13

o Hàm khởi tạo PlayManager: Thiết lập các thuộc tính ban đầu của trò chơi:

Khởi tạo đối tượng ScoreManager

Thiết lập tọa độ biên giới của khu vực chơi

Thiết lập tọa độ bắt đầu của khối Tetris và khối Tetris tiếp theo

Lấy khối Tetris hiện tại và khối Tetris tiếp theo

Tải điểm số cao nhất từ file

o Phương thức resetGame đặt lại trạng thái trò chơi:

Trang 14

o Phương thức pickMino chọn ngẫu nhiên một khối Tetris từ các hình dạng có sẵn.

o Phương thức update cập nhật trạng thái trò chơi:

Nếu phím Enter được nhấn, đặt lại trò chơi

Nếu khối Tetris hiện tại không còn hoạt động, thêm các khối của nó vào danh sách các khối đã dừng lại và kiểm tra xem trò chơi có kết thúc không

Trang 15

Chuyển đổi khối Tetris hiện tại sang khối Tetris tiếp theo và tạo khối Tetris mới.

Kiểm tra và xóa các dòng đầy

Nếu khối Tetris hiện tại vẫn còn hoạt động, cập nhật trạng thái của nó

Trang 16

o Phương thức checkDelete kiểm tra và xóa các dòng đầy:

Duyệt qua tất cả các tọa độ trong khu vực chơi

Trang 17

Kiểm tra xem có đủ số lượng khối trong một dòng không.

Nếu có, xóa các khối đó và đẩy các khối phía trên xuống

Trang 18

Các khối tĩnh, khối đang rơi, và trạng thái game (thua/tạm dừng).

Lớp ScoreManager quản lý việc lưu và tải điểm cao nhất (best score) trong trò chơi, với các chức năng chính liên quan đến việc đọc/ghi dữ liệu từ file

o Phương thức loadBestScore đọc điểm cao nhất từ file best_score.txt

o Phương thức loadBestScore lưu điểm cao nhất mới vào file nếu điểm hiện tại vượt qua điểm cao nhất trước đó

o Phương thức loadBestScore trả về giá trị của điểm cao nhất hiện tại (bestScore)

b, Input

Lớp KeyHandler triển khai giao diện KeyListener để xử lý các sự kiện từ bàn phím Lớp này sẽ cập nhật các biến trạng thái tương ứng khi các phím được nhấn hoặc thả

Trang 19

o Phương Thức keyTyped được gọi khi một ký tự được gõ Tuy nhiên, hiện tại nókhông làm gì cả.

o Phương Thức keyPressed được gọi khi một phím được nhấn

o Phương Thức keyReleased được gọi khi một phím được thả

Trang 20

c, Component

Lớp Block đại diện cho một ô vuông trong trò chơi Tetris Nó có các thuộc tính

về vị trí, kích thước, màu sắc và phương thức để vẽ ô vuông đó

o Khai báo các biến: tọa độ khối, kích thước, màu sắc

o Hàm khởi tạo Block: tạo một đối tượng Block với màu sắc c

o Phương thức draw vẽ khối trên màn hình với các hiệu ứng viền

Trang 22

o Phương thức create tạo khối b[] và tempB[] với màu sắc cho trước.

o Phương thức updateXY cập nhật vị trí và trạng thái xoay của khối nếu không có

va chạm

Trang 23

o Phương thức update:

 Cập nhật trạng thái và vị trí của khối theo các phím nhấn:

 Phím lên: Xoay khối.

 Phím xuống: Rơi nhanh hơn.

Trang 24

 Phím trái/phải: Di chuyển ngang.

 Tự động rơi: Sau mỗi chu kỳ đếm autoDropCounter

 Kiểm tra va chạm và kích hoạt trạng thái deactivating nếu khối chạm đáy

Trang 25

o Phương thức deactivating bộ đếm để vô hiệu hóa khối sau khi chạm đáy.

o Phương thức checkMovementCollision kiểm tra va chạm với các cạnh khung, khối tĩnh

Trang 26

o Phương thức checkRotationCollision kiểm tra va chạm trong quá trình xoay khối.

o Phương thức checkStaticBlockCollision xác định va chạm giữa khối hiện tại và các khối tĩnh

o Phương thức draw vẽ khối trên màn hình

Các lớp Shape_Bar, Shape_L1, Shape_L2, Shape_Square, Shape_T, Shape_Z1, Shape_Z2 mở rộng từ lớp mino và đại diện cho các hình khối trong trò chơi

Trang 27

CHƯƠNG III: KẾT QUẢ VÀ ĐÁNH GIÁ

1 Hình ảnh sản phẩm

Trang 28

o Âm thanh khi xóa dòng hoặc thua game giúp tăng sự hấp dẫn Tuy nhiên, cần

bổ sung nhạc nền để giữ chân người chơi lâu hơn

Hiệu năng:

o Game chạy ổn định với mức hiệu năng cao, không gặp tình trạng giật lag

o Tính năng lưu và tải điểm số hoạt động tốt, mang lại trải nghiệm liền mạch

Hạn chế:

o Thiếu các chế độ chơi đa dạng (ví dụ: chế độ thách đấu, multiplayer)

o Chưa có bảng xếp hạng trực tuyến hoặc yếu tố cạnh tranh để tăng sức hút

Trang 29

TÀI LIỆU THAM KHẢO PHÂN CÔNG CÔNG VIỆC

Ngày đăng: 10/04/2025, 21:45

HÌNH ẢNH LIÊN QUAN

1. Hình ảnh sản phẩm - Báo cáo bài tập lớn môn ngôn ngữ lập trình java Đề tài game 2d
1. Hình ảnh sản phẩm (Trang 27)

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