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

BÁO CÁO BÀI TẬP LỚN MÔN HỌC LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

30 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 đề Báo cáo bài tập lớn môn học: Lập trình hướng đối tượng
Tác giả Nhóm 13.16
Người hướng dẫn Giảng Viên: Nguyễn Mạnh Sơn
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Lập trình hướng đối tượng
Thể loại báo cáo bài tập lớn
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 30
Dung lượng 4,24 MB

Cấu trúc

  • 3. Tích hợp âm thanh và hình ảnh (4)
  • Phần 3: KIẾN TRÚC HỆ THỐNG (0)
    • 1. Tổng quan về dự án (4)
    • 2. Các thành phần trong dự án (5)
      • 2.1 Baitaplon (5)
      • 2.2 Resource (24)
      • 2.3 Sound (24)
      • 3.3 Mô tả quá trình hoạt động (25)
    • 1. Khởi Động Ứng Dụng (25)
    • 2. Hiển Thị Menu Chính (25)
    • 3. Chọn Chế Độ Chơi (25)
    • 4. Chơi Trò Chơi (26)
    • 5. Quản Lý Âm Thanh (27)
    • 6. Lưu Trữ Thông Tin Người Dùng (27)
  • PHẦN 4: KẾT QUẢ CÀI ĐẶT (27)

Nội dung

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh SơnLỜI MỞ ĐẦU Lời đầu tiên chúng em xin gửi lời cảm ơn chân thành nhấtđến thầy Nguyễn Mạnh Sơn – giảng viên môn Lập trình hướngđối t

KIẾN TRÚC HỆ THỐNG

Tổng quan về dự án

Dự án này là một trò chơi 2048 được phát triển bằng Java với giao diện người dùng sử dụng thư viện Swing Người chơi có thể chọn giữa ba chế độ chơi khác nhau: 3x3, 4x4 và 5x5, mỗi chế độ có thời gian đếm ngược riêng Trò chơi sẽ kết thúc khi hết thời gian hoặc khi người chơi không còn nước đi nào Ngoài ra, trò chơi còn tích hợp các tính năng như undo, âm thanh nền và âm thanh khi thực hiện thao tác.

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh Sơn

Các thành phần trong dự án

- Phương thức main sử dụng SwingUtilities.invokeLater để đảm bảo rằng việc tạo và hiển thị giao diện được thực hiện trên luồng sự kiện của Swing.

Khi ứng dụng được khởi động, đoạn mã sẽ tạo một đối tượng Menu và hiển thị nó, đảm bảo rằng tất cả các thao tác giao diện người dùng (UI) trong Swing được thực hiện an toàn và chính xác Game3x3 là một ví dụ điển hình cho cách tiếp cận này.

Lớp Game3x3, kế thừa từ JPanel, được thiết kế để tạo và quản lý giao diện cùng với logic của trò chơi 2048 Nó bao gồm các thành phần quan trọng như quản lý ô gạch, tính toán điểm số, xử lý âm thanh, quản lý sự kiện bàn phím và vẽ giao diện chơi.

Biến lưu trữ điểm và trạng thái trò chơi bao gồm các thành phần chính như: myScore để lưu trữ điểm số cao nhất của người chơi, kc để xác định kích thước bảng (3x3, 4x4, 5x5), myTiles và preTiles là các mảng lưu trữ trạng thái hiện tại và trước đó của các ô chơi Ngoài ra, myWin/myLose ghi nhận trạng thái thắng hoặc thua của game, sound quản lý hiệu ứng âm thanh, countdownTimer là bộ đếm thời gian cho mỗi bước chơi, và timeLeft thể hiện thời gian còn lại đếm ngược Cuối cùng, optionsFrame (JFrame) được sử dụng để hiển thị các tùy chọn trong trò chơi.

Cửa sổ tùy chọn của trò chơi

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh Sơn

Constructor khởi tạo trò chơi bằng cách thiết lập các tham số kích thước bảng, cửa sổ tùy chọn và người dùng Nó đảm bảo các biến được khởi tạo đúng cách, đồng thời thiết lập bộ đếm thời gian và thêm lắng nghe sự kiện bàn phím Ngoài ra, constructor cũng thiết lập kích thước của panel và lưu trữ các biến, bộ đếm cùng với cửa sổ.

- Thêm lắng nghe từ bàn phím

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh Sơn

- Thiết lập các phím di chuyển

