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

Trò chơi truyền hình "Ai là triệu phú" phát sóng trên kênh VTV3 vào tối thứ Ba hàng tuần là một chương trình giải trí trí tuệ quen thuộc đối với khán giả Việt Nam. Tuy nhiên, cơ hội để người chơi trực tiếp tham gia ngồi trên "ghế nóng" tại trường quay S9 của Đài Truyền hình Việt Nam là rất hạn chế đối với phần lớn công chúng. Việc xây dựng một phần mềm mô phỏng trò chơi này trên nền tảng máy tính đáp ứng nhu cầu trải nghiệm, vừa chơi vừa học, hỗ trợ học sinh - sinh viên ôn luyện kiến thức tổng hợp từ nhiều lĩnh vực trong đời sống.

Trong lĩnh vực Công nghệ thông tin, ngôn ngữ lập trình Java đóng vai trò quan trọng nhờ tính năng độc lập nền tảng ("Write Once, Run Anywhere" - WORA) và khả năng ứng dụng đa dạng từ xử lý văn bản, thuật toán số học đến phát triển trò chơi. Đặc biệt, thư viện đồ họa Swing trong Java cung cấp hệ thống công cụ hỗ trợ xây dựng giao diện người dùng (GUI) với các cửa sổ, bố cục (layout) và các thành phần điều khiển tương tác (controls). Đề tài "Xây dựng phần mềm trò chơi Ai là triệu Phú" được thực hiện nhằm ứng dụng bộ công cụ Swing và nguyên lý lập trình hướng đối tượng để thiết kế một ứng dụng hoàn chỉnh.

Mục tiêu nghiên cứu của đề tài bao gồm bốn nội dung:

  1. Hệ thống hóa các kiến thức cơ sở làm nền tảng cho việc thực hiện đề tài.
  2. Trình bày tóm tắt một số đề tài liên quan đã được thực hiện trước đây dưới các hình thức khác nhau.
  3. Vận dụng được tính chất của Lập trình hướng đối tượng.
  4. Ứng dụng của Swing vào việc xây dựng trò chơi Ai là triệu phú.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Xây dựng phần mềm trò chơi Ai là triệu Phú.
  • Phạm vi nghiên cứu: Phạm vi xoay quanh các công ty game, đảm bảo đầy đủ các chức năng chính của phần mềm và khai thác các chức năng mới có liên quan đến việc xây dựng phần mềm nhằm giúp cho phần mềm thêm phần tiện ích.

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

Đề tài vận dụng các cơ sở lý thuyết và nền tảng kỹ thuật trong công nghệ phần mềm:

  • Khái niệm trò chơi điện tử và quy tắc trò chơi: Trò chơi sử dụng thiết bị điện tử tạo hệ thống tương tác. Cấu trúc trò chơi gồm 15 câu hỏi trắc nghiệm 4 lựa chọn (A, B, C, D) với độ khó tăng dần, giới hạn thời gian trả lời 60 giây cho mỗi câu. Trò chơi tích hợp 2 quyền trợ giúp chính trong quá trình vận hành gồm: Trợ giúp 50/50 (loại bỏ 2 phương án sai) và Hỏi ý kiến khán giả (mô phỏng phản hồi của khán giả với các khả năng: không có câu trả lời, trả lời sai hoặc trả lời đúng).
  • Ngôn ngữ lập trình Java: Ngôn ngữ hướng đối tượng thuần túy do James Gosling khởi xướng tại Sun Microsystems (1991, tên ban đầu là Oak, phát hành năm 1994 và Oracle mua lại năm 2010). Cơ chế hoạt động kết hợp giữa biên dịch mã nguồn thành bytecode và sử dụng Máy ảo Java (Java Virtual Machine - JVM) để thông dịch thành mã máy (native code), loại bỏ các thao tác con trỏ, overload, goto, struct, union nhằm tăng tính an toàn.
  • Thư viện Java Swing GUI: Bộ công cụ xây dựng giao diện đồ họa người dùng với các thành phần cơ bản như Button, Label, Windows hỗ trợ tương tác.
  • Hệ quản trị cơ sở dữ liệu Microsoft SQL Server: Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS), sử dụng ngôn ngữ truy vấn Transact-SQL (T-SQL), hỗ trợ tích hợp LinQ (Language Integrated Query) và Reporting Service.
  • Công nghệ kết nối Java Database Connectivity (JDBC): Giao diện lập trình ứng dụng (API) chuẩn gồm hai gói java.sql và javax.sql. Các thành phần cốt lõi được sử dụng bao gồm: DriverManager (quản lý danh sách database drivers), Driver (interface xử lý giao tiếp), Connection (quản lý phiên kết nối), Statement và PreparedStatement (thực thi truy vấn SQL có tham số), ResultSet (chứa tập kết quả bản ghi), và SQLException (xử lý ngoại lệ lỗi cơ sở dữ liệu).

