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

Báo cáo bài tập lớn lập trình hướng Đối tượng chủ Đề game the flappy bird

23 29 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: The Flappy Bird
Tác giả Đoàn Ngọc Dũng, Đậu Nguyễn Lâm Hoàng, Nguyễn Hồng Giáp, Trần Đức Hiệp
Người hướng dẫn Ngô Tiến Đức
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành An Toàn Thông Tin
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 23
Dung lượng 4,41 MB

Nội dung

GIỚI THIỆU TỔNG QUAN 2.Mục tiêu trò chơi Người chơi sẽ cố gắng đạt được điểm số cao nhất bằng cách giúp con chim vượt qua càng nhiều cặp ống càng tốt.. Pipe Đối tượng ống là chướng ngạ

Trang 1

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

KHOA AN TOÀN THÔNG TIN

-

 -BÁO CÁO BÀI TẬP LỚN

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

- Đoàn Ngọc Dũng – B22DCAT047 (Nhóm trưởng)

- Đậu Nguyễn Lâm Hoàng – B22DCCN331

- Nguyễn Hồng Giáp – B22DCAT103

- Trần Đức Hiệp – B22DCAT114

Hà Nội 2024

Trang 2

LỜI MỞ ĐẦU

Thực hiện nhiệm vụ của Thầy về yêu cầu xây dựng ứng dụng (desktopapp, web,…) bằng java Nhóm 09 chúng em đã quyết định xây dựng game TheFlappy Bird

Được sự tận tình giúp đỡ hướng dẫn của Thầy cùng với nỗ lực trong họctập, tìm tòi học hỏi, chúng em đã hoàn thành báo cáo Bài tập lớn của mình

Báo cáo này gồm 5 phần chính:

- Phần I: Giới thiệu tổng quan.

- Phần II: Các thư viện được sử dụng.

- Phần III: Các Class trong chương trình.

- Phần IV: Các hàm trong chương trình.

Trong quá trình thực hiện báo cáo, tuy đã cố gắng nhưng chúng em vẫncòn những hạn chế về thời gian tìm hiểu, kiến thức cũng như là kinh nghiệm vàvẫn còn nhiều sai sót.Chúng em rất mong được nhận những ý kiến đóng góp vànhận xét của Thầy để chúng em có thể hoàn thiện hơn

Trang 3

LỜI CẢM ƠN

Đầu tiên, chúng em xin gửi lời cảm ơn sâu sắc đến Học viện Công nghệBưu chính Viễn thông đã đưa bộ môn Lập trình hướng đối tượng vào chươngtrình giảng dạy

Đặc biệt, chúng em xin bày tỏ long biết ơn sâu sắc đến Giảng viên bộmôn, thầy Ngô Tiến Đức Cảm ơn thầy đã tận tình dạy dỗ và truyền đạt nhữngkiến thức vô cùng quý báu Trong thời gian tham gia lớp học của thầy, chúng emcảm thấy vô cùng may mắn vì đã tiếp cận được nhiều kiến thức bổ ích, đượcthầy tận tình chỉ bảo, giúp đỡ !

Bộ môn Lập trình hướng đối tượng là một môn học vô cùng quan trọng và

bổ ích Tuy nhiên, những kiến thức và kỹ năng về môn học này chúng em vẫncòn hạn chế Do đó báo cáo Bài tập lớn khó tránh khỏi những sai sót Kínhmong thầy xem xét và góp ý giúp báo cáo của chúng em được hoàn thiện hơn !

Một lần nữa chúng em xin chân thành cảm ơn !

Hà Nội, ngày 7 tháng 11 năm 2024

Trang 4

LỜI MỞ ĐẦU 2

LỜI CẢM ƠN 3

I GIỚI THIỆU TỔNG QUAN 5

1 Giới thiệu 5

2 Mục tiêu trò chơi 5

3 Lối chơi và cách điều khiển 5

4 Tính năng đặc biệt 5

II CÁC THƯ VIỆN ĐƯỢC SỬ DỤNG 6

1.Xây dựng cửa sổ trò chơi 6

2.Xây dựng tính năng trò chơi 6

III CÁC CLASS CỦA CHƯƠNG TRÌNH……… 6

1.Bird……….7

2.Pipe……….7

3.Item……….7

4.Flappybird……… 8

