Đồ án java trên nền website game ball Đồ án java trên nền website game ball Đồ án java trên nền website game ball Đồ án java trên nền website game ball Đồ án java trên nền website game ball Đồ án java trên nền website game ball
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Đề tài:
Thiết kế hệ thống trò chơi “phiêu lưu bắn bóng bay”
bằng NNLT Java trên nền website game ball
Hà Nội, 6-2018
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Đề tài:
Thiết kế hệ thống trò chơi “phiêu lưu bắn bóng bay”
bằng NNLT Java trên nền website game ball
Hà Nội, 6-2018
Trang 3Giảng viên hướng dẫn đánh giá:
Họ và tên Sinh viên: MSSV:………
Tên đồ án:
………
Chọn các mức điểm phù hợp cho sinh viên trình bày theo các tiêu chí dưới đây: Rất kém (1); Kém (2); Đạt (3); Giỏi (4); Xuất sắc (5)
Có sự kết hợp giữa lý thuyết và thực hành (20)
1
Nêu rõ tính cấp thiết và quan trọng của đề tài, các vấn đề và
các giả thuyết (bao gồm mục đích và tính phù hợp) cũng như
phạm vi ứng dụng của đồ án
1 2 3 4 5
2 Cập nhật kết quả nghiên cứu gần đây nhất (trong nước/quốc tế) 1 2 3 4 5
3 Nêu rõ và chi tiết phương pháp nghiên cứu/giải quyết vấn đề 1 2 3 4 5
4 Có kết quả mô phỏng/thưc nghiệm và trình bày rõ ràng kết quả
Có khả năng phân tích và đánh giá kết quả (15)
5
Kế hoạch làm việc rõ ràng bao gồm mục tiêu và phương pháp
thực hiện dựa trên kết quả nghiên cứu lý thuyết một cách có hệ
thống
1 2 3 4 5
6 Kết quả được trình bày một cách logic và dễ hiểu, tất cả kết
quả đều được phân tích và đánh giá thỏa đáng 1 2 3 4 5
7
Trong phần kết luận, tác giả chỉ rõ sự khác biệt (nếu có) giữa
kết quả đạt được và mục tiêu ban đầu đề ra đồng thời cung cấp
lập luận để đề xuất hướng giải quyết có thể thực hiện trong
tương lai
1 2 3 4 5
Kỹ năng viết (10)
8
Đồ án trình bày đúng mẫu quy định với cấu trúc các chương
logic và đẹp mắt (bảng biểu, hình ảnh rõ ràng, có tiêu đề, được
đánh số thứ tự và được giải thích hay đề cập đến trong đồ án,
có căn lề, dấu cách sau dấu chấm, dấu phẩy v.v), có mở đầu
chương và kết luận chương, có liệt kê tài liệu tham khảo và có
trích dẫn đúng quy định
1 2 3 4 5
9 Kỹ năng viết xuất sắc (cấu trúc câu chuẩn, văn phong khoa
học, lập luận logic và có cơ sở, từ vựng sử dụng phù hợp v.v.) 1 2 3 4 5
Thành tựu nghiên cứu khoa học (5) (chọn 1 trong 3 trường hợp)
10a
Có bài báo khoa học được đăng hoặc chấp nhận đăng/đạt giải
SVNC khoa học giải 3 cấp Viện trở lên/các giải thưởng khoa
học (quốc tế/trong nước) từ giải 3 trở lên/ Có đăng ký bằng
phát minh sáng chế
5
10b
Được báo cáo tại hội đồng cấp Viện trong hội nghị sinh viên
nghiên cứu khoa học nhưng không đạt giải từ giải 3 trở
lên/Đạt giải khuyến khích trong các kỳ thi quốc gia và quốc tế
khác về chuyên ngành như TI contest
2
Điểm tổng quy đổi về thang 10
Trang 4Nhận xét thêm của Thầy/Cô (giảng viên hướng dẫn nhận xét về thái độ và tinh
thần làm việc của sinh viên)
Ngày: / /2018 Người nhận xét
(Ký và ghi rõ họ tên)
Trang 5Cán bộ phản biện đánh giá:
Họ và tên Sinh viên: MSSV:………
Tên đồ án:
………
Chọn các mức điểm phù hợp cho sinh viên trình bày theo các tiêu chí dưới đây: Rất kém (1); Kém (2); Đạt (3); Giỏi (4); Xuất sắc (5)
Có sự kết hợp giữa lý thuyết và thực hành (20)
1
Nêu rõ tính cấp thiết và quan trọng của đề tài, các vấn đề và
các giả thuyết (bao gồm mục đích và tính phù hợp) cũng như
phạm vi ứng dụng của đồ án
1 2 3 4 5
2 Cập nhật kết quả nghiên cứu gần đây nhất (trong nước/quốc tế) 1 2 3 4 5
3 Nêu rõ và chi tiết phương pháp nghiên cứu/giải quyết vấn đề 1 2 3 4 5
4 Có kết quả mô phỏng/thưc nghiệm và trình bày rõ ràng kết quả
Có khả năng phân tích và đánh giá kết quả (15)
5
Kế hoạch làm việc rõ ràng bao gồm mục tiêu và phương pháp
thực hiện dựa trên kết quả nghiên cứu lý thuyết một cách có hệ
thống
1 2 3 4 5
6 Kết quả được trình bày một cách logic và dễ hiểu, tất cả kết
quả đều được phân tích và đánh giá thỏa đáng 1 2 3 4 5
7
Trong phần kết luận, tác giả chỉ rõ sự khác biệt (nếu có) giữa
kết quả đạt được và mục tiêu ban đầu đề ra đồng thời cung cấp
lập luận để đề xuất hướng giải quyết có thể thực hiện trong
tương lai
1 2 3 4 5
Kỹ năng viết (10)
8
Đồ án trình bày đúng mẫu quy định với cấu trúc các chương
logic và đẹp mắt (bảng biểu, hình ảnh rõ ràng, có tiêu đề, được
đánh số thứ tự và được giải thích hay đề cập đến trong đồ án,
có căn lề, dấu cách sau dấu chấm, dấu phẩy v.v), có mở đầu
chương và kết luận chương, có liệt kê tài liệu tham khảo và có
trích dẫn đúng quy định
1 2 3 4 5
9 Kỹ năng viết xuất sắc (cấu trúc câu chuẩn, văn phong khoa
học, lập luận logic và có cơ sở, từ vựng sử dụng phù hợp v.v.) 1 2 3 4 5
Thành tựu nghiên cứu khoa học (5) (chọn 1 trong 3 trường hợp)
10a
Có bài báo khoa học được đăng hoặc chấp nhận đăng/đạt giải
SVNC khoa học giải 3 cấp Viện trở lên/các giải thưởng khoa
học (quốc tế/trong nước) từ giải 3 trở lên/ Có đăng ký bằng
phát minh sáng chế
5
10b
Được báo cáo tại hội đồng cấp Viện trong hội nghị sinh viên
nghiên cứu khoa học nhưng không đạt giải từ giải 3 trở
lên/Đạt giải khuyến khích trong các kỳ thi quốc gia và quốc tế
khác về chuyên ngành như TI contest
2
Điểm tổng quy đổi về thang 10
Trang 6Nhận xét thêm của Thầy/Cô
Ngày: / /2018 Người nhận xét
(Ký và ghi rõ họ tên)
Trang 7LỜI NÓI ĐẦU
Trong xã hội hiện đại ngày naytiềm ẩn quá nhiều nguy cơ tác động tiêu cực đến đời sống và sức khỏe tinh thần của con người, có thể dẫn đến những căn bệnh về tâm lý, stress Bản thân em cũng đã từng bị stress nặng ảnh hưởng rất lớn đến cuộc sống Tuy nhiên bằng những trò chơi điện tử đơn giản sau những thời gian học tập
và làm việc căng thẳng đã giúp em giải tỏa đi rất nhiều Vì lẽ đó em đã chọn đề tài
“XÂY DỰNG HỆ THỐNG TRÒ CHƠI ĐIỆN TỬ KẾT HỢP ỨNG DỤNG WEB ”
để làm đồ án tốt nghiệp của mình Là một người yêu thích lập trình, em muốn dùng những kiến thức mà mình đã học được trên ghế nhà trường để tạo ra một trò chơi điện tử, mà mọi người có thể giải tỏa những áp lực cuộc sống sau những giờ làm việc căng thẳng Không chỉ dừng lại ở mức độ đồ án tốt nghiệp, em muốn hướng tới một sản phẩm mà em có thể khởi nghiệp trong tương lai
Em xin cam đoan đã thực hiện quá trình làm đồ án một cách khoa học, trung thực, đúng đắn dưới sự hướng dẫn của ThS Các tài liệu, bài báo khoa học, giáo trình giảng dạy nếu được sử dụng trong đồ án đều được trích dẫn đầy đủ Em xin chịu trách nhiệm trước hội đồng về sự trung thực của đồ án mà mình thực hiện
Em xin bày tỏ lòng biết ơn sâu sắc tới ThS , thầy đã truyền đạt kiến thức, kĩ năng trong học tập và nghiên cứu, hướng dẫn tận tâm giúp em hoàn thành đồ án này Và em cũng xin chân thành cảm ơn các thầy, cô, các cán bộ làm việc tại trường Đại học Bách khoa Hà Nội và đặc biệt là các thầy, cô trong khoa Điện tử viễn thông
đã trang bị nền tảng kiến thức giúp em trong quá trình học tập và làm đồ án Cuối cùng, em xin gửi lời cảm ơn tới gia đình, người thân, bạn bè đã quan tâm, động viên, tạo điều kiện cho em trong quá trình học tập
Trang 8TÓM TẮT ĐỒ ÁN
Đồ án này hướng tới việc xây dựng một hệ thống bao gồm 2 phần là trò chơi điện tử và ứng dụng web Trò chơi chạy trên nền máy tính cá nhân, hướng tới thể loại trò chơi giải trí, không cần đầu tư nhiều thời gian Lối chơi đơn giản chỉ cần click chuột và ghi điểm, ai cũng có thể chơi Hướng tới nhiều lứa tuổi khác nhau Ứng dụng web là một kênh chính thức để quảng bá và phát hành trò chơi Không chỉ thế, ứng dụng web còn giúp người chơi có thể tạo và quản lý tài khoản của mình, đây còn là nơi để người chơi phản hồi cũng như có những đóng góp cho trò chơi Người quản trị thông qua ứng dụng web có thể xử lý những vấn đề của người chơi gặp phải, tiếp nhận những ý kiến đóng góp của người chơi để trò chơi ngày càng hoàn thiện và phát triển hơn
This project aims to build a system consisting of two parts: video games and web application The game is geared towards entertaining game genres, without spending much time The game is very easy to play, just click click and click, anyone can play Targeted for many ages Web application is an official channel for promoting and releasing the game Not only that, the web application also allows players to create and manage their accounts, as well as where players can respond and contribute to the game The administrator through the web application can handle the problems of the players encountered, receive the comments of players so that the game is up to date and improved
Trang 9MỤC LỤC
LỜI NÓI ĐẦU 7
TÓM TẮT ĐỒ ÁN 8
MỤC LỤC 9
DANH SÁCH HÌNH VẼ 11
DANH SÁCH BẢNG BIỂU 13
Chương 1 Tổng quan ngành công nghiệp trò chơi điện tử 15
1.1 Ngành công nghiệp trò chơi điện tử 15
1.1.1 Trò chơi điện tử là gì ? 15
1.1.2 Ngành công nghiệp trò chơi điện tử 15
1.2 Ngành công nhiệp trò chơi điện tử tại Việt Nam 16
1.3 Kết luận 16
Chương 2 Xây dựng trò chơi bằng ngôn ngữ Java và framework JavaFX 17
2.1 Java và framework JavaFX 17
2.1.1 Java 17
2.1.2 JavaFX 19
2.2 Phân tích trò chơi 19
2.2.1 Ý tưởng 19
2.2.2 Xác định rõ yêu cầu 19
2.2.3 Mô hình hóa chức năng 20
2.2.4 Mô hình cầu trúc 27
2.2.5 Mô hình hóa hoạt động 34
2.3 Thiết kế trò chơi 38
2.3.1 Thiết kế lớp và phương thức 38
2.3.2 Thiết kế giao diện 42
2.4 Thiết kế cơ sở dữ liệu 45
2.4.1 Xác định thực thể 45
2.4.2 Mô hình thực thể liên kết 45
2.4.3 Chuẩn hóa 45
2.4.4 Mô tả chi tiết các quan hệ 46
2.4.5 Mô hình thực thể cho quan hệ 46
2.5 Kết luận 46
Chương 3 Xây dựng ứng dụng web bằng ngôn ngữ Python và framework Django 47 3.1 Python và framework Django 47
Trang 103.1.1 Python 47
3.1.2 Django 48
3.2 Phân tích hệ thống 48
3.2.1 Ý tưởng 48
3.2.2 Xác định rõ yêu cầu 48
3.2.3 Mô hình hóa chức năng 49
3.2.4 Mô hình cầu trúc 56
3.2.5 Mô hình hóa hoạt động 60
3.3 Thiết kế hệ thống 65
3.3.1 Thiết kế lớp và phương thức 65
3.3.2 Thiết kế giao diện 66
3.4 Thiết kế cơ sở dữ liệu 70
3.4.1 Xác định thực thể 70
3.4.2 Mô hình thực thể liên kết 70
3.4.3 Chuẩn hóa 71
3.4.4 Mô tả chi tiết các quan hệ 71
3.4.5 Mô hình thực thể cho quan hệ 73
3.5 Kết luận 73
KẾT LUẬN 74
TÀI LIỆU THAM KHẢO 75
BẢNG ĐỐI CHIẾU THUẬT NGỮ VIỆT ANH 76
PHỤ LỤC 77
Trang 11DANH SÁCH HÌNH VẼ
Hình 2.1 Danh sách 10 ngôn ngữ lập trình phổ biến nhất năm 2017 [9] 17
Hình 2.2 Sơ đồ ca sử dụng 21
Hình 2.3 Sơ đồ hoạt động của hệ thống 26
Hình 2.4: Sơ đồ lớp 32
Hình 2.5: Sơ đồ đối tượng 33
Hình 2.6 Sơ đồ tuần tự của hoạt động đăng ký 34
Hình 2.7 Sơ đồ tuần tự của hoạt động đăng nhập 34
Hình 2.8 Sơ đồ tuần tự của hoạt động chơi không đăng nhập 35
Hình 2.9 Sơ đồ tuần tự của hoạt động hướng dẫn chơi 35
Hình 2.10 Sơ đồ tuần tự của hoạt động bật/tắt âm thanh 36
Hình 2.11 Sơ đồ tuần tự của hoạt động xem điểm số 36
Hình 2.12 Sơ đồ tuần tự của hoạt động chọn màn chơi 37
Hình 2.13 Sơ đồ tuần tự của hoạt động chơi 37
Hình 2.14 Giao diện đầu trò chơi 42
Hình 2.15 Giao diện đăng nhập 42
Hình 2.16 Giao diện chính 43
Hình 2.17 Giao diện điểm cao 43
Hình 2.18 Giao diện chơi 44
Hình 2.19 Giao diện chọn màn chơi 44
Hình 2.20 Mô hình thực thể liên kết 45
Hình 2.21 Mô hình thực thể cho quan hệ 46
Hình 3.1 Sơ đồ ca sử dụng của hệ thống 51
Hình 3.2 Sơ đồ hoạt động của hệ thống 56
Hình 3.3 Sơ đồ lớp 59
Hình 3.4 Sơ đồ đối tượng 60
Hình 3.5 Sơ đồ tuần tự hoạt động đăng ký tài khoản 60
Hình 3.6 Sơ đồ tuần tự hoạt động đăng nhập tài khoản người chơi 61
Hình 3.7 Sơ đồ tuần tự của hoạt động xem hướng dẫn chơi 61
Hình 3.8 Sơ đồ tuần tự hoạt động xem những người chơi có điểm số cao 62
Hình 3.9 Sơ đồ tuần tự của hoạt động tải trò chơi 62
Hình 3.10 Sơ đồ tuần tự hoạt động chỉnh sửa thông tin 63
Hình 3.11 Sơ đồ tuần tự của hoạt động tạo mới phản hồi 63
Hình 3.12 Sơ đồ tuần tự của lịch sử đăng nhập 63
Hình 3.13 Sơ đồ tuần tự khóa / mở khóa tài khoản người chơi 64
Hình 3.14 Sơ đồ tuần tự của hoạt động xử lý phản hồi 64
Hình 3.15 Sơ đồ tuần tự của hoạt động khóa / mở khóa tài khoản nhân viên 64
Hình 3.17 Giao diện đăng nhập 66
Hình 3.16 Giao diện đăng ký 66
Hình 3.18 Giao diện lịch sử đăng nhập của người chơi 66
Hình 3.19 Giao diện thay đổi thông tin cá nhân 67
Hình 3.20 Giao diện tạo mới phản hồi 67
Hình 3.21 Giao diện hiển thị chi tiết điểm số 67
Hình 3.22 Giao diện quản lý nhân viên 68
Hình 3.23 Giao diện quản lý phản hồi từ người chơi 68
Trang 12Hình 3.24 Giao diện quản lý người chơi 68
Hình 3.25 Giao diện trang chủ 1 69
Hình 3.26 Giao diện trang chủ 2 69
Hình 3.27 Giao diện trang chủ 3 69
Hình 3.28 Sơ đồ thực thể liên kết 70
Hình 3.29 Mô hình thực thể cho quan hệ 73
Trang 13DANH SÁCH BẢNG BIỂU
Bảng 2.1 Mô tả đăng ký 21
Bảng 2.2 Mô tả đăng nhập 22
Bảng 2.3 Mô tả chọn màn chơi 22
Bảng 2.4 Mô tả hiển thị điểm số cao 22
Bảng 2.5 Mô tả bật âm thanh 23
Bảng 2.6 Mô tả tắt âm thanh 23
Bảng 2.7 Mô tả hướng dẫn chơi 23
Bảng 2.8 Mô tả chơi 24
Bảng 2.9 Mô tả tạm dừng trò chơi 24
Bảng 2.10 Mô tả tiếp tục trò chơi 25
Bảng 2.11 Mô tả chơi lại 25
Bảng 2.12 Thẻ GameObject 27
Bảng 2.13 Thẻ Ball 27
Bảng 2.14 Thẻ Bomb 28
Bảng 2.15 Thẻ wall 28
Bảng 2.16 Thẻ gate 29
Bảng 2.17 Thẻ storm 29
Bảng 2.18 Thẻ resizeObj 30
Bảng 2.19 Thẻ sound 30
Bảng 2.20 Thẻ GameBall 30
Bảng 2.21 Thẻ BackgroundMusic 31
Bảng 2.22 Thẻ User 31
Bảng 2.23 Thẻ GameConnection 31
Bảng 2.24 Danh sách thực thể 45
Bảng 2.25 Mô hình quan hệ sau chuẩn hóa 45
Bảng 2.26 Chi tiết player 46
Bảng 2.27 Chi tiết player_score 46
Bảng 3.1 Mô tả đăng ký 51
Bảng 3.2 Mô tả đăng nhập 52
Bảng 3.3 Mô tả tải trò chơi 52
Bảng 3.4 Mô tả hướng dẫn chơi 52
Bảng 3.5 Mô tả xem điểm cao 53
Bảng 3.6 Mô tả xem lịch sử đăng nhập 53
Bảng 3.7 Mô tả đăng xuất 53
Bảng 3.8 Mô tả thay đổi thông tin cá nhân 54
Bảng 3.9 Mô tả gửi phản hồi 54
Bảng 3.10 Mô tả xử lý phản hồi 55
Bảng 3.11 Mô tả khóa/mở khóa tài khoản người chơi 55
Bảng 3.12 Mô tả khóa/mở khóa tài khoản nhân viên 55
Bảng 3.13 Thẻ player 56
Bảng 3.14 Thẻ agent 57
Bảng 3.15 Thẻ manager 57
Bảng 3.16 Thẻ feedback 58
Bảng 3.17 Thẻ score 58
Trang 14Bảng 3.18 Thẻ LoginHistory 59
Bảng 3.19 Xác định thực thể 70
Bảng 3.20 Mô hình quan hệ sau chuẩn hóa 71
Bảng 3.21 Chi tiết quan hệ player 71
Bảng 3.22 Chi tiết quan hệ player_score 71
Bảng 3.23 Chi tiết player_history 72
Bảng 3.24 Chi tiết quan hệ feedback 72
Bảng 3.25 Chi tiết quan hệ admin 72
Trang 15Chương 1 Tổng quan ngành công nghiệp trò chơi điện tử
Nội dung chương 1 sẽ giới thiệu khái quát về ngành công nhiệp trò chơi điện tử, lịch sử phát triển và bức tranh về ngành công nghiệp này tại Việt Nam Và phần cuối sẽ giới thiệu mô hình mà đồ án hướng tới
1.1 Ngành công nghiệp trò chơi điện tử
1.1.1 Trò chơi điện tử là gì ?
Trò chơi điện tử (hay video game) là một trò chơi giải trí ứng dụng nền tảng công nghệ điện tử hiện đại, có tính tương tác giữa người chơi và trò chơi Trò chơi điện tử là thành quả phát triển của công nghệ giải trí hiện đại, là sự kết hợp tinh hoa của nhiều mảng như lập trình, đồ họa, âm nhạc…
Trò chơi điện tử giúp cho mọi người thỏa mãn nhu cầu giải trí nhằm giải tỏa những áp lực từ cuộc sống hàng ngày, xua bớt đi những cảm xúc tiêu cực
1.1.2 Ngành công nghiệp trò chơi điện tử
Ngành công nghiệp trò chơi điện tử là ngành kinh tế có liên quan đến phát triển, tiếp thị và kiếm tiền từ trò chơi điện tử Nó là một quy trình chặt chẽ của hàng chục ngành nghề khác nhau Đây đang là một trong những ngành công nghiệp không khói đem lại doanh thu hàng đầu thế giới
Trong thời điểm hiện tại doanh thu khi phát hành một sản phẩm trò chơi mới được ra mắt không thua kém gì những tựa phim điện ảnh Theo Newzoo (một hãng nghiên cứu thị trường), doanh thu toàn cầu thị trường trò chơi điện tử năm 2017 ước tính đạt 108,9 tỉ USD và tiến đến con số 128,5 tỉ USD vào năm 2020 [10] Vào năm
2012 con số này chỉ đạt 70 tỉ USD [10], có thể thấy sự phát triển mạnh mẽ của ngành công nghiệp này bất chấp sự suy thoái của nền kinh tế
Bên cạnh đó, việc các giải đấu thể thao điên tử (e-sport) liên tục được tổ chức với những kinh phí và giải thưởng khổng lồ thu hút hàng triệu người theo dõi, các đài truyền hình tranh nhau trực tiếp Tất cả dần tạo nên ngành công nghiệp trò chơi giải trí lớn mạnh không ngừng
Trang 161.2 Ngành công nhiệp trò chơi điện tử tại Việt Nam
Ở Việt Nam ngành công nghiệp trò chơi điện tử cũng phát triển phát triển với tốc độ rất nhanh Với doanh số lớn và sự tăng trưởng nhanh đã góp phần quan trọng vào sự phát triển của ngành công nghiệp nội dung số Sự phát triển của ngành đã mang về mức doanh thu lớn cho các nhà phát hành trò chơi, góp phần không nhỏ trong trong sự phát triển chung của ngành công nghiệp nội dung số Việt Nam và đồng thời thúc đẩy sự phát triển của hạ tầng viễn thông Việt Nam Các nhà phát hành lớn phải kể đến những công ty lớn như là VNG, Garena, Soha, VTC games… Đây là những công ty nổi tiếng không chỉ trong nước mà cả khu vực lẫn thế giới với doanh thu khổng lồ
Bên cạnh những nhà phát hành thì các công ty phát triển trò chơi cũng phát triển không ngừng cho ra đời những sản phẩm chất lượng sánh ngang với quốc tế Đơn cử là Hiker Games, một công ty đi đầu ở Việt Nam với những trò chơi nổi tiếng thế giới Tiêu biểu là trò chơi “7554” tái hiện lại chiến thắng lịch sử Điện Biên Phủ của dân tộc ta, với đồ họa đẹp mắt cốt truyện hấp dẫn đã tạo nên cơn sốt lúc phát hành
Chính những thành công đó đã tạo động lực cho những người trẻ ấp ủ mang trò chơi của người Việt làm ra nổi tiếng trên toàn thế giới Nguyễn Hà Đông là một trong số đó, với trò chơi Flappy Bird của mình trở thành một hiện tượng lúc bấy giờ
Qua đó em muốn đề tài của mình không chỉ phục vụ mục đích làm đồ án tốt nghiệp mà còn có thể trở thành một sản phẩm để em phát triển trong tương lai gần
Đề tài hướng tới xây dựng một hệ thống hoàn chỉnh có trò chơi, có kênh để quảng
bá cũng như giới thiệu trò chơi, đồng thời cũng giúp thu thập ý kiến đóng góp của người dùng để trò chơi ngày một phát triển
1.3 Kết luận
Việc phát triển của ngành công nghiệp trò chơi điện tử đã tạo động lực không nhỏ để em lựa chọn theo con đường phát triển trò chơi điện tử Với sự yêu thích lập trình và vốn kiến thức học được trên ghế nhà trường, em muốn đồ án này là bước khởi đầu cho sự nghiệp phát triển trò chơi sau này của mình
Trang 17Chương 2 Xây dựng trò chơi bằng ngôn ngữ Java và framework
JavaFX
Phần đầu chương 2 sẽ giới thiệu về tóm tắt ngôn ngữ lập trình Java, framework JavaFX và lý do sử dụng ngôn ngữ này Phần sau của chương sẽ tập trung vào các bước phân tích, thiết kế và xây dựng trò chơi
2.1 Java và framework JavaFX
2.1.1 Java
Java là ngôn ngữ lập trình bậc cao được phát triển đầu tiên bởi James Gosling tại Sun Microsystems (bât giờ là công ty con của Oracle Coporation) và được công bố ngày 23/05/1995 Tuy đã ra đời rất lâu đời (23 năm) nhưng theo thống kê năm 2017 Java vẫn đứng hạng 3 những ngôn ngữ lập trình phổ biến nhất
Hình 2.1 Danh sách 10 ngôn ngữ lập trình phổ biến nhất năm 2017 [9]
Trang 18Dưới đây là những đặc điểm khiến Java nằm trong những lựa chọn hàng đầu của lập trình viên:
Đơn giản: Java giống như C++ lược bỏ đi những đặc trưng phức tạp, không cần thiết Đơn cử như con trỏ, đây là phần gây rất nhiều khó khăn cho những ai học C, C++
Hướng đối tượng: Java là một ngôn ngữ hoàn toàn hướng đối tượng, tất
cả trong Java đều là đối tượng.Giúp người lập trình quản lý phát triển và quản lý code dễ dàng hơn
Độc lập với hệ nền: hay nói cách khác là độc lập với phần cứng và hệ
điều hành Đây là điểm đặc trưng nhất của Java “Write once, run
anywhere” (viết một lần chạy mọi nơi) Các chương trình viết bằng Java
có thể chạy trên hầu hết các hệ nền mà không cần phải thay đổi gì, điều không thể ở các ngôn ngữ lập trình khác
Mạnh mẽ: với yêu cầu chặt chẽ về kiểu dữ liệu giúp hạn chế được các lỗi sinh ra trong lúc ép kiểu tự động, bừa bãi Trong các môi trường lập trình truyền thống các lập trình viên phải tự mình cấp phát bộ nhớ và giải phóng sau khi sử dụng xong Việc này gây nên việc quên giải phóng bộ nhớ đã cấp Với Java, không còn phải bận tâm đến điều này, mọi thứ đều
tự động hoàn toàn Bên cạch đó Java hạn chế các lỗi bằng cách kiểm tra lỗi thời gian biên dịch và kiểm tra runtime
Hỗ trợ lập trình đa luồng: điều này có nghĩa là các lập trình viên có thể viết chương trình chạy nhiều tác vụ đồng thời
Ứng dụng rộng rãi: ứng dụng đồ họa với Java Swing, JavaFx; ứng dụng Android; ứng dụng Web với Spring MVC; ứng dụng mang tính chất giải trí như trò chơi điện tử …
Với mong muốn xây dựng một trò chơi điện tử thì Java là một lựa chon tuyệt vời Với sự hỗ trợ lập trình hướng đối tượng việc xây dựng, quản lý cũng như mở rộng các đối tượng trong trò chơi trở nên dễ dàng, thuận tiện Đặc biệt với đặc trưng độc lập với hệ nền giúp trò chơi có thể tương thích với nhiều hệ nền khác nhau mà không phải mất công thay đổi Đối với các trò chơi việc phải chạy các tác vụ đồng
Trang 19Và một điều quan trọng khi em lựa chọn Java đó là em đã được học một cách đầy bài bản ngôn ngữ này trong môn lập trình nâng cao Với những lý do trên Java
là một lựa chọn tuyệt vời để em xây dựng trò chơi này
2.1.2 JavaFX
JavaFX là một thư viện hỗ trợ lập trình đồ họa của Java JavaFX hỗ trợ nhiều nền tảng như Window, Linux và macOS Với những nâng cấp về mặt giao diện, bổ xung UI Controls, Animations, Chart, Shape, Transformations, CSS, 2D, 3D, Web Browser và Media JavaFx là một sự thay thế cho Swing như là thư viện tiêu chuẩn lập trình giao diện đồ họa cho java Với những đặc điểm trên JavaFx là một lựa chọn hoàn hảo để lập trình giao diện đồ họa cho trò chơi
2.2 Phân tích trò chơi
2.2.1 Ý tưởng
Xuất phát từ một bài tập trong muôn lập trình nâng cao, khi giảng viên yêu cầu viết một chương trình đơn giản có những quả bóng bay ngang qua màn hình và click chuột vào sẽ ăn điểm, khi đó những ý tưởng ban đầu về trò chơi đã được ra đời Trò chơi sẽ xoay quay việc người chơi click vào những quả bóng nhiều màu sắc di chuyển theo nhiều hướng để ăn điểm Bên cạnh những quả bóng sẽ là những vật thể nhằm cản trở người chơi dành chiến thắng Những quả bom khi click vào sẽ
bị mất “mạng” hay những vật thể làm thay đổi quỹ đạo, tốc độ, vị trí, kích thước … của những quả bóng Để thêm sự kịch tính cho trò chơi sẽ có một đồng hồ đếm ngược thời gian Điểm số của người chơi sẽ được lưu lại để so sánh với những người chơi khác nhằm tăng tính cạnh tranh, một điều không thể thiếu với mỗi trò chơi
2.2.2 Xác định rõ yêu cầu
Yêu cầu về chức năng:
Khi click vào quả bóng sẽ có hiệu ứng và ghi được điểm
Các quả bóng, vật cản di chuyển theo nhiều hướng xung quanh màn hình
Bóng sẽ thay đổi quỹ đạo, tốc độ, kích thước … khi va chạm với vật cản
Có đồng hồ đếm ngược thời gian và kết thúc trò chơi khi đồng hồ về 0
Trang 20 Người chơi có thể lựa chọn đăng nhập tài khoản hoặc chơi không đăng nhập Khi người chơi chơi ở chế độ không đăng nhập thì điểm số chỉ được lưu tại máy cá nhân Khi người chơi chơi ở chế độ đăng nhập mà có kết nối internet thì điểm số của người chơi sẽ được lưu tại máy chủ, nếu không có kết nối internet điểm số sẽ lưu lại tại máy người chơi và dữ liệu sẽ được đồng bộ giữa máy chủ và máy cá nhân khi có kết nối internet
Có phần hướng dẫn chơi cho người mới
Người chơi có thể lựa chọn màn chơi mình muốn
Người chơi phải vượt qua từng màn chơi để có thể mở khóa màn tiếp theo
Người chơi có thể tạm dừng trò chơi và tiếp tục khi muốn
Người chơi cũng có thể chọn màn chơi khác khi đang chơi một màn nào đó
Có hiệu ứng âm thanh, có thể bật tắt âm thanh theo ý muốn
Yêu cầu phi chức năng:
Hình ảnh đẹp mắt,các màn chơi đa dạng, đặc sắc không nhàm chán
Âm thanh vui nhộn
Trò chơi chạy mượt mà, không giật, chậm
2.2.3 Mô hình hóa chức năng
Đăng ký tài khoản
Chơi không đăng nhập
Chọn màn chơi để chơi
Tùy chỉnh bật tắt âm thanh
Đừng và tiếp tục trò chơi giữa chừng
Có thể chơi lại màn chơi đó hoặc chọn màn chơi khác để chơi
Trang 21Sơ đồ ca sử dụng:
Đăng nhập Đăng ký
Chọn màn chơi
Hướng dẫn chơi
Hiển thị điểm cao
Bât tắt âm thanh
Người chơi
Chơi
Tạm dừng trò chơi
Chơi lại
Chọn màn chơi khác
<<in clud
e>>
<<include>>
<<in clud e>>
Hình 2.2 Sơ đồ ca sử dụng
Mô tả ca sử dụng:
Bảng 2.1 Mô tả đăng ký Tên Ca sử dụng: Đăng ký
Người sử dụng chính: Người chơi Loại Ca sử dụng: Tổng quan
Mô tả: Người chơi đăng ký một tài khoản
Dòng sự kiện chính
1 Hệ thống hiển thị thông tin cần thiết để tạo tài khoản
2 Người sử dụng nhập thông tin
3 Hệ thống lưu thông tin người chơi
Ngoại lệ:
3.a Thông tin không hợp lệ
3.a.1 Hệ thống yêu cầu nhập lại
Trang 22Bảng 2.2 Mô tả đăng nhập Tên Ca sử dụng: Đăng nhập
Người sử dụng chính: Người chơi Loại Ca sử dụng: Tổng quan
Mô tả: Người chơi đăng nhập tài khoản
Dòng sự kiện chính
1 Hệ thống hiển thông tin cần nhập
2 Người sử dụng nhập thông tin
3 Hệ thống xác nhận thông tin đăng nhập hợp lệ
Ngoại lệ:
3.a Thông tin không chính xác
3.a.1 Hệ thống yêu cầu người chơi nhập lại thông tin
Bảng 2.3 Mô tả chọn màn chơi Tên Ca sử dụng: Chọn màn chơi
Người sử dụng chính: Người chơi Loại Ca sử dụng: Tổng quan
Mô tả:Người chơi chọn màn chơi
Dòng sự kiện chính
4 Hệ thống hiển thị danh sách màn chơi
5 Người sử dụng chọn màn chơi mình muốn
6 Hệ thống nạp màn chơi người chơi đã chọn
Ngoại lệ:
Bảng 2.4 Mô tả hiển thị điểm số cao Tên Ca sử dụng: Hiển thị điểm số cao
Người sử dụng chính: Người chơi Loại Ca sử dụng: Tổng quan
Mô tả:Người chơi xem hướng điểm số của mình
Dòng sự kiện chính
1 Hệ thống hiển thị điểm số cao của người chơi
Ngoại lệ:
Trang 23Bảng 2.5 Mô tả bật âm thanh Tên Ca sử dụng: Bật âm thanh
Người sử dụng chính: Người chơi Loại Ca sử dụng: Tổng quan
Mô tả: Người chơi bật âm thanh
Người sử dụng chính: Người chơi Loại Ca sử dụng: Tổng quan
Mô tả: Người chơi tắt âm thanh
Người sử dụng chính: Người chơi Loại Ca sử dụng: Tổng quan
Mô tả:Người chơi xem hướng dẫn chơi
Dòng sự kiện chính
1 Hệ thống hiển thị hướng dẫn chơi
Ngoại lệ:
Trang 24Bảng 2.8 Mô tả chơi Tên Ca sử dụng: Chơi
Người sử dụng chính: Người chơi Loại Ca sử dụng: Chi tiết
Mô tả: Người chơi trò chơi
Dòng sự kiện chính
1 Người sử dụng chơi trò chơi
Ngoại lệ:
1.a Người sử dụng có thể dừng trò chơi
1.b Người sử dụng có thể chơi lại màn chơi
1.c Người sử dụng có thể chọn màn khác để chơi
Bảng 2.9 Mô tả tạm dừng trò chơi Tên Ca sử dụng: Tạm dừng trò chơi
Người sử dụng chính: Người chơi Loại Ca sử dụng: Chi tiết
Mô tả: Người chơi tạm dừng trò chơi
Trang 25Bảng 2.10 Mô tả tiếp tục trò chơi Tên Ca sử dụng: Tiếp tục trò chơi
Người sử dụng chính: Người chơi Loại Ca sử dụng: Chi tiết
Mô tả:Người chơi tiếp tục trò chơi
Người sử dụng chính: Người chơi Loại Ca sử dụng: Chi tiết
Mô tả:Người chơi chơi lại
Dòng sự kiện chính
1 Người sử dụng chơi lại
2 Hệ thống khởi động lại màn chơi
3 Hệ thống phát lại nhạc từ đầu
Ngoại lệ:
3.a Âm thanh vẫn đang tắt
3.a.1 Hệ thống không làm gì cả
Trang 262.2.3.2 Sơ đồ hoạt động của hệ thống (Activity Diagram)
Tiếp tục trò chơi
Hình 2.3 Sơ đồ hoạt động của hệ thống
Trang 272.2.4 Mô hình cầu trúc
2.2.4.1 Thẻ CRC
Xác định các lớp đối tượng trong hệ thống
Bảng 2.12 Thẻ GameObject
Mô tả : đây là lớp chung cho các đối tượng
Mô tả : đây là những quả bóng mà
người chơi phải click vào để ghi điểm
Quan hệ kế thừa: GameObjects
Quan hệ thu nạp: PlayScreen
Trang 28Bảng 2.14 Thẻ Bomb
Mô tả : đây là những quả bom nếu
người chơi click vào sẽ mất “mạng”
Quan hệ kế thừa: GameObjects
Quan hệ thu nạp: PlayScreen
Bảng 2.15 Thẻ wall
Mô tả : đây là vật cản làm thay đổi
hướng của ball và bomb
Quan hệ kế thừa: GameObjects
Quan hệ thu nạp: PlayScreen
Trang 29Bảng 2.16 Thẻ gate
Mô tả : giống như một đường hầm khi ball
và bomb đi vào đầu này sẽ ra đầu khác
Quan hệ kế thừa: GameObjects
Quan hệ thu nạp: PlayScreen
Bảng 2.17 Thẻ storm
Mô tả : là một cơn bão cuốn bay tất cả
Quan hệ kế thừa: GameObjects
Quan hệ thu nạp: PlayScreen
Trang 30Bảng 2.18 Thẻ resizeObj
Mô tả : thay đổi kích thước của ball, bomb Số ca sử dụng có liên quan : 1
Thuộc tính:
Icon
Kind
Quan hệ:
Quan hệ kế thừa: GameObjects
Quan hệ thu nạp: PlayScreen
Bảng 2.19 Thẻ sound
Mô tả : phát âm thanh mp3 Số ca sử dụng có liên quan : 1
Mô tả : phát âm thanh mp3 Số ca sử dụng có liên quan : 10
Trang 31Bảng 2.21 Thẻ BackgroundMusic
Mô tả : phát nhạc nền cho trò chơi Số ca sử dụng có liên quan : 10
Mô tả : là người chơi trò chơi Số ca sử dụng có liên quan : 10
Mô tả : kết nối trò chơi với cơ sở dữ liệu Số ca sử dụng có liên quan : 4
Trang 322.2.4.2 Sơ đồ lớp
Hình 2.4: Sơ đồ lớp
Trang 332.2.4.3 Sơ đồ đối tượng
Hình 2.5: Sơ đồ đối tượng
Trang 342.2.5 Mô hình hóa hoạt động
yêu cầu tạo mới tài khoản
yêu cầu nhập username,email,password Nhập user, password,email
Kết nối Kết nối thành công
Kiểm tra dữ liệu Gửi dữ liệu
Đăng ký thành công Đăng ký thành công
Người chơi
Hình 2.6 Sơ đồ tuần tự của hoạt động đăng ký
yêu cầu đăng nhập
yêu cầu nhập username,password Nhập user, password
kết nối Kết nối thành công
Kiểm tra dữ liệu Gửi dữ liệu
Đăng nhập thành công Đăng nhập thành công
Người chơi
Hình 2.7 Sơ đồ tuần tự của hoạt động đăng nhập
Trang 35:PlayScreenyêu cầu chơi không cần đăng nhập
hiển thị giao diện chơi
Người chơi
Nạp giao diện chơi
Hình 2.8 Sơ đồ tuần tự của hoạt động chơi không đăng nhập
:PlayScreen yêu cầu xem hướng dẫn chơi
Trang 36:PlayScreenyêu cầu bật/tắt âm thanh
hiển thị giao diện quản lý âm thanh
Hình 2.10 Sơ đồ tuần tự của hoạt động bật/tắt âm thanh
:PlayScreen yêu cầu xem điểm số
Trang 37:PlayScreen yêu cầu chọn màn chơi
Hình 2.12 Sơ đồ tuần tự của hoạt động chọn màn chơi
Trang 38 setLocation(int x, int y): di chuyển vị trí của vật thể trên màn hình
changeIcon(String path): thay đổi hình ảnh của vật thể
detectCollision(GameObject obj): phát hiện sự va chạm giữa 2 vật thể