Phương pháp nghiên cứu được tác giả áp dụng bao gồm:

  • Phương pháp nghiên cứu tài liệu: Tham khảo, nghiên cứu tài liệu từ các website, báo chí, sách báo chuyên ngành và các báo cáo đề tài liên quan nhằm nắm bắt thực trạng.
  • Phương pháp nghiên cứu thực tiễn: Phương pháp quan sát quá trình xây dựng trò chơi tại các công ty game; Phương pháp tổng hợp và phân tích số lượng thông qua việc thu thập thông tin từ doanh nghiệp, thống kê, tổng kết số liệu và phân tích kết quả.
  • Phương tiện nghiên cứu: Cơ sở lý thuyết về phân tích và thiết kế hệ thống thông tin, môi trường phát triển tích hợp Apache NetBeans IDE (phiên bản 12.3) và Microsoft SQL Server qua cổng kết nối chuẩn 1433.

Thiết kế và triển khai

Hệ thống được thiết kế theo cấu trúc module phân rã, kết hợp mô hình hóa cơ sở dữ liệu quan hệ và hiện thực giao diện đồ họa.

1. Kiến trúc chức năng và xử lý logic

Hệ thống được phân rã thành hai nhóm module chính:

  • Module Thao tác với Cơ sở dữ liệu: Thực hiện chức năng ghi danh và quản lý điểm số. Khi người chơi kết thúc lượt chơi, hệ thống tính tổng điểm (Score). Nếu tên người chơi đã tồn tại, hệ thống cập nhật nếu điểm mới cao hơn; nếu chưa tồn tại, hệ thống tạo bản ghi mới. Dữ liệu điểm số được sắp xếp theo thứ tự giảm dần để xuất danh sách bảng xếp hạng.
  • Module Chơi và Xử lý Giao diện: Cung cấp chức năng chọn đáp án (thao tác bằng chuột trái hoặc phím Tab); chức năng kiểm tra tính chính xác của câu trả lời bằng cách so sánh lựa chọn của người chơi với dữ liệu đáp án trong CSDL; chức năng xử lý 2 quyền trợ giúp sử dụng thuật toán sinh số ngẫu nhiên random() (loại bỏ ngẫu nhiên 2 trong 3 đáp án sai đối với quyền 50/50; xuất 1 trong 3 trạng thái phản hồi đối với quyền Hỏi ý kiến khán giả).

2. Thiết kế Cơ sở dữ liệu

Cơ sở dữ liệu được thiết kế ở mức ý niệm và mức logic gồm 4 thực thể chính:

Tên bảng Tên trường Kiểu dữ liệu Khóa chính (PK) Diễn giải
Question Question_ID Char(5) Có Mã câu hỏi
Title Nvarchar(150) Nội dung câu hỏi
A Nvarchar(50) Đáp án A
B Nvarchar(50) Đáp án B
C Nvarchar(50) Đáp án C
D Nvarchar(50) Đáp án D
lv int Mức độ khó của câu hỏi
Answer Answer_ID Char(5) Có Mã câu trả lời
Question_ID Char(5) Mã câu hỏi
Answer Nvarchar(50) Nội dung đáp án đúng
Player Player_ID Char(5) Có Mã người chơi
Name Nvarchar(40) Tên người chơi
Result Answer_ID Char(5) Có Mã câu trả lời
Question_ID Char(5) Có Mã câu hỏi
Player_ID Char(5) Có Mã người chơi
Player_Choice Nvarchar(50) Đáp án do người chơi lựa chọn