IV CÁC HÀM CỦA CHƯỜNG TRÌNH 1 actionPerformed……….9

2 keyPressed……….9

3 playsoundbg… ……… 15

4 playsoundpaimon ……… 15

5 Flappybird…….……… 16

6 collision………17

7 placePipies… ……….17

8 paintComponent……… 18

9 draw……….……… …….18

10.move……….……… ………20

Trang 5

I GIỚI THIỆU TỔNG QUAN

2.Mục tiêu trò chơi

Người chơi sẽ cố gắng đạt được điểm số cao nhất bằng cách giúp con chim

vượt qua càng nhiều cặp ống càng tốt Mỗi cặp ống mà con chim bay qua thành công sẽ cộng thêm một điểm vào tổng điểm Trò chơi sẽ kết thúc khi con chim chạm vào ống cản trở hoặc chạm đất

3 Lối chơi và cách điều khiển

Điều khiển: Người chơi sử dụng một nút duy nhất để điều khiển chim bay

lên Khi người chơi nhấn phím SPACE, con chim sẽ nhảy lên một khoảng ngắn Nếu không nhấn, chim sẽ bị kéo xuống dưới do trọng lực

Cách chơi: Người chơi cần phải nhấn phím với tần suất và thời điểm phù

hợp để giúp con chim giữ độ cao, tránh va vào các ống cản trở Sự liên tục của các cặp ống và khoảng cách hẹp giữa chúng tạo ra mức độ khó cao, đòi hỏi người chơi có phản xạ nhanh và khả năng điều khiển khéo léo

4 Tính năng đặc biệt

Hiệu ứng âm thanh sống động: Khi chim bay qua mỗi cặp ống, một âm thanh vui tai phát ra, và khi gặp sự cố như va chạm, âm thanh kết thúc cũng được phát ra Điều này tăng thêm tính hấp dẫn và giúp người chơi nhận biết trạng thái của trò chơi mà không cần nhìn vào màn hình

Chế độ ‘Undead Mode’: Đây là một tính năng đặc biệt giúp người chơi

không bị mất mạng ngay cả khi va chạm với ống cản trở Chế độ này giúp trò chơi trở nên thú vị hơn

Các vật phẩm ngẫu nhiên: Trong quá trình chơi, người chơi sẽ bắt gặp một

số vật phẩm xuất hiện trên đường đi Mỗi vật phẩm sẽ có một hiệu ứng nhất định, chẳng hạn như:

Vật phẩm cộng điểm: Giúp người chơi tăng thêm 10 điểm và tốc độ di

chuyển khi thu thập

Vật phẩm trừ điểm: Tạo thêm thử thách bằng cách giảm 10 điểm của

người chơi khi va vào

Vật phẩm bật chế độ undead: Giúp người chơi kích hoạt chế độ undead

trong một thời gian ngắn (đủ điều kiện kích hoạt khi thu thập đủ 2 Item2)

Hình nền thay đổi: Dựa vào điểm số, hình nền trò chơi sẽ tự động thay đổi

để tạo cảm giác mới mẻ cho người chơi Điều này không chỉ giúp trò chơi bớt

Trang 6

nhàm chán mà còn mang lại cảm giác tiến bộ khi điểm số của người chơi ngày càng tăng cao Hình nền sẽ thay đổi lần lượt ở các mốc 45, 85, 135 và 175.

II CÁC THƯ VIỆN ĐƯỢC SỬ DỤNG.

1 Xây dựng cửa sổ trò chơi

-javax.swing.*: Thư viện này đã được sử dụng để xây dựng giao diện của trò chơi Trong các lớp thuộc Swing, JFrame là thành phần chính để tạo cửa sổ ứng dụng, JPanel để bố trí và vẽ đồ họa, và JLabel hoặc JButton có thể dùng để hiển thị thông tin hoặc tạo các nút bấm (nếu cần)

2 Xây dựng tính năng trò chơi

- java.awt: Được dùng cho các lớp liên quan đến đồ họa và giao diện ví dụ như

các lớp Graphics và Color, vẽ hình ảnh và màu sắc

- java.awt.event: Thư viện này chứa các lớp và giao diện hỗ trợ xử lý sự kiện

Ví dụ, ActionListener giúp game nhận diện và xử lý các thao tác người chơi, như nhấn phím để điều khiển chú chim

