Bối cảnh và vấn đề nghiên cứu

Đầu năm 2019, các thiết bị sử dụng hệ điều hành Android chiếm 81,7% tổng số điện thoại thông minh trên toàn cầu. Các phân tích thị trường cùng thời điểm chỉ ra rằng chơi game là hành vi phổ biến thứ ba của người sở hữu điện thoại thông minh, chỉ đứng sau việc sử dụng mạng xã hội và các ứng dụng nhắn tin trực tuyến. Bên cạnh đó, nhu cầu học tập và trau dồi vốn từ vựng tiếng Anh ngày càng gia tăng. Xuất phát từ bối cảnh thực tiễn này, đề tài "Xây dựng game học tiếng Anh trên Android" được thực hiện nhằm kết hợp hình thức giải trí tương tác với hoạt động học ngôn ngữ trên thiết bị di động.

Đồ án xác định hệ thống mục tiêu và nhiệm vụ nghiên cứu cụ thể bao gồm:

  1. Tìm hiểu lập trình ứng dụng di động Android bằng ngôn ngữ Java.
  2. Tìm hiểu và tích hợp nền tảng đám mây Firebase Realtime Database cho ứng dụng Android.
  3. Tích hợp Facebook Login SDK để hỗ trợ định danh và xác thực người dùng trên Android.
  4. Nghiên cứu nền tảng Node.js và thư viện Socket.io để xây dựng hệ thống máy chủ, xử lý dữ liệu thời gian thực và thiết lập giao tiếp hai chiều giữa server và client.
  5. Tìm hiểu và ứng dụng thư viện JavaFX để xây dựng phần mềm quản trị (Winform/Desktop) trên hệ điều hành Windows.
  6. Phân tích yêu cầu nghiệp vụ và mô hình hóa hệ thống bằng biểu đồ Use Case.
  7. Thiết kế hệ thống giao diện người dùng cho ứng dụng Android và ứng dụng quản trị JavaFX.
  8. Lập trình hiện thực hóa các chức năng nghiệp vụ tương ứng với từng giao diện.
  9. Thực hiện quy trình kiểm thử chức năng cho cả hai phân hệ ứng dụng.
  10. Tổng hợp nội dung, trình bày báo cáo khóa luận và hoàn thiện các yêu cầu đào tạo của Khoa Công nghệ Thông tin.

Đối tượng nghiên cứu của đề tài là quy trình phân tích, thiết kế, cài đặt và kiểm thử trò chơi học từ vựng tiếng Anh trên nền tảng Android cùng hệ thống quản lý đi kèm. Phạm vi nghiên cứu được triển khai trong thời gian từ ngày 05/03/2019 đến ngày 14/07/2019 tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.


Cơ sở lý thuyết và phương pháp

Đồ án ứng dụng các nền tảng công nghệ, công cụ phần mềm và mô hình lý thuyết sau:

  • Ngôn ngữ lập trình và nền tảng phát triển: Ngôn ngữ Java trên nền Android SDK cho ứng dụng di động; thư viện JavaFX cho phần mềm quản trị trên máy tính; nền tảng Node.js kết hợp thư viện Socket.io xây dựng máy chủ truyền thông thời gian thực; Facebook SDK phục vụ đăng nhập.
  • Hệ thống cơ sở dữ liệu: Cơ sở dữ liệu quan hệ cục bộ SQLite trên thiết bị di động và cơ sở dữ liệu phi quan hệ thời gian thực Firebase Realtime Database trên nền tảng đám mây.
  • Phương pháp nghiên cứu:
    • Phương pháp khảo sát đối chuẩn (Benchmarking): Tiến hành khảo sát thực tế và phân tích ưu - nhược điểm của 4 trò chơi từ vựng tiếng Anh phổ biến trên Google Play Store gồm: Pressed For Words, English Guess the Phrase, Guess Hidden Word và Let’s Guess A Word.
    • Phương pháp phân tích và thiết kế hướng đối tượng (OOAD): Sử dụng biểu đồ Use Case, biểu đồ luồng dữ liệu (Data Flow Diagram - DFD), lược đồ tuần tự (Sequence Diagram), lược đồ thực thể quan hệ (ERD) và biểu đồ lớp (Class Diagram) để mô hình hóa toàn bộ hệ thống.
    • Phương pháp kiểm thử phần mềm: Ứng dụng kỹ thuật kiểm thử hộp đen (Black-box testing) thông qua việc xây dựng các bộ ca kiểm thử (Test cases) cho từng màn hình và từng luồng nghiệp vụ.
  • Nguồn dữ liệu: Bộ cơ sở dữ liệu từ vựng tiếng Anh 6 ký tự, các từ ghép hợp lệ, nghĩa tiếng Việt tương ứng, dữ liệu cấu hình màn chơi, thông tin tài khoản người dùng và bảng xếp hạng điểm số.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc Client - Server đa phân hệ, kết hợp đồng bộ dữ liệu giữa môi trường cục bộ và đám mây:

Phân hệ / Thành phần Công nghệ sử dụng Chức năng và nhiệm vụ chính
Ứng dụng di động (Client Game) Java, Android SDK, Facebook Login SDK Cung cấp giao diện chơi đơn và chơi online; xử lý logic tìm từ vựng 6 ký tự; hiển thị gợi ý, bảng xếp hạng, xem lại đáp án, cài đặt âm thanh, ngôn ngữ và nhận thông báo.
Hệ thống máy chủ (Backend Server) Node.js, Socket.io Tiếp nhận kết nối thời gian thực, quản lý phòng chơi (Room), sảnh chờ (Lobby), cơ chế tạo bàn/vào bàn và đồng bộ tiến độ, điểm số giữa các người chơi trực tuyến.
Phần mềm quản trị (Admin Client) Java, JavaFX (Desktop/Windows) Cho phép quản trị viên đăng nhập, đổi mật khẩu, quản lý tài khoản người dùng, cấu hình thời gian màn game, quản lý nghĩa từ vựng và gửi thông báo hệ thống.
Lưu trữ dữ liệu (Database Layer) SQLite & Firebase Realtime Database SQLite lưu trữ dữ liệu người dùng, cấu hình và từ vựng cục bộ; Firebase quản lý các node dữ liệu phân tán: users, gameData, ranking, notifications, admin.

Mã nguồn ứng dụng di động Android được tổ chức chặt chẽ thành các gói (packages) chuyên biệt:

  • Activities: Chứa các lớp điều khiển màn hình và vòng đời ứng dụng (Main Menu, Play Game, Ranking, Settings, Room, Online Play...).
  • Daos: Đảm nhiệm các tác vụ tương tác, truy vấn và ánh xạ dữ liệu với cơ sở dữ liệu SQLite và Firebase.
  • Models: Định nghĩa các cấu trúc thực thể dữ liệu trong hệ thống.
  • Utils: Cung cấp các phương thức tiện ích dùng chung như xử lý chuỗi, âm thanh, kết nối mạng và chuyển đổi dữ liệu.
  • View: Chứa các thành phần giao diện tùy biến cho màn hình trò chơi.
  • Module chơi online: Quản lý kết nối Socket.io, lắng nghe và phát các sự kiện kết nối, gửi nhận trạng thái bàn chơi.

Nội dung chính theo từng chương

Chương 1: Khảo sát hiện trạng

Chương này khảo sát 4 trò chơi học từ vựng tiếng Anh trên kho ứng dụng Google Play để làm căn cứ xác định yêu cầu phát triển:

Tên trò chơi Nhà cung cấp Ưu điểm ghi nhận Nhược điểm tồn tại
Pressed For Words Words and Maps Giao diện đơn giản, dễ thao tác; có cài đặt tùy chỉnh, lưu điểm và bảng xếp hạng; hiển thị kết quả các từ còn thiếu. Đồ họa chưa được chú trọng; bảng xếp hạng chưa tích hợp trực tiếp trong ứng dụng mà phải mở qua trình duyệt web.
English Guess the Phrase JL Soft Màu sắc hài hòa, thao tác thuận tiện; có hiển thị kết quả sau chơi; độ khó phân chia theo nhiều mức. Không giới hạn số lượng ký tự gây khó đoán; bảng xếp hạng mở qua trình duyệt; thiếu phần hướng dẫn chơi.
Guess Hidden Word Lim Leong Kee Giao diện hài hòa, có hiệu ứng hình ảnh; có hướng dẫn chơi cụ thể; phân chia độ khó theo từng màn. Không có chức năng xem lại đáp án đã đoán; không giới hạn thời gian chơi ở mỗi màn.
Let’s Guess A Word Relis Studio Giao diện vừa mắt, có hướng dẫn chơi và hiệu ứng hình ảnh; phân chia độ khó theo màn. Không có chức năng xem lại đáp án; không giới hạn thời gian; thao tác nối chữ cái để tạo từ gây khó khăn cho người chơi.

Chương 2: Xác định yêu cầu

Chương này xây dựng biểu đồ Use Case tổng thể và biểu đồ Use Case cho phân hệ chơi online, đồng thời lập bảng đặc tả chi tiết 18 nghiệp vụ của User và các nghiệp vụ của Admin:

  • Nghiệp vụ người dùng (User): Đăng nhập Facebook (QĐ_User_Login), Đăng xuất (QĐ_Log_Out), Chơi game (QĐ_Play_Game), Tạm dừng (QĐ_Pause_Game), Xem kết quả (QĐ_View_Result), Xem bảng xếp hạng (QĐ_View_Rank), Xem lại đáp án của mình (QĐ_View_Copy_Answer), Cài đặt ứng dụng (QĐ_Setting), Xem đáp án của người chơi khác (QĐ_View_Answers), Chỉnh sửa hồ sơ cá nhân (QĐ_Setting_Profile), Xem thông báo (QĐ_Setting_Notifications), Cài đặt nhạc nền (QĐ_Setting_Music), Cài đặt âm thanh (QĐ_Setting_Sound), Cài đặt ngôn ngữ (QĐ_Setting_Language), Xem hướng dẫn (QĐ_Setting_HowToPlay), Chơi game online (QĐ_Play_Game_Online), Vào sảnh chờ (QĐ_Join_Room), Tạo bàn (QĐ_Create_Table).
  • Quy tắc và công thức nghiệp vụ:
    • Cơ chế tìm từ: Người dùng sử dụng 6 ký tự cho trước để tạo thành các từ tiếng Anh có nghĩa.
    • Cơ chế trợ giúp: Sử dụng điểm gợi ý (Hint) để mở ký tự chưa biết; mỗi ký tự mở ra tiêu tốn 1 điểm gợi ý.
    • Công thức tính điểm màn chơi đơn: $\text{Điểm} = (\text{Số từ trả lời được} \times 100) + (\text{Thời gian thừa} \times 10)$.
    • Quy tắc phòng chờ trực tuyến: Bàn chơi có từ 2 người trở lên sẽ tự động kích hoạt đếm ngược 10 giây để bắt đầu; thời gian đếm ngược của màn chơi online ngắn hơn chế độ chơi đơn; bảng kết quả sắp xếp điểm số theo thứ tự giảm dần.
    • Quy chuẩn tài khoản: Tên người dùng (Username) không vượt quá 10 ký tự và không được trùng lặp trong hệ thống.

Chương 3: Phân tích yêu cầu và thiết kế cơ sở dữ liệu

Chương này thực hiện mô hình hóa chi tiết luồng dữ liệu và thiết kế cấu trúc dữ liệu:

  • Mô hình hóa nghiệp vụ: Xây dựng hệ thống sơ đồ luồng dữ liệu (DFD) và lược đồ tuần tự (Sequence Diagram) cho toàn bộ các nghiệp vụ người dùng và quản trị viên.
  • Cơ sở dữ liệu SQLite cục bộ: Bao gồm 3 bảng dữ liệu chính:
    • table_user_info: Lưu thông tin định danh người dùng.
    • table_user_config: Lưu trữ các tùy chọn cấu hình âm lượng, ngôn ngữ.
    • table_game_data: Lưu trữ dữ liệu bộ từ vựng của các màn chơi.
  • Cơ sở dữ liệu Firebase Realtime Database: Tổ chức cấu trúc phân cấp dưới dạng cây JSON với các node chính:
    • users: Lưu trữ thông tin cá nhân, ảnh đại diện và điểm số tích lũy của người dùng.
    • gameData: Chứa danh sách các bộ từ 6 ký tự, các đáp án hợp lệ và nghĩa từ tương ứng.
    • ranking: Lưu trữ dữ liệu xếp hạng tổng điểm và xếp hạng chi tiết theo từng màn chơi.
    • notifications: Quản lý danh sách thông báo từ hệ thống.
    • admin: Lưu trữ tài khoản và mật khẩu quản trị.

Chương 4: Thiết kế giao diện và xử lý

Chương này trình bày chi tiết thiết kế và bảng mô tả xử lý cho hơn 25 màn hình chức năng trên cả hai nền tảng:

  • Giao diện Android: Màn hình Menu chính, Màn hình chơi game đơn, Đăng nhập Facebook (các trạng thái kết nối, tiếp tục, khôi phục), Tạm dừng chơi, Xem kết quả, Xem bảng xếp hạng, Xem lại đáp án, Cài đặt hệ thống, Xem danh sách và chi tiết thông báo, Chỉnh sửa hồ sơ cá nhân (đổi avatar bằng mũi tên, đổi tên người dùng), Sảnh chờ trực tuyến, Tạo bàn và tham gia bàn, Mời bạn chơi, Màn hình chơi game online, Xem kết quả đấu mạng và Tra cứu nghĩa từ vựng.
  • Giao diện JavaFX Admin: Màn hình đăng nhập quản trị, Màn hình đổi mật khẩu, Màn hình quản lý người dùng (hỗ trợ lọc dữ liệu theo khoảng số, khoảng ngày, chọn cột hiển thị và xóa tài khoản), Màn hình quản trị dữ liệu game (tìm kiếm, sửa thời gian màn chơi, xóa màn game, chỉnh sửa nghĩa từ vựng) và Màn hình quản lý thông báo (thêm, xóa, tìm kiếm thông báo).

Chương 5: Cài đặt

Chương này mô tả chi tiết môi trường cài đặt phần mềm và thiết kế kiến trúc lớp (Class Diagram):

  • Hiện thực hóa công nghệ: Mô tả chi tiết việc áp dụng ngôn ngữ Java trên Android Studio, tích hợp Firebase SDK, cấu hình Node.js server với Socket.io và xây dựng giao diện quản trị bằng JavaFX.
  • Sơ đồ lớp: Đặc tả chi tiết các thuộc tính và phương thức trong ứng dụng quản trị JavaFX cùng sơ đồ gói và sơ đồ lớp chi tiết của ứng dụng Android theo từng tầng: Activities (Bảng 5.3 & 5.4), Daos (Bảng 5.5 & 5.6), Models (Bảng 5.7 & 5.8), Utils (Bảng 5.9 & 5.10), View (Bảng 5.11 & 5.12) và Module chơi online (Bảng 5.13 & Hình 5.8).

Chương 6: Kiểm thử