3. Các ràng buộc toàn vẹn của hệ thống

Các quy tắc toàn vẹn dữ liệu được xác định cụ thể thông qua bảng tầm ảnh hưởng:

Mã ràng buộc Loại ràng buộc Nội dung ràng buộc Bối cảnh Thêm Xóa Sửa
R1 Liên bộ Mỗi câu hỏi có một mã câu hỏi là duy nhất Question + - +
R2 Liên bộ Mỗi câu trả lời có một mã câu trả lời là duy nhất Answer + - +
R3 Liên bộ Mỗi người chơi có một mã người chơi là duy nhất Player + - +
R4 Liên thuộc tính Mỗi câu hỏi phải có một câu trả lời tương ứng Question
Answer
-
+
+
-
+
+

(Ghi chú: Dấu + biểu thị thao tác có nguy cơ vi phạm ràng buộc cần kiểm tra; dấu - biểu thị thao tác không ảnh hưởng đến ràng buộc).

4. Triển khai giao diện và kiểm thử luồng chơi

Hệ thống được lập trình trên NetBeans IDE 12.3 kết nối SQL Server (cổng 1433) qua thư viện JDBC Driver:

  • Form giao diện mở đầu: Chứa nút Play (chuyển sang màn hình chơi chính), nút Exit (hộp thoại xác nhận OK để thoát hoặc Cancel để ở lại màn hình), nút Bảng xếp hạng (hiển thị danh sách người chơi, số câu đúng và mức tiền thưởng sắp xếp giảm dần).
  • Quy trình ghi danh: Người chơi có 10 giây để nhập tên trước khi bắt đầu. Nếu chưa nhập tên mà bấm Play, hệ thống đưa ra cảnh báo; nếu hết 10 giây chưa nhập tên, chương trình tự động quay về giao diện mở đầu.
  • Quy trình trả lời câu hỏi và phân cấp mức thưởng: Hệ thống cấu hình 6 bộ câu hỏi theo độ khó và mức thưởng tương ứng:
    • Bộ 1: Mức thưởng từ 100.000
    • Bộ 2: Mức thưởng từ 1.000
    • Bộ 3: Mức thưởng từ 6.000
    • Bộ 4: Mức thưởng từ 25.0000
    • Bộ 5: Mức thưởng từ 50.000
    • Bộ 6: Mức thưởng cao nhất 120
  • Xử lý tương tác: Rê chuột vào đáp án sẽ đổi màu sang xanh lá. Trả lời đúng sẽ kích hoạt âm thanh thông báo xác nhận, chuyển câu hỏi tiếp theo và tăng nấc thang tiền thưởng. Trả lời sai sẽ kích hoạt âm thanh báo sai, hiển thị đáp án đúng, công bố tiền thưởng đạt được và dừng cuộc chơi. Hết thời gian 60 giây, hệ thống báo "Hết giờ" và quay về Menu mở đầu. Nếu hoàn thành chính xác 15 câu hỏi, người chơi chiến thắng với mức thưởng cao nhất (120).

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

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

