Báo cáo Game Kunny mô phỏng theo game bắn súng tọa độ Gunny lập trình bằng ngôn ngữ JAVA. Báo cáo mô tả lại các class, các phương thức xây dựng game,...
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI KHOA CÔNG NGHỆ THÔNG TIN
Trang 23 Điều kiện thắng thua 7
III Thiết kế các đối tượng 8
2.5 Xây dựng âm thanh trò chơi 18
IV Kết quả đạt được 19
1 Giao diện 19
2 Chuyển động nhân vật (animation) 23
V Cải thiện và nâng cấp 25
TÀI LIỆU THAM KHẢO 26
Trang 3DANH MỤC HÌNH ẢNH
Hình 1 Phương thức xây dựng nhân vật 9
Hình 2 Phương thức xử lí sự kiện người chơi di chuyển 10
Hình 10 Phương thức xây dựng animation (Ví dụ tấn công slime) 17
Hình 11 Phương thức xây dựng âm thanh trò chơi 18
Hình 12 Giao diện chọn màn chơi game 19
Hình 13 Màn chơi ổ kiến ma 20
Hình 14 Màn chơi cứu gà con 20
Hình 15 Màn chơi Thành trên không 21
Hình 16 Kẻ địch tấn công nhân vật 21
Hình 17 Đạn nổ 22
Hình 18 Giao diện thắng 22
Hình 19 Giao diện thua 23
Hình 20 Sprite Sheet nhân vật chuyển động 23
Hình 21 Sprite Sheet Gà tấn công 23
Hình 22 Sprite Sheet Kiến tấn công 24
Hình 23 Sprite Sheet Slime tấn công 24
Hình 24 Sprite Sheet đạn nổ 24
Trang 4LỜI NÓI ĐẦU
Công nghệ thông tin (CNTT) đang ngày càng đóng vai trò quan trọng trong cuộc sống hàng ngày của chúng ta, đặc biệt là trong lĩnh vực giải trí và giáo dục Việc ứng dụng CNTT vào các trò chơi truyền thống không chỉ là một cách thú vị để khám phá và tận hưởng, mà còn là một cơ hội tuyệt vời để rèn luyện kỹ năng lập trình và tư duy logic Gunny, với sức hút và sự phổ biến rộng rãi, là một trong những trò chơi trực tuyến được nhiều người yêu thích Việc chuyển đổi và tái tạo trò chơi này thành phiên bản điện tử sẽ mang lại không chỉ trải nghiệm thú vị cho người chơi mà còn là một thách thức đầy sáng tạo đối với các nhà phát triển Chính vì vậy, trong bài tập lớn môn Java này, em đã lựa chọn đề tài "Lập trình Game bắn súng Gunny" Bằng việc áp dụng kiến thức lập trình và hiểu biết về cơ chế hoạt động của trò chơi, em đã tạo ra một phiên bản Gunny điện tử sáng tạo và hấp dẫn, giúp tăng cường kỹ năng lập trình và hiểu biết về trò chơi của chính mình.
Trang 5
I Đặt vấn đề
Trong thế giới game bắn súng Kunny, không chỉ yêu cầu may mắn mà còn đòi hỏi sự khéo léo và chiến lược Mặc dù trò chơi có thể dễ dàng hấp dẫn bằng việc chỉ có một số lượng giới hạn các vũ khí và các yếu tố trên trường chiến, nhưng sự phức tạp của nó vẫn đòi hỏi người chơi phải có khả năng đánh giá tình hình và lập kế hoạch chiến lược một cách tỉ mỉ và logic Kunny là một trong những trò chơi bắn súng trực tuyến phổ biến nhất trên thế giới, thu hút hàng triệu người chơi từ mọi lứa tuổi và mọi tầng lớp xã hội.
Không chỉ là một trò chơi giải trí, Kunny còn là một môn thể thao điện tử và một cách để rèn luyện khả năng phản xạ nhanh nhạy và chiến thuật linh hoạt Trong thời đại của công nghệ thông tin hiện đại, với sự phát triển của các trò chơi điện tử và ứng dụng trên điện thoại di động, Kunny vẫn giữ được sức hút và giá trị giải trí của mình Máy tính không chỉ làm tăng thêm sự thú vị của trò chơi này mà còn cung cấp cơ hội cho người chơi để rèn luyện kỹ năng, chiến thuật và tương tác cộng đồng.
Trang 6II Luật chơi
Phương thức tấn công: Slime nhảy vào người chơi gây sát thương và di chuyển qua 3 vị trí bất kì đã được chỉ định
Đầu game nhân vật và kẻ địch sẽ nhận được 100 máu, mỗi lần tấn công sẽ tạo 10 sát thương
2 Di chuyển Nhân vật:
Sử dụng phím mũi tên ←, → để di chuyển bò sang trái, phải Sử dụng phím mũi tên ↑, ↓ để điều chỉnh hướng bắn
Trang 73 Điều kiện thắng thua
Màn chơi sẽ kết thúc khi máu của nhân vật hoặc kẻ địch về 0
Khi máu người chơi về 0: Màn hình hiển thị thông báo thua cuộc (Defeat) Khi máu kẻ dịch về 0: Màn hình hiển thị thông báo chiến thắng (Victory)
Trang 8III Thiết kế các đối tượng
1 Cấu trúc dự án
Game được thiết kế trong 1 package GiaoDien:
Class AngleBar.java: xử lí hành động căn góc bắn
Class BOM.java, ant.java, move_left.java, slime_at.java, stand.java, stand_left.java, MoveCharacter_Boy.java, Chic_At.java: lưu thông tin chuyển động hiệu ứng chuyển động nhân vật, kẻ địch và đạn nổ
Class Boss.java: xử lí các hành động của kẻ dịch Class Bullet.java: xử lí các hành động của viên đạn Class BulletManager.java : lưu trữ viên đạn
Class Defeated.java, Victory.java
Class DoHoaGC.java: lưu thông tin và khởi tạo màn chơi cứu gà con Class DoHoaOKM.java: lưu thông tin và khởi tạo màn chơi ổ kiến ma Class DoHoaTTK.java: lưu thông tin và khởi tạo màn chơi thành trên
Class GameInterface.java: khởi động trò chơi
Class Object.java: lưu thông tin cơ bản các đối tượng cụ thể trong trò chơi Class ObjectManager.java: lưu trữ các đối tượng và xử lí thông tin chung Class Player.java: xử lí các hành động của nhân vật
Class PowerBar.java: lưu thông tin thanh lực
Class SoundPlayer.java: xử lý nhạc nền, hiệu ứng âm thanh.
Trang 92 Xây dựng các phương thức 2.1 Xây dựng nhân vật
Hình 1 Phương thức xây dựng nhân vật
Thiết lập vị trí, thanh máu và trạng thái nhân vật
2.1.1 Xử lí sự kiện người chơi di chuyển
Trang 10Hình 2 Phương thức xử lí sự kiện người chơi di chuyển
Gán biến sự kiện di chuyển trái phải của người chơi với mũi tên →, ←
Khi biến sự kiện nhận tín hiệu từ bán phím, nhân vật sẽ di chuyển tương ứng với phím được bấm theo logic vị trí sau khi bấm nút = vị trí ban đầu ± vận tốc nhân vật.
2.1.2 Xử lí sự kiện người chơi chỉnh lực và góc bắn
Hình 3 Phương thức xử lí sự kiện chỉnh lực và góc bắn
Gắn biến sự kiện căn góc bắn của người chơi theo mũi tên ↑, ↓ Gắn biến sự kiện căn lực bắn của người chơi theo phím Y
Khi biến sự kiện nhận tín hiệu từ bán phím, nhân vật sẽ thao tác theo các phương thức đã khởi tạo.
Trang 112.2 Xây dựng đạn bắn
Hình 4 Phương thức xây dựng đạn bắn
Thiết lập tốc độ bay và sát thương viên đạn
2.2.1 Tạo ra viên đạn gắn với người chơi
Hình 5 Phương thức tạo viên đạn gắn với người chơi
Khởi tạo viên đạn gắn với người chơi Vị trí viên đạn bắn tới được tính dựa theo đường thẳng với lực và hướng bắn đã lấy được từ sự kiện căn góc và căn lực bắn.
Sau khi cập nhật được vị trí viên đạn bắn tới thì khởi tạo viên đạn và kiểm tra va chạm kẻ địch.
Trang 122.2.2 Xử lí va chạm viên đạn với kẻ địch
Hình 6 Phương thức xử lí va chạm với kẻ địch
Tạo biến bossBounds để lưu trữ vùng bao quanh kẻ địch, biến bulletBounds để tạo vùng bao quanh viên đạn Kiểm tra nếu vùng bao quanh viên đạn va chạm với vùng bao quanh kẻ địch thì gọi hàm để trừ máu kẻ địch
Trang 132.3 Xây dựng kẻ địch
Hình 7 Phương thức xây dựng kẻ địch
Thiết lập vị trí, thanh máu và trạng thái kẻ địch
2.3.1 Xử lí sự kiện kẻ địch di chuyển
Trang 15Hình 8 Phương thức di chuyển kẻ địch
Xây dựng phương thức di chuyển kẻ địch đến tấn công nhân vật rồi di chuyển đến vị trí mới bất kì đã được chỉ định
2.3.2 Xử lí sự kiện kẻ địch tấn công
Trang 16Hình 9 Phương thức xử lí kẻ địch tấn tông
Xây dựng phương thức tấn công nhân vật: Khi kẻ địch di chuyển tới gần nhân vật, nhân vật chạm tới phạm vi tấn công của kẻ địch sẽ nhận sát thương 10 máu
Trang 172.4 Xây dựng animation
Hình 10 Phương thức xây dựng animation (Ví dụ tấn công slime)
Tạo biến spriteSheet lưu trữ hình ảnh chuyển động nhân vật, chia frame theo số lượng khung hình chuyển động của hình ảnh được truyền vào Phương thức scaleSpriteSheet để thu phóng hình ảnh vừa với khung hình màn chơi
Trang 182.5 Xây dựng âm thanh trò chơi
Hình 11 Phương thức xây dựng âm thanh trò chơi
Khởi tạo class SoundPlayer chứa phương thức playSound để truyền đường dẫn âm thanh dưới dạng wav
Trang 19IV Kết quả đạt được
Game bắn súng Kunny với cơ chế PvE
Game bao gồm những phương thức cơ bản của 1 trò chơi
1 Giao diện
Menu chọn màn chơi:
Hình 12 Giao diện chọn màn chơi game
Giao diện đầu màn:
Trang 20Hình 13 Màn chơi ổ kiến ma
Hình 14 Màn chơi cứu gà con
Trang 21Hình 15 Màn chơi Thành trên không
Kẻ địch tấn công nhân vật
Hình 16 Kẻ địch tấn công nhân vật
Đạn nổ
Trang 22Hình 17 Đạn nổ
Giao diện thắng/ thua:
Hình 18 Giao diện thắng
Trang 23Hình 19 Giao diện thua
2 Chuyển động nhân vật (animation)
Trang 24Hình 22 Sprite Sheet Kiến tấn công
Hình 23 Sprite Sheet Slime tấn công
Đạn nổ
Hình 24 Sprite Sheet đạn nổ
Trang 25V Cải thiện và nâng cấp
Chưa làm được map cửa hàng
Chưa liên kết được các màn chơi với nhau Chưa vẽ được đường đạn bay
Trang 26TÀI LIỆU THAM KHẢO
Slide bài giảng của cô Đào Thị Lệ Thủy