- javax.swing: Phục vụ cho việc tạo giao diện, giúp xây dựng các thành phần

trực quan như cửa sổ game (JFrame), và thiết lập giao diện người dùng

- java.util.ArrayList: Dùng để quản lý danh sách động, chẳng hạn quản lý các

cột xuất hiện ngẫu nhiên hoặc điểm số qua các lần chơi

- java.util.Random: Tạo ra các giá trị ngẫu nhiên, như tọa độ xuất hiện của các

cột

- java.io: Giúp ghi và đọc dữ liệu từ các file.Phổ biến trong việc lưu và tải điểm

số cao hoặc cấu hình

- java.util.logging: Hỗ trợ ghi log, theo dõi các hoạt động trong quá trình chạy

chương trình, có ích trong việc phát hiện lỗi

- javax.sound.sampled: Được dùng để phát âm thanh, tạo các hiệu ứng âm

thanh khi chim bay lên, hoặc khi trò chơi kết thúc

III CÁC CLASS CỦA CHƯƠNG TRÌNH.

1 Bird

Nhân vật chính của trò chơi, được người chơi điều khiển xuyên suốt quá trình chơi

Trang 7

Class này định nghĩa một đối tượng cho chim trong trò chơi, chứa các thuộc tínhnhư vị trí, kích thước và hình ảnh.

2 Pipe

Đối tượng ống là chướng ngại vật chính của trò chơi được tạo ra 1 cách ngẫu nhiên theo chu kì, ống trên sẽ được tạo ra trước để lại 1 khoảng trống có kích thước bằng 1/4 màn hình trò chơi và tạo ra ống dưới sau đó

Class này định nghĩa các ống mà chim sẽ bay qua Nó chứa các thuộc tính như

vị trí, kích thước và hình ảnh

3 Item

Các vật phẩm người chơi có thể nhặt trong quá trình chơi Có 3 loại Item bao gồm: Item tăng điểm (kèm theo tăng tốc độ chim), Item giảm điểm (các thao tác của chim bị đảo ngược, chim bay ngược về phía sau, trọng lực bị trừ hết và đảo ngược) và Item sao vàng (đủ điều kiện kích hoạt trạng thái Undead khi thu thập

đủ 2 sao)

Trang 8

Class này định nghĩa các vật phẩm mà chim có thể thu thập Nó cũng chứa các thuộc tính như vị trí, kích thước và hình ảnh.

4 Flappybird

Đây là lớp chính, kế thừa từ JPanel và thực hiện hai giao diện ActionListener và KeyListener Trong lớp này có 3 đối tượng bên trong có tác dụng như bộ não của trò chơi, chứa tất cả các hàm xử lý

Trong lớp này có ba lớp bên trong:

Đối tượng Bird: Đại diện cho con chim trong game.

Đối tượng Pipe: Đại diện cho các ống cản.

Đối tượng Item: Đại diện cho các vật phẩm (items) trong trò chơi.

Trang 10

+Xử lý khi xảy ra sự kiện bấm phím “SPACE”:

Khi Bird đang trong trạng thái bình thường, nút SPACE sẽ giúp chim di chuyển

1 khoảng 9 đơn vị theo chiều hướng lên trên Còn nếu đang trong trạng thái trọng lực âm do nhặt được Item giảm điểm nút SPACE sẽ giúp chim rơi xuống 9đơn vị

+Xử lý khi xảy ra sự kiện bấm phím Z:

Trang 11

Người chơi sẽ đặt đủ điều kiện kích hoạt trạng thái undead khi nhặt được 2 Item ngôi sao và có thể nhấn nút Z bất kì lúc nào để kích hoạt trạng thái này Khi kíchhoạt người chơi sẽ miễn nhiễm với tất cả ống và tiêu hao toàn bộ thanh năng lượng.

+Xử lý khi xảy ra sự kiện bấm phím N:

Trang 12

Lựa chọn bấm phím N hoặc Y khi bắt đầu trò chơi để kích hoạt âm thanh của tròchơi hoặc không Khi chọn bấm phím N (chọn không tắt âm thanh) tất cả trò chơi sẽ được reset và bắt đầu phát các hiệu ứng âm thành bao gồm nhạc nền và các hiệu ứng âm thanh tương tác.