Chương 1 trình bày bối cảnh ra đời của trò chơi "Ai là triệu phú" từ chương trình truyền hình VTV3, phân tích lý do chọn đề tài dựa trên sự phát triển của công nghệ thông tin và tính ưu việt của Java Swing GUI. Tác giả xác định 4 mục tiêu nghiên cứu, xác lập đối tượng nghiên cứu là phần mềm trò chơi, phạm vi nghiên cứu xoay quanh quy trình phát triển game, nêu rõ các phương pháp nghiên cứu tài liệu và thực tiễn, đồng thời đưa ra dự kiến kết quả đạt được về mặt giao diện và tính năng.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Chương 2 tổng hợp các khái niệm về trò chơi điện tử, phân tích giá trị giải trí và bổ sung tri thức xã hội. Tác giả giới thiệu luật chơi, quy định 15 câu hỏi, 2 quyền trợ giúp và giới hạn 60 giây suy nghĩ. Nội dung chương đi sâu vào lý thuyết ngôn ngữ lập trình Java (lập trình hướng đối tượng, kiến trúc độc lập phần cứng/hệ điều hành, cơ chế biên dịch và thông dịch qua JVM), môi trường phát triển NetBeans IDE phiên bản 12.3, hệ quản trị cơ sở dữ liệu Microsoft SQL Server (ngôn ngữ T-SQL, LinQ, dịch vụ báo cáo Reporting Service), và hướng dẫn cấu hình kết nối CSDL bằng JDBC qua cổng 1433 với các interface/class chuyên dụng.

CHƯƠNG 3: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

Chương 3 tập trung vào thiết kế hệ thống phần mềm. Tác giả trình bày lược đồ phân rã các model, phân tích chi tiết Module Thao tác với CSDL (chức năng ghi danh, lưu điểm, cập nhật kỷ lục, sắp xếp bảng xếp hạng) và Module Chơi (chọn đáp án qua phím Tab/chuột, kiểm tra logic trả lời đúng/sai, thuật toán ngẫu nhiên cho các quyền trợ giúp 50/50 và Hỏi ý kiến khán giả). Chương này mô hình hóa CSDL ở mức ý niệm với 4 bảng dữ liệu (Question, Answer, Player, Result), thiết lập 4 ràng buộc toàn vẹn (R1 đến R4) kèm bảng tầm ảnh hưởng, đồng thời trình bày mô hình thực thể kết hợp (ERD) và lược đồ cơ sở dữ liệu quan hệ.

CHƯƠNG 4: HIỆN THỰC CHƯƠNG TRÌNH

Chương 4 mô tả kết quả xây dựng ứng dụng thực tế thông qua các biểu mẫu giao diện người dùng (GUI) phát triển bằng Java Swing. Tác giả thuyết minh chi tiết các thành phần: Form giao diện mở đầu (xử lý sự kiện nút Exit, hiển thị Bảng xếp hạng, kích hoạt nút Play); Form giao diện chính (giao diện câu hỏi, 4 đáp án, đồng hồ đếm ngược 60s, thang thưởng, nút quay lại Menu); cơ chế ghi danh với giới hạn 10 giây; quy trình vượt qua 6 bộ câu hỏi với độ khó tăng dần; hiệu ứng đổi màu giao diện và tích hợp âm thanh dẫn chương trình của MC Lại Văn Sâm; xử lý kết thúc khi trả lời sai, hết giờ hoặc chiến thắng mốc 15 câu; và cách thức vận hành trực quan của 2 quyền trợ giúp 50/50 và Hỏi ý kiến khán giả.

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

Đồ án đạt được các kết quả cụ thể theo đúng nội dung thuyết minh:

  • Xây dựng thành công ứng dụng trò chơi máy tính "Ai là triệu phú" trên nền tảng Java Swing kết nối Microsoft SQL Server qua JDBC.
  • Hiện thực hóa hệ thống câu hỏi gồm 15 câu trắc nghiệm ngẫu nhiên phân chia thành 6 cấp độ mức thưởng (từ 100.000 đến mốc cao nhất 120).
  • Thiết kế và lập trình hoàn chỉnh 2 quyền trợ giúp: Trợ giúp 50/50 (loại bỏ ngẫu nhiên 2 đáp án sai) và Hỏi ý kiến khán giả (trả về 3 trạng thái: không biết, chọn sai, chọn đúng).
  • Tích hợp hệ thống đồng hồ đếm ngược (10 giây cho thao tác ghi danh, 60 giây cho mỗi câu hỏi) và hệ thống âm thanh mô phỏng giọng dẫn chương trình của MC Lại Văn Sâm.
  • Thiết lập bảng xếp hạng ghi nhận, so sánh và sắp xếp điểm số của người chơi theo thứ tự giảm dần.