Phương thức resetGame đảm bảo rằng khi bắt đầu một trò chơi mới, tất cả trạng thái và thông tin liên quan được đặt lại, giúp bảng trò chơi sẵn sàng cho người chơi Để tạo trải nghiệm thú vị, âm thanh khởi đầu được khởi tạo và phát Điểm số hiện tại cùng trạng thái thắng/thua cũng được đặt lại, đảm bảo trò chơi bắt đầu từ đầu Đồng thời, mảng các ô gạch hiện tại và trước đó được khởi tạo lại, và hai ô gạch mới ngẫu nhiên được thêm vào bảng để người chơi có thể bắt đầu.

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh Sơn

Phương thức undo trong trò chơi đóng vai trò quan trọng trong việc khôi phục trạng thái trước đó của bảng, cho phép người chơi quay lại bước đi trước Hoạt động của phương thức này bao gồm việc sao chép lại trạng thái từ mảng preTiles vào myTiles và vẽ lại bảng với trạng thái đã được khôi phục.

Các phương thức di chuyển trong trò chơi bao gồm di chuyển trái, phải, lên và xuống, có vai trò quan trọng trong việc thay đổi vị trí các ô gạch Khi thực hiện di chuyển, trạng thái hiện tại được lưu vào preTiles để hỗ trợ chức năng hoàn tác (undo) Quá trình này cho phép người chơi di chuyển và hợp nhất các ô gạch trong hàng hoặc cột theo hướng đã chọn.

Thêm ô gạch mới nếu có sự thay đổi sau di chuyển.

Các phương thức hỗ trợ quan trọng giúp trò chơi hoạt động mượt mà bao gồm: xoay bảng theo góc xác định (90, 180, 270 độ), di chuyển các ô trong một hàng về phía trái và bỏ qua các ô trống, hợp nhất các ô gạch trong một hàng nếu chúng có cùng giá trị, kiểm tra kích thước của danh sách và thêm các ô gạch trống để đạt kích thước yêu cầu, và duyệt mảng ô gạch để lấy giá trị tại ô mong muốn.

Báo cáo bài tập lớn do giáo viên Nguyễn Mạnh Sơn hướng dẫn bao gồm các chức năng như setLine để sao chép ô gạch vào mảng myTiles, tileAt để trả ô gạch về vị trí (x,y) cụ thể trên bảng, và addTile để thêm ô gạch mới vào bảng ở vị trí ngẫu nhiên trong các ô trống availableSpace.

Kiểm tra xem bảng có đầy đủ ô gạch hay không với hàm isFull, xác định khả năng thực hiện các di chuyển hợp lệ của người chơi thông qua hàm canMove, và so sánh hai hàng các ô gạch để kiểm tra sự giống nhau bằng hàm compare.

- Phương Thức paint: thắng/thua nếu trò chơi kết thúc.

Phương thức drawTile có vai trò quan trọng trong việc vẽ ô gạch tại vị trí cụ thể trên bảng, bao gồm thiết lập màu sắc, giá trị và vị trí của ô gạch Hoạt động của phương thức này bao gồm việc lấy giá trị của ô gạch, tính toán vị trí của nó trên bảng, và tiến hành vẽ nền cùng với giá trị của ô gạch.

Báo cáo bài tập lớn do giáo viên Nguyễn Mạnh Sơn hướng dẫn tập trung vào việc lập màu sắc và phông chữ cho giá trị của ô gạch dựa trên kích thước của giá trị Việc này không chỉ giúp cải thiện tính thẩm mỹ mà còn nâng cao khả năng nhận diện thông tin trong bảng dữ liệu.

Phương thức GameEnding đóng vai trò quan trọng trong việc hiển thị thông báo kết quả khi trò chơi kết thúc Khi trò chơi kết thúc, lớp màu mờ sẽ được vẽ lên toàn bộ bảng, kèm theo thông báo "You won!" nếu người chơi chiến thắng hoặc "Game over!" nếu người chơi thua Ngoài ra, sẽ có hướng dẫn nhấn ESC để bắt đầu lại trò chơi.

- Phương Thức osetCoors o Vai trò: Tính toán tọa độ của ô gạch dựa trên chỉ số của nó trong mảng.

- Lấy màu nền và màu chữ dựa trên giá trị của ô gạch.

- Lấy và đặt giá trị của ô gạch.

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh Sơn d) Menu

Lớp Menu, kế thừa từ JFrame, được sử dụng để thiết lập giao diện menu chính cho trò chơi Nó bao gồm các thành phần cần thiết để quản lý cửa sổ, điều khiển âm thanh nền, hiển thị nút bấm cho phép người dùng bắt đầu hoặc thoát trò chơi, và quản lý thông tin người dùng một cách hiệu quả.

- Thiết lập tiêu đề và kích thước cho cửa sổ, đặt hành động mặc định khi đóng cửa sổ là thoát ứng dụng