Trang 13

Trong khi chơi người chơi có thể bấm phím P (Pause) để tạm dùng trò chơi Khi

đó hình nền sẽ được thay đổi và người chơi có thể đưa ra 1 vài lựa chọn mới:

Các phím dưới đây chỉ có thể kích hoạt khi game đang trong trạng thái Pause:+Nếu chọn phím C:

Trang 14

Khi bấm phím C trò chơi sẽ không có gì thay đổi và vẫn tiếp tục.+Nếu chọn phím R:

Trò chơi sẽ được reset và người chơi sẽ bắt đầu lại từ đầu

+Nếu chọn phím S:

Trang 15

Trò chơi sẽ được chuyển sang trạng thái có âm thanh, nhạc nền và hiệu ứng âm thanh sẽ được kích hoạt.

Trang 16

clip = AudioSystem.getClip(); tạo một đối tượng Clip, đại diện cho âm thanh sẽ được phát.

clip.open(ado); mở AudioInputStream (âm thanh) để clip có thể phát lại nội dung từ tệp âm thanh

Trang 17

Đảm nhận nhiệm vụ thiết lập môi trường ban đầu cho trò chơi, bao gồm cài đặt các thành phần hình ảnh, âm thanh và bộ đếm thời gian (timers) để quản lý vònglặp của trò chơi Bao gồm:

+Thiết lập các thuộc tính cơ bản của trò chơi

+Tải hình ảnh các thành phần của trò chơi

+Khởi tạo các đối tượng trò chơi

+Thiết lập Timer để tạo ra các ống mới và điều khiển vòng lặp trò chơi

Trang 18

Có nhiệm vụ tạo ra ống nước 1 cách random, ống trên sẽ được tạo trước và để lại 1 khoảng trống đúng bằng 1/4 độ dài màn hình và tạo ống dưới tương ứng.-Phương thức paintComponent(Graphics g):

Thuộc lớp Flappybird và được gọi mỗi khi cần vẽ lại giao diện trò chơi Đây là một phương thức quan trọng trong các chương trình giao diện đồ họa, đặc biệt làtrong các trò chơi, vì nó quyết định cách thức hiển thị các đối tượng trên màn hình

-Hàm void draw(Graphics g):

Chịu trách nhiệm vẽ tất cả các thành phần trò chơi trên màn hình dựa trên trạng thái của trò chơi, như trạng thái bắt đầu, tạm dừng, điểm số, hình nền thay đổi theo điểm số, các ống nước, chim, vật phẩm và chế độ game over

+Vẽ màn hình trạng thái chờ:

Trang 19

+Vẽ màn hình trạng thái Pause:

+Vẽ hình nền trò chơi khi đạt các mốc điểm mới:

+Vẽ các trạng thái của chim (trạng thái bình thường, bay lên, bay xuống và undead):

+Vẽ ống nước và các Item trong trò chơi:

Trang 20

+Vẽ thông báo gameover:

+Hiển thị khi người chơi đạt đủ điều kiện kích hoạt Undead:

Trang 21

-Hàm void move():

Đảm nhiệm vai trò quan trọng trong việc điều chỉnh các yếu tố chuyển động của trò chơi, bao gồm chim, ống, và các vật phẩm

+Điều chỉnh vị trí và trọng lực của chim:

+Điều chỉnh và di chuyển các đường ống:

Tính toán tốc độ của ống dựa trên điểm số: ssspeed được tính bằng cách chia

score cho 10 Điểm số càng cao thì ssspeed càng lớn, làm tăng tốc độ di chuyển của các ống

Di chuyển ống: Vị trí x của các ống giảm dần để chúng di chuyển từ phải sang

trái

Cộng điểm khi vượt qua ống: Nếu chim đã bay qua ống mà chưa được tính

điểm, score tăng thêm 0.5 và pipe.passed đánh dấu ống đã được chim vượt qua

Xử lý va chạm: Nếu chim chạm vào ống, trò chơi kết thúc.

+Điều kiện đặt lại tốc độ ống và hẹn giờ:

Trang 22

+Điều chỉnh trạng thái energy:

+Di chuyển và cập nhật trạng thái của Item2 (Sao):

+Di chuyển và cập nhật trạng thái của Item1:

Ngày đăng: 11/11/2024, 21:08

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w