Đóng góp của đồ án:

  • Ứng dụng lý thuyết lập trình hướng đối tượng và công nghệ Java Swing vào việc giải quyết bài toán xây dựng phần mềm tương tác đồ họa thực tế.
  • Chuẩn hóa quy trình phân tích thiết kế hệ thống thông tin, xây dựng mô hình thực thể kết hợp (ERD), thiết kế bảng dữ liệu và xác lập hệ thống ràng buộc toàn vẹn cho ứng dụng trò chơi giải đố.
  • Cung cấp một ứng dụng mô phỏng có tính thực tiễn, phục vụ nhu cầu vừa học vừa chơi cho học sinh - sinh viên ôn luyện kiến thức đời sống xã hội.

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

Hạn chế của đề tài:

  • Tốc độ thực thi của chương trình trên nền tảng NetBeans IDE và Java có độ trễ nhất định so với các ngôn ngữ biên dịch trực tiếp.
  • Hệ quản trị CSDL Microsoft SQL Server chiếm dụng nhiều tài nguyên máy tính và có cấu trúc phức tạp đối với một ứng dụng trò chơi nhỏ gọn.
  • Ứng dụng chỉ mới hiện thực được 2 quyền trợ giúp (50/50 và Hỏi ý kiến khán giả), chưa tích hợp quyền "Gọi điện thoại cho người thân" như phiên bản truyền hình thực tế được nêu ở phần giới thiệu tổng quan.
  • Phạm vi kết nối cơ sở dữ liệu hiện tại vận hành theo mô hình máy cục bộ qua cổng 1433, chưa mở rộng kết nối mạng phân tán.

Hướng nghiên cứu và phát triển tiếp:

  • Bổ sung đầy đủ các quyền trợ giúp còn lại (quyền gọi điện thoại cho người thân, quyền dừng cuộc chơi bảo toàn điểm thưởng linh hoạt tại mọi mốc).
  • Tối ưu hóa hiệu năng truy vấn dữ liệu và giảm thiểu tài nguyên chiếm dụng của hệ thống cơ sở dữ liệu.
  • Mở rộng ngân hàng câu hỏi đa dạng hơn trên nhiều lĩnh vực và nâng cấp giao diện người dùng hỗ trợ đa nền tảng thiết bị.

Giá trị tham khảo

Đồ án là tài liệu học thuật thực hành phù hợp cho:

  • Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm: Tham khảo làm đồ án môn học Lập trình Java, Lập trình hướng đối tượng hoặc Phát triển ứng dụng giao diện Desktop với Java Swing.
  • Người nghiên cứu về Phân tích thiết kế hệ thống và Cơ sở dữ liệu: Học tập phương pháp thiết kế mô hình dữ liệu quan hệ, xác định khóa, kiểu dữ liệu và phương pháp biểu diễn bảng tầm ảnh hưởng cho các ràng buộc toàn vẹn dữ liệu (Chương 3).
  • Lập trình viên mới bắt đầu: Tham khảo cách thức cấu hình môi trường NetBeans IDE, tích hợp thư viện JDBC Driver để giao tiếp với hệ quản trị CSDL SQL Server qua cổng TCP/IP (Chương 2 và Chương 4).

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

1. Đồ án hiện thực những quyền trợ giúp nào cho người chơi và nguyên lý xử lý ra sao?
Trong quá trình chơi, người chơi được cung cấp 2 quyền trợ giúp (mỗi quyền dùng tối đa 1 lần):

  • Trợ giúp 50/50: Sử dụng hàm random() để chọn và ẩn đi ngẫu nhiên 2 trong số 3 đáp án sai.
  • Hỏi ý kiến khán giả: Sử dụng hàm random() để mô phỏng ý kiến của một khán giả trợ giúp theo 3 trường hợp: không có đáp án ("Xin lỗi!"), đưa ra đáp án sai, hoặc đưa ra đáp án đúng. Sau khi sử dụng, biểu tượng của quyền trợ giúp tương ứng sẽ biến mất khỏi màn hình.