Lớp Options, kế thừa từ JFrame, được sử dụng để xây dựng giao diện màn hình tùy chọn cho trò chơi Nó cho phép người chơi lựa chọn kích thước bảng (3x3, 4x4, 5x5) và khởi tạo trò chơi dựa trên kích thước đã chọn.

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh Sơn

- Vai trò: Tạo các nút tùy chọn cho các kích thước bảng 3x3, 4x4, và 5x5 Đặt màu nền, font chữ, kích thước và căn giữa các nút.

- Thêm sự kiện khi nhấn nút để đóng cửa sổ tùy chọn hiện tại và hiển thị cửa sổ trò chơi tương ứng với kích thước được chọn.

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh Sơn

Khởi Động Ứng Dụng

- Khi người dùng chạy chương trình, phương thức `main` trong lớp `Main` sẽ được gọi.

- Nhiệm vụ chính của phương thức `main` là khởi tạo và hiển thị menu chính của trò chơi.

- Sử dụng `SwingUtilities.invokeLater` để đảm bảo rằng giao diện người dùng (UI) được khởi chạy trên luồng sự kiện của Swing.

Hiển Thị Menu Chính

- Lớp `Menu`được khởi tạo và hiển thị.

- Giao diện: Menu chính bao gồm một nền hình ảnh và hai nút: "Play" và "Quit".

- Người dùng bấm vào nút "Play" để vào menu chọn chế độ chơi, hoặc "Quit" để thoát chương trình.

- Khi người dùng chọn "Play", một đối tượng `Options` sẽ được khởi tạo và gọi phương thức `showOptions`.

Chọn Chế Độ Chơi

- Lớp `Optionshiển thị các nút chọn chế độ chơi (3x3, 4x4,5x5).

Chơi Trò Chơi

Lớp `Game3x3`chịu trách nhiệm quản lý logic và giao diện của trò chơi.

- Cấu hình kích thước cửa sổ phù hợp.

- Khởi tạo các thành phần như bảng trò chơi (Tiles), bộ đếm thời gian (Timer), âm thanh (Sound).

- Xử lý sự kiện phím: Người dùng có thể di chuyển các ô gạch bằng các phím mũi tên hoặc phím WASD.

- Khi người dùng nhấn phím, trò chơi sẽ kiểm tra xem nước đi có hợp lệ không, cập nhật trạng thái của bảng và thêm ô gạch mới nếu cần.

Mỗi chế độ chơi trong trò chơi đều có thời gian đếm ngược riêng: 7 giây cho chế độ 3x3, 5 giây cho chế độ 4x4, và 3 giây cho chế độ 5x5 Khi hết thời gian, trò chơi sẽ kết thúc và hiển thị thông báo thua.

Khi không còn nước đi hoặc hết thời gian, trò chơi sẽ kết thúc và trạng thái `myLose` được cập nhật Ngược lại, nếu người chơi đạt được giá trị ô gạch là 2048, trò chơi cũng sẽ kết thúc với chiến thắng.

`myWin` được cập nhật và trò chơi kết thúc với thông báo chiến thắng.

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh Sơn

Quản Lý Âm Thanh

- Lớp `Sound` quản lý các âm thanh trong trò chơi.

- Âm thanh nền: Phát liên tục âm thanh nền khi trò chơi bắt đầu.

- Âm thanh hành động: Phát âm thanh khi người dùng di chuyển ô gạch, undo, hoặc bắt đầu trò chơi mới.

Lưu Trữ Thông Tin Người Dùng

- Lớp `User` lưu trữ thông tin người dùng bao gồm tên và điểm cao nhất.

- Khi trò chơi kết thúc, điểm cao nhất của người dùng được cập nhật và lưu trữ cập nhật ở lượt chơi tiếp theo.

KẾT QUẢ CÀI ĐẶT

Giao diện khi mới bắt đầu vào game

- Giao diện chọn kích thước bảng chơi

Báo cáo bài tập lớn Giáo viên hướng dẫn: Nguyễn Mạnh Sơn

- Giao diện trong khi chơi khi đây là ván đầu tiên hệ thống chưa ghi nhận giá trị điểm cam nhất (best mặc định là 0)

- Giao diện khi chơi thua ( kết thúc game)

- Game kết thúc về tiếp tục hiện một giao diện chọn kích thước bảng chơi

- Giao diện trong chơi với có ghi nhận giá trị điểm cao nhất từ ván chơi trước đó

Ngày đăng: 03/12/2024, 18:52

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

TÀI LIỆU LIÊN QUAN

w