CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI đa nền tảng khác nhau, cộng đồng mạnh mẽ, tài nguyên phong phú và là một ngôn ngữ lập trình hướng đối tượng giúp quản lý mã nguồn dễ dàng và hiệu quả.. S
Trang 1NGHIÊN CỨU XÂY DỰNG GAME PACMAN BẰNG NGÔN NGỮ JAVA
CÔNG NGHỆ JAVA GV: THS NGUYỄN HỒNG THANH
NHÓM 15: MAI XUÂN ĐIỆP 2155010072
Trang 2CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
chơi kết thúc khi mạng sống của Pacman bị hết bởi
sự va chạm với các hồn ma Người chơi cố gắng kiếm được điểm số cao nhất trước khi kết thúc trò chơi
Trang 3CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tổng quan đề tài
1.1.2 Lịch sử hình thành và phát triển của trò chơi
Toru Iwatani, một nhà thiết kế từ công ty trò chơi có tên Namco muốn tạo ra một trò chơi mà giống như một phim hoạt hình Toru nói rằng cảm hứng của
mình để tạo ra các nhân vật là một chiếc bánh pizza ông đang ăn Pizza đã mất tích hai mảnh, trông giống như một miệng Sau đó, vào năm 1980 các trò chơi
đã được phát hành dưới cái tên Puck-Man
Trang 4CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
•Thế giới mở và câu chuyện
•Cải tiến đồ hoạ và âm thanh
•Chế độ VR hoặc AR
Trang 5CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.2 Tổng quan về ngôn ngữ Java
1.2.1 Giới thiệu về ngôn ngữ Java
Java là một trong những ngôn ngữ lập trình
hướng đối tượng Java là một ngôn ngữ lập
trình mạnh mẽ, đa nhiệm và dễ duyệt mà có nền tảng không phụ thuộc (platform-independent)
Nó được sử dụng trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị
di động
Java được phát hành năm 1994, đến năm 2010 được Oracle mua lại từ Sun MicroSystem
Trang 6CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.2 Tổng quan về ngôn ngữ Java
1.2.2 Một số tính chất của ngôn ngữ Java
•Đa luồng (Multithreading)
•Bộ thư viện chuẩn (Standard Library)
•Tính linh hoạt
•Nhập/ xuất (I/O) chuẩn
Trang 7CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.2 Tổng quan về ngôn ngữ Java
1.2.3 Ưu điểm
Java là nền tảng độc lập
Java là hướng đối tượng vì các lớp và đối tượng của nó
Java không sử dụng con trỏ
Trong Java có thể đạt được đa luồng
Java mạnh mẽ vì nó có nhiều tính năng như thu gom rác, không sử dụng con trỏ rõ ràng, xử lý ngoại lệ
Java là một ngôn ngữ cấp cao giúp nó dễ hiểu
Trang 8CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.2 Tổng quan về ngôn ngữ Java
1.2.4 Nhược điểm
Là một ngôn ngữ cấp cao, nó phải xử lý các cấp
độ biên dịch và trừu tượng của một máy ảo
Java thể hiện hiệu suất kém, nguyên nhân chính
là do bộ thu gom rác, cấu hình bộ nhớ đệm
không hợp lệ và bế tắc giữa các quy trình
Java có rất ít trình tạo GUI – Swing, SWT, JSF
và JavaFX trong số những trình xây dựng phổ biến hơn
Để viết mã để thực hiện một tập hợp các hoạt động đơn giản, chúng ta có thể phải viết những đoạn mã dài và phức tạp
Trang 9CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.2 Tổng quan về ngôn ngữ Java
Trang 10CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI
ỨNG DỤNG
2.1 Xác định yêu cầu và thiết kế trò chơi
Để bắt đầu việc lập trình trò chơi việc đầu tiên cần làm
là xác định yêu cầu của bài toán Người sử dụng trò chơi, các chức năng cơ bản cũng như yêu cầu chức năng và phi chức năng của trò chơi
Bản đồ sẽ dược thiết kế dưới dạng một ma trận vuông, người chơi cần điều khiển nhân vật Pacman để ăn chấm pac trong khi né tránh các hồn ma và hoàn thành màn chơi
Tương tác giữa các đối tượng trong trò chơi
Người dùng sẽ điều khiển Pacman di chuyển lên, xuống, trái, phải và né tránh các hồn ma, hồn ma sẽ di chuyển ngẫu nhiên trên bản đồ
Trang 11CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI
đa nền tảng khác nhau, cộng đồng mạnh mẽ, tài
nguyên phong phú và là một ngôn ngữ lập trình hướng đối tượng giúp quản lý mã nguồn dễ dàng và hiệu quả
Thư viện
Ở đây nhóm em sử dụng AWT để vẽ đồ họa 2D, lắng nghe và xử lý các sự kiện từ bàn phím Swing để xây dựng một khung nhìn và tạo các sự kiện định kỳ theo thời gian trong trò chơi
Trang 12CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI
đa nền tảng khác nhau, cộng đồng mạnh mẽ, tài
nguyên phong phú và là một ngôn ngữ lập trình hướng đối tượng giúp quản lý mã nguồn dễ dàng và hiệu quả
Thư viện
Ở đây nhóm em sử dụng AWT để vẽ đồ họa 2D, lắng nghe và xử lý các sự kiện từ bàn phím Swing để xây dựng một khung nhìn và tạo các sự kiện định kỳ theo thời gian trong trò chơi
Trang 13CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.2 Ngôn ngữ lập trình, thư viện và xây dựng bản đồ
Trang 14CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.2 Ngôn ngữ lập trình, thư viện và xây dựng bản đồ
Trang 15CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI
Trang 16CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.2 Ngôn ngữ lập trình, thư viện và xây dựng bản đồ
Xây dựng bản đồ
Trang 17CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.2 Ngôn ngữ lập trình, thư viện và xây dựng bản đồ
Xây dựng bản đồ
Trang 18CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.3 Tạo nhân vật Pacman và Ghosts
2.3.1 Xây dựng đối tương Pacman
Khởi tạo các biến ban đầu quy định tốc độ, mạng, điểm số… cho nhân vật
Trang 19CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI
ỨNG DỤNG
2.3 Tạo nhân vật Pacman và Ghosts
2.3.1 Xây dựng đối tượng Ghost
Khởi tạo số hồn ma tối đa cho trò chơi, toạ độ và tốc độ của các hồn ma
Trang 20CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.3 Tạo nhân vật Pacman và Ghosts
2.3.1 Xây dựng đối tượng Ghost
Trang 21CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.3 Tạo nhân vật Pacman và Ghosts
2.3.1 Xây dựng đối tượng Ghost
Trang 22CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.4 Xử lý sự kiện và điều khiển
Trang 23CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.4 Xử lý sự kiện và điều khiển
2.4.1 Xử lý sự kiện
Trang 24CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.4 Xử lý sự kiện và điều khiển
2.4.1 Xử lý sự kiện
Tại đây chúng ta sẽ dựa vào hướng và tốc độ để đặt vị trí mới cho hồn ma, cùng với đó là kiểm tra xem
Pacman và hồn ma có va chạm Nếu có và trò chơi
đang trong trạng thái inGame thì đặt biến dying bằng true
Trang 25CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.4 Xử lý sự kiện và điều khiển
2.4.1 Xử lý sự kiện
Trang 26CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.4 Xử lý sự kiện và điều khiển
2.4.2 Di chuyển
Trang 27CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI
ỨNG DỤNG
2.5 Xử lý điểm số và trạng thái trò chơi
Khai báo các biến trạng thái để nhận trạng thái trong trò chơi và mất mạng
Chúng ta sử dụng hàm drawScore để vẽ điểm số và số mạng lên màn hình
Trang 28CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.5 Xử lý điểm số và trạng thái trò chơi
Tại hàm này chúng ta sẽ xác định xem biến dying có đang là true, nếu đúng thì gọi hàm death để xử lý sự kiện sau khi mất mạng Ngược lại thì gọi các hàm di chuyển, vẽ nhân vật và kiểm tra mê cung
Trang 29CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.5 Xử lý điểm số và trạng thái trò chơi
Trang 30CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.5 Xử lý điểm số và trạng thái trò chơi
Với việc tiếp tục cấp độ chúng ta sẽ duyệt để tạo ra vị trí ban đầu cũng như hướng di chuyển cho hồn ma
Trang 31CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.5 Xử lý điểm số và trạng thái trò chơi
Tương tự như với hồn ma, ở đây chúng ta sẽ dùng
pacman_x, y để đặt vị trí bắt đầu cho nhân vật,
pacmand_x, y cho hướng chuyển động đầu và req_dx,
dy cho hướng di chuyển yêu cầu
Trang 32CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.5 Xử lý điểm số và trạng thái trò chơi
Trang 33CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.6 Đồ hoạ
Trang 34CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.6 Đồ hoạ
Trang 35CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.6 Đồ hoạ
Giao diện sau khi thực thi trò chơi
Trang 36CHƯƠNG 2: XÂY DỰNG VÀ TRIỂN KHAI ỨNG DỤNG
2.6 Đồ hoạ
Trang 37SỰ KIỆN INVINCIBILITY ( BẤT KHẢ CHIẾN BẠI )
Về ý tưởng
Khi nhấn phím ESC sẽ có sự kiện xảy ra là dừng trò chơi, cũng như khi nhấn các nút di chuyển đối tượng sẽ
di chuyển theo hướng được yêu cầu
Khi đạt được một số điểm nhất định sẽ có sự kiện thưởng thêm, cùng với đó đạt số điểm nhất định sẽ đạt trạng thái bất tử
Về nội dung
Đầu tiên chúng ta khai báo 2 biến là n và max, max chịu trách nhiệm cho sự kiện khi đạt số điểm yêu cầu n chịu trách nhiệm cho sự kiện khi nhấn phím
Trang 38SỰ KIỆN INVINCIBILITY ( BẤT KHẢ CHIẾN BẠI )
Để dễ dàng quan sát trạng thái của trò chơi, cũng như
bổ sung logic, khi sự kiện xảy ra pacman sẽ giả làm hồn ma
Trong hàm playGame thêm điều kiện thưởng khi nhân vật đạt số điểm trong khoảng từ 10-55
Trong khi kiểm tra va trạm với hồn ma ta sẽ thêm một vài điều kiện nhỏ để đạt dược sự kiện bất khả chiến bại như mong muốn Như là số điểm lớn hơn max hoặc là giá trị n được gán bằng 2 thì vào trạng thái bất khả chiến bại
Nếu n được gán bằng 4 và score nhỏ hơn max sẽ kết thúc trạng thái bất khả chiến bại
Trang 39SỰ KIỆN INVINCIBILITY ( BẤT KHẢ CHIẾN BẠI )
Tiếp đó ta viết các lệnh thực thi cho hàm Event để
thưởng điểm và vẽ chấm pac cho sự kiện thưởng Ở đây ta sẽ vẽ một hình tròn từ hàm vẽ hình oval với
đường kính 2 chiều là 15, 15 Trong sự kiện ta sẽ cộng
5 điểm khi nhân vật ăn được 1 chấm pac
Sự kiện nhấn phím sẽ được thêm vào, khi nhấn A gọi lên trạng thái bất khả chiến bại, nhấn S trở lại trạng thái bình thường Nếu score đang lớn hơn max có thể nhấn
D để tăng max và S để trở lại trạng thái bình thường
Trang 40THANK YOU
C Ô N G N G H Ệ J A V A