2. Cơ sở dữ liệu của phần mềm gồm những bảng nào và các ràng buộc toàn vẹn được thiết lập ra sao?
Cơ sở dữ liệu gồm 4 bảng: Question (chứa câu hỏi, 4 phương án, độ khó lv), Answer (chứa mã câu hỏi và đáp án đúng), Player (lưu mã và tên người chơi), Result (lưu thông tin lựa chọn của người chơi). Hệ thống thiết lập 4 ràng buộc toàn vẹn: R1 (mã câu hỏi là duy nhất), R2 (mã câu trả lời là duy nhất), R3 (mã người chơi là duy nhất) và R4 (mỗi câu hỏi phải có một câu trả lời tương ứng).

3. Cơ chế giới hạn thời gian trong trò chơi được quy định như thế nào?
Hệ thống áp dụng hai mốc thời gian:

  • Thời gian ghi danh: Người chơi có 10 giây để nhập tên trên form giao diện. Nếu hết 10 giây mà chưa hoàn tất nhập tên, hệ thống tự động đưa người chơi trở về Form giao diện mở đầu.
  • Thời gian trả lời câu hỏi: Người chơi có tối đa 60 giây để suy nghĩ và chọn đáp án cho mỗi câu hỏi. Nếu hết 60 giây chưa chọn đáp án, hệ thống xuất thông báo "Hết giờ" và kết thúc lượt chơi.

4. Thang câu hỏi và giải thưởng trong phần mềm được phân cấp theo những mức nào?
Hệ thống gồm 15 câu hỏi được chia thành 6 bộ câu hỏi theo mức độ khó tăng dần tương ứng với các nấc giải thưởng:

  • Bộ 1: Mức thưởng từ 100.000
  • Bộ 2: Mức thưởng từ 1.000
  • Bộ 3: Mức thưởng từ 6.000
  • Bộ 4: Mức thưởng từ 25.0000
  • Bộ 5: Mức thưởng từ 50.000
  • Bộ 6: Mức thưởng cao nhất là 120 khi hoàn thành chính xác câu hỏi số 15.

5. Ứng dụng kết nối với cơ sở dữ liệu bằng phương thức và công cụ nào?
Ứng dụng sử dụng API chuẩn JDBC (với các gói java.sql và javax.sql), sử dụng DriverManager để nạp Driver kết nối tới hệ quản trị Microsoft SQL Server qua cổng mạng 1433, sử dụng PreparedStatement và Statement để truyền các truy vấn SQL, và dùng ResultSet để nhận dữ liệu trả về phục vụ việc tải câu hỏi và cập nhật điểm số người chơi.

Kết luận

Đồ án môn học "Xây dựng phần mềm trò chơi Ai là triệu Phú" của sinh viên Bùi Kiều Trang và Lương Thúy Hòa (Khoa Công nghệ Thông tin, Trường Đại học Tài chính - Marketing) đã hoàn thành việc thiết kế và lập trình một ứng dụng trò chơi giải đố hoàn chỉnh trên nền tảng Java Swing và SQL Server. Đề tài đã hệ thống hóa đầy đủ cơ sở lý thuyết về lập trình hướng đối tượng, kỹ thuật kết nối dữ liệu qua JDBC và các bước phân tích thiết kế hệ thống từ mức ý niệm, ràng buộc toàn vẹn đến hiện thực hóa giao diện người dùng. Mặc dù còn một số hạn chế về phạm vi trợ giúp và tối ưu tài nguyên, sản phẩm đã đáp ứng tốt các yêu cầu chức năng mô phỏng gameshow, mang lại giá trị tham khảo học thuật thiết thực cho sinh viên ngành Công nghệ thông tin trong các học phần lập trình ứng dụng.