Chương này thiết lập các bộ ca kiểm thử chức năng (Test cases) nhằm xác minh tính đúng đắn của phần mềm:

  • Kiểm thử ứng dụng Game Android: Thực hiện các kịch bản kiểm thử giao diện Main Menu (Bảng 6.1), màn hình Chơi game (Bảng 6.2), màn hình Tạm dừng (Bảng 6.3), màn hình Cài đặt (Bảng 6.4), màn hình Sảnh chờ (Bảng 6.5) và màn hình Chơi game online (Bảng 6.6).
  • Kiểm thử ứng dụng Winform Admin: Thực hiện các bộ kiểm thử cho chức năng Đăng nhập (Bảng 6.7), Đổi mật khẩu (Bảng 6.8), Quản lý người dùng (Bảng 6.9), Quản lý dữ liệu game (Bảng 6.10) và Quản lý thông báo (Bảng 6.11).

Kết quả và đóng góp

Đồ án đã đạt được các kết quả kỹ thuật và đóng góp thực tiễn cụ thể:

  • Xây dựng hoàn chỉnh trò chơi học tiếng Anh trên hệ điều hành Android, cung cấp đầy đủ hai chế độ chơi đơn và chơi trực tuyến thời gian thực thông qua bộ từ 6 ký tự.
  • Xây dựng thành công ứng dụng quản trị desktop bằng JavaFX, cung cấp công cụ trực quan để quản lý cơ sở dữ liệu người dùng, tùy biến tham số thời gian màn chơi, chỉnh sửa nghĩa từ vựng và gửi thông báo hệ thống.
  • Thiết lập hệ thống máy chủ Node.js và Socket.io hoạt động ổn định, xử lý giao tiếp hai chiều phục vụ phòng chờ và đồng bộ dữ liệu trận đấu thời gian thực.
  • Giải quyết được các điểm hạn chế của những ứng dụng khảo sát trước đó:
    • Tích hợp bảng xếp hạng và tính năng xem lại đáp án trực tiếp trong ứng dụng mà không cần thông qua trình duyệt web ngoài.
    • Bổ sung cơ chế giới hạn thời gian màn chơi và tích hợp tính năng tra cứu nghĩa từ vựng của các từ đoán được.
    • Tích hợp cơ chế xác thực qua Facebook Login SDK giúp lưu trữ thành tích và đồng bộ thông tin cá nhân.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận ghi nhận các hạn chế kỹ thuật hiện tại và vạch ra định hướng phát triển:

  • Hạn chế:
    • Cơ sở dữ liệu trò chơi chủ yếu tập trung vào định dạng các từ tiếng Anh có độ dài 6 ký tự.
    • Trải nghiệm chơi game trực tuyến phụ thuộc nhiều vào độ ổn định của kết nối mạng và năng lực xử lý của máy chủ trung gian.
    • Thiết kế giao diện và hiệu ứng hình ảnh ở mức độ cơ bản.
    • Ứng dụng chỉ mới phát triển trên nền tảng Android, chưa có phiên bản dành cho hệ điều hành iOS.
  • Hướng phát triển:
    • Bổ sung các bộ từ vựng đa dạng với độ dài ký tự linh hoạt hơn (4, 5, 7, 8 ký tự) để tăng tính phong phú.
    • Phát triển thêm các chế độ chơi mới như thi đấu giải đấu (Tournament), tính điểm theo chuỗi thắng.
    • Tối ưu hóa giao diện đồ họa, bổ sung các hiệu ứng âm thanh và hoạt họa nâng cao.
    • Mở rộng và đóng gói ứng dụng cho nền tảng iOS.

Giá trị tham khảo

Báo cáo khóa luận là tài liệu tham khảo hữu ích cho sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và các nhà phát triển ứng dụng di động:

  • Quy trình phân tích thiết kế phần mềm: Cung cấp tài liệu mẫu mực về việc xây dựng hệ thống biểu đồ DFD, Sequence Diagram, Use Case và Class Diagram phân tầng rõ ràng từ lý thuyết đến thực thi mã nguồn.
  • Kỹ thuật kết hợp đa cơ sở dữ liệu: Tài liệu tham khảo thực tế về việc phối hợp giữa cơ sở dữ liệu quan hệ cục bộ (SQLite) trên thiết bị di động và cơ sở dữ liệu NoSQL đám mây thời gian thực (Firebase Realtime Database).
  • Lập trình mạng thời gian thực: Cung cấp mô hình kết nối và giao tiếp hai chiều giữa ứng dụng di động Android với máy chủ Node.js thông qua Socket.io.
  • Tài liệu kiểm thử phần mềm: Hệ thống bảng ca kiểm thử (Test cases) chi tiết cho cả ứng dụng di động và phần mềm máy tính.

Câu hỏi thường gặp

1. Công thức tính điểm trong chế độ chơi đơn của game được quy định như thế nào?
Điểm số của người chơi sau khi hoàn thành hoặc kết thúc thời gian của màn chơi đơn được tính toán tự động theo công thức quy định: $\text{Điểm} = (\text{Số từ trả lời được} \times 100) + (\text{Thời gian thừa} \times 10)$.

2. Cơ chế bắt đầu trận đấu trong chế độ chơi game online hoạt động như thế nào?
Trong phòng chờ trực tuyến, khi có từ 2 người chơi trở lên tham gia vào bàn và không có thay đổi trạng thái nào phát sinh, hệ thống sẽ tự động kích hoạt đếm ngược 10 giây trước khi chính thức bắt đầu màn chơi.

3. Dữ liệu của hệ thống được lưu trữ và phân chia như thế nào giữa SQLite và Firebase?
SQLite được cài đặt cục bộ trên thiết bị di động để lưu trữ cấu hình người dùng (table_user_config), thông tin cá nhân cơ bản (table_user_info) và dữ liệu màn chơi tạm thời (table_game_data). Trong khi đó, Firebase Realtime Database quản lý tập trung trên đám mây các node: users (danh sách người dùng), gameData (dữ liệu bộ từ và đáp án), ranking (bảng xếp hạng), notifications (thông báo) và admin (tài khoản quản trị).

4. Người dùng có thể tùy chỉnh những thông tin nào trong màn hình quản lý hồ sơ cá nhân (Profile)?
Tại màn hình Profile, người dùng có thể thay đổi ảnh đại diện bằng cách nhấn vào các nút mũi tên trái/phải đặt ở hai bên ảnh, đồng thời có thể nhập lại tên người dùng (với điều kiện độ dài không quá 10 ký tự và không trùng lặp với tên của người dùng khác trên hệ thống).

5. Ứng dụng Winform Admin bằng JavaFX cung cấp các phân hệ chức năng nào cho người quản trị?
Ứng dụng Winform cung cấp các chức năng gồm: Đăng nhập và đổi mật khẩu quản trị; Quản lý người dùng (tìm kiếm theo khoảng số, khoảng ngày, lọc cột và xóa tài khoản); Quản lý dữ liệu game (tìm kiếm màn chơi, sửa đổi thời gian giới hạn, xóa màn game, thêm/sửa/xóa nghĩa từ vựng); Quản lý thông báo (thêm, xóa và tìm kiếm thông báo gửi tới người dùng).


Kết luận

Khóa luận tốt nghiệp "Xây dựng game học tiếng Anh trên Android" của sinh viên Nguyễn Mạnh Cường và Nguyễn Phi Khánh đã hoàn thành toàn diện các mục tiêu đặt ra trong việc xây dựng một hệ sinh thái học tập kết hợp giải trí trên di động. Đồ án kết hợp thành công công nghệ lập trình Android (Java), hệ thống máy chủ thời gian thực Node.js/Socket.io, nền tảng dữ liệu Firebase và ứng dụng quản trị JavaFX. Các kết quả nghiên cứu, tài liệu thiết kế hệ thống và bộ ca kiểm thử trong văn bản có giá trị thực tiễn cao đối với việc nghiên cứu và phát triển phần mềm di động.