Giới thiệu dự án

Trong bối cảnh chuyển đổi số giáo dục, việc đổi mới phương pháp giảng dạy Tin học đóng vai trò then chốt nhằm phát huy tính chủ động, tư duy logic và khả năng sáng tạo của người học. Theo các khảo sát tâm lý - sư phạm hiện đại, phương pháp giáo dục truyền thống đối với môn Lập trình thường gặp rào cản lớn: hơn 65% học sinh bước đầu tiếp cận cảm thấy khô khan, trừu tượng và khó ghi nhớ các cấu trúc cú pháp cũng như giải thuật logic. Trò chơi giáo dục (Educational Game / Serious Game) kết hợp lý thuyết trò chơi (Game Theory) đã chứng minh hiệu quả vượt trội trong việc nâng cao khả năng tập trung, tư duy giải quyết vấn đề và giúp người học tiếp thu kiến thức một cách tự nhiên.

Đề tài "Xây dựng phần mềm trò chơi hỗ trợ học lập trình Pascal" (Tên thương mại/sản phẩm: Secret Garden) được nghiên cứu và phát triển bởi sinh viên Khoa Công nghệ Thông tin – Trường Đại học Sư phạm TP.HCM (Chuyên ngành Sư phạm Tin học). Dự án giải quyết trực tiếp bài toán thiếu hụt các công cụ tương tác trực quan cho ngôn ngữ lập trình Pascal – ngôn ngữ nền tảng trong chương trình Tin học lớp 11 tại Việt Nam.

+-------------------------------------------------------------------------------+
|                             HỆ THỐNG SECRET GARDEN                            |
+------------------------------------+------------------------------------------+
|          MÔ HÌNH SƯ PHẠM           |             GAME ENGINE CORE             |
|  - Đồ thị tri thức (Knowledge Graph) |  - Lane Defense Mechanics (PvZ Style)    |
|  - Đơn thể kiến thức (Prime Idea - PI) |  - Dynamic Wave & Spawner Engine         |
|  - Ràng buộc tiên quyết (PI_Condition) |  - Real-time State & Collision Handler   |
+------------------------------------+------------------------------------------+

Mục tiêu nghiên cứu cụ thể

  1. Nghiên cứu lý thuyết nền tảng: Phân tích lý thuyết trò chơi (Game Theory) gồm 4 yếu tố cốt lõi: Người chơi (Player), Chiến lược (Strategy), Thu hoạch (Payoff), Luật chơi (Rule); mô hình hóa quy trình thiết kế Educational Game kết hợp sư phạm và công nghệ.
  2. Mô hình hóa tri thức: Xây dựng Đồ thị tri thức (Knowledge Graph - KG) phân rã toàn bộ chương trình Pascal 11 thành các đơn thể kiến thức (Prime Idea - PI) có quan hệ ràng buộc logic (Prerequisite Conditions).
  3. Hiện thực hóa phần mềm: Thiết kế và phát triển game tương tác 2D "Secret Garden" dựa trên cơ chế phòng thủ đường (Lane Defense - tương tự Plants vs. Zombies của PopCap Games), tích hợp ngân hàng câu hỏi đa dạng (Trắc nghiệm, Đúng/Sai, Quiz mã nguồn).

Phạm vi và Giới hạn

  • Phạm vi kiến thức: Toàn bộ chương trình Tin học 11 (Kiểu dữ liệu chuẩn, Cấu trúc rẽ nhánh IF-THEN, Cấu trúc lặp FOR/WHILE, Mảng một chiều ARRAY).
  • Nền tảng triển khai: Ứng dụng Desktop chạy trên hệ điều hành Microsoft Windows, kiến trúc .NET Framework 4.0.
  • Giới hạn kỹ thuật: Chế độ chơi đơn (Single Player), lưu trữ dữ liệu cục bộ qua Relational Database.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tại thời điểm nghiên cứu, các công cụ hỗ trợ học lập trình trên thế giới và trong nước bộc lộ những ưu nhược điểm rõ rệt:

Tiêu chí so sánh Alice 3.0 (Carnegie Mellon) Kodu Game Lab (Microsoft) Secret Garden (Đề tài)
Ngôn ngữ mục tiêu Java / Hướng đối tượng 3D Ngôn ngữ biểu tượng trực quan Pascal (Cấu trúc, thủ tục)
Đối tượng học tập Sinh viên đại học / THPT nâng cao Học sinh tiểu học / THCS Học sinh THPT (Lớp 11)
Cơ chế sư phạm Kéo thả khối lệnh 3D Visual Tile-based Programming Đồ thị tri thức (KG) + Lane Defense
Độ trễ học tập Cao (cần cấu hình máy mạnh) Trung bình (môi trường đồ họa nặng) Thấp (Giao diện 2D trực quan, nhẹ)
Khả năng đánh giá Không có bài kiểm tra cú pháp tích hợp Tự do sáng tạo, không đo lường lý thuyết Đánh giá trực tiếp qua MultiChoice, Quiz

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc): Hệ thống quản lý tài khoản người chơi (User); Động cơ game 2D cơ bản; 3 dạng câu hỏi (True/False, Multiple Choice, Code Completion Quiz); Cây phả hệ điều kiện kiến thức (PI_Condition).
  • Should have (Nên có): Bảng xếp hạng điểm số (Top Player); Hệ thống trợ giúp thời gian thực (Pause, Knowledge Review); Đa dạng chủng loại quái vật và vật phẩm bổ trợ.
  • Could have (Có thể mở rộng): Trình biên dịch mã nguồn Pascal mini trực tiếp trong game; Chế độ chơi mạng LAN đối kháng.
  • Won't have (Chưa thực hiện): Chế độ đa người chơi thời gian thực qua Cloud; Bản phát hành đa nền tảng (Mobile/Web).

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc phân lớp (Layered Architecture), tách biệt giữa tầng hiển thị giao diện, tầng xử lý logic trò chơi và tầng ánh xạ dữ liệu tri thức.

+-----------------------------------------------------------------------+
|                 PRESENTATION LAYER (WPF / XAML Views)                 |
|   [MainView]   [StageView]   [SceneView]   [QuestionModal]   [TopView] |
+-----------------------------------------------------------------------+
                                  |
+-----------------------------------------------------------------------+
|                      GAME LOGIC & ENGINE LAYER                        |
|   +---------------------+  +--------------------+  +---------------+  |
|   |  GameEngine (Timer) |  | CollisionManager   |  | WaveScheduler |  |
|   +---------------------+  +--------------------+  +---------------+  |
|   +---------------------------------------------------------------+   |
|   |                 KnowledgeGraphEngine (KG/PI)                  |   |
|   +---------------------------------------------------------------+   |
+-----------------------------------------------------------------------+
                                  |
+-----------------------------------------------------------------------+
|                      DATA ACCESS LAYER (ADO.NET)                      |
|       Physical Data Model (PDM) / Relational Database Engine          |
+-----------------------------------------------------------------------+

Ngăn xếp công nghệ (Technology Stack)

  • Môi trường phát triển: Microsoft Visual Studio 2010 Professional (.NET Framework 4.0, C#).
  • Thiết kế giao diện UI/UX: Microsoft Expression Blend 4, Adobe Photoshop CS5.
  • Mô hình hóa dữ liệu & Hệ thống: Sybase PowerDesigner 15.1, Microsoft Visio 2010.
  • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server (Local Relational Schema).

Thiết kế cơ sở dữ liệu vật lý (Physical Data Model - PDM)

Cơ sở dữ liệu được chuẩn hóa cao độ nhằm hỗ trợ việc truy vấn cây tri thức và đồng bộ hóa màn chơi:

-- Bảng đơn vị tri thức (Prime Idea)
CREATE TABLE PI (
    idPI INT PRIMARY KEY IDENTITY(1,1),
    PI_Name NVARCHAR(100) NOT NULL,
    Content NVARCHAR(MAX) NOT NULL,
    Importance INT DEFAULT 1,
    Target INT NOT NULL
);

-- Bảng ràng buộc tiên quyết giữa các đơn vị kiến thức
CREATE TABLE PI_Condition (
    idPI INT FOREIGN KEY REFERENCES PI(idPI),
    idPI_Next INT NOT NULL,
    idPI_Previous INT NOT NULL,
    PRIMARY KEY (idPI, idPI_Next, idPI_Previous)
);

-- Cấu hình tham số độ khó theo phân cảnh (Scene Configuration)
CREATE TABLE Scene_Config (
    idScene INT PRIMARY KEY,
    TotalSupportTer INT NOT NULL,
    TimeRemain INT NOT NULL,
    TurtleSpeed DECIMAL(4,2) NOT NULL,
    SnailSpeed DECIMAL(4,2) NOT NULL,
    WormSpeed DECIMAL(4,2) NOT NULL,
    TimeToWaitWorm INT NOT NULL,
    TimeToWaitSnail INT NOT NULL,
    TimeToWaitTurtle INT NOT NULL
);

Thuật toán duyệt Đồ thị Tri thức và Kích hoạt Câu hỏi

Đồ thị tri thức $G = (V, E)$ gồm tập đỉnh $V = {PI_1, PI_2, ..., PI_n}$ và tập cạnh có hướng $E = {(PI_i, PI_j) \mid PI_i \text{ là điều kiện tiên quyết của } PI_j}$.

public class KnowledgeGraphEngine
{
    public bool ValidatePrerequisites(int userId, int targetPIId, AppDbContext db)
    {
        // Lấy danh sách các PI bắt buộc phải hoàn thành trước
        var requiredConditions = db.PI_Conditions
            .Where(c => c.idPI_Next == targetPIId)
            .Select(c => c.idPI_Previous)
            .ToList();

        if (!requiredConditions.Any()) return true;

        // Kiểm tra lịch sử hoàn thành của người chơi
        var completedPIs = db.UserProgress
            .Where(u => u.UserId == userId && u.IsPassed)
            .Select(u => u.PIId)
            .ToList();

        // Trả về true nếu tập điều kiện là tập con của tập đã hoàn thành
        return requiredConditions.All(req => completedPIs.Contains(req));
    }
}

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển phần mềm lặp rút gọn kết hợp các nguyên tắc thiết kế sư phạm (Instructional System Design - ISD):

[Phân tích Sư phạm] -> [Mô hình hóa KG] -> [Thiết kế Game] -> [Lập trình Sprint] -> [Kiểm thử Đánh giá]
  1. Giai đoạn 1 (Tuần 1 - 3): Phân tích chương trình chuẩn Tin học 11, bóc tách 32 khái niệm cốt lõi thành 45 Prime Ideas.
  2. Giai đoạn 2 (Tuần 4 - 7): Xây dựng sơ đồ Use Case, thiết kế PDM trên PowerDesigner, dựng Wireframe màn chơi trên Expression Blend.
  3. Giai đoạn 3 (Tuần 8 - 14): Lập trình các Module Game Engine, xử lý va chạm đồ họa, tích hợp cơ chế sinh quái vật theo hàm Poisson/Timer.
  4. Giai đoạn 4 (Tuần 15 - 16): Kiểm thử nghiệm thu, cân bằng tham số game (Health Point, Speed, Attack Rate), đóng gói triển khai.

Hiện thực hóa và kết quả

Quy trình phát triển và Thuật toán cốt lõi

Trò chơi phân cấp cấu trúc gồm 2 Stage $\rightarrow$ mỗi Stage gồm 3 Scene $\rightarrow$ mỗi Scene chia thành 3 Level với độ khó tăng dần.

STAGE 1 (Cơ bản) ──────────> Scene 1 (Ban ngày) ───────> Level 1, 2, 3
                     ├──────> Scene 2 (Ban đêm) ────────> Level 1, 2, 3
                     └──────> Scene 3 (Bờ sông) ────────> Level 1, 2, 3

STAGE 2 (Nâng cao) ────────> Tăng tốc độ, mật độ quái vật, bài tập thuật toán phức tạp

Vòng lặp trò chơi và Xử lý va chạm (Game Loop & Collision Handling)

Động cơ trò chơi sử dụng cơ chế DispatcherTimer với tần số quét 60 FPS (chu kỳ $16.67\text{ ms}$), cập nhật trạng thái tọa độ và tính toán va chạm hình học đa giác biên (AABB - Axis-Aligned Bounding Box).

private void GameLoop_Tick(object sender, EventArgs e)
{
    // 1. Cập nhật vị trí các nhân vật đối kháng (Enemies)
    foreach (var enemy in ActiveEnemies)
    {
        enemy.PositionX -= enemy.Speed;
        Canvas.SetLeft(enemy.SpriteElement, enemy.PositionX);

        // 2. Kiểm tra va chạm với Bông hoa Tri thức (Knowledge Plants)
        foreach (var plant in ActivePlants)
        {
            if (CheckAABBCollision(enemy.BoundingBox, plant.BoundingBox))
            {
                enemy.IsAttacking = true;
                plant.HealthPoint -= enemy.DamagePerTick;
                
                if (plant.HealthPoint <= 0)
                {
                    DestroyPlant(plant);
                    enemy.IsAttacking = false;
                }
            }
        }

        // 3. Kiểm tra điều kiện thua cuộc (Enemies chạm vạch phòng thủ nhà)
        if (enemy.PositionX <= DEFENSE_LINE_X)
        {
            TriggerGameOver();
            return;
        }
    }
}

Tham số hóa cơ chế cân bằng màn chơi (Scene Balancing Metrics)

Dữ liệu cấu hình từng màn được nạp động từ bảng Scene_Config:

  • Level 1 (Dễ): Mặt trời xuất hiện mỗi $10\text{s}$; Ốc sên (HP: $100$, Speed: $1.2\text{ px/tick}$); Câu hỏi True/False (Thời gian trả lời: $30\text{s}$).
  • Level 2 (Trung bình): Xuất hiện đồng thời Ốc sên và Sâu (HP: $150$, Speed: $1.8\text{ px/tick}$); Câu hỏi MultiChoice 4 lựa chọn.
  • Level 3 (Khó): Quái vật Rùa (HP: $200$, Speed: $2.2\text{ px/tick}$); Tần suất rơi vật phẩm giảm xuống $8\text{s}$; Câu hỏi Quiz điền khuyết cú pháp Pascal.

Kiểm thử và Đánh giá chất lượng

Hệ thống được kiểm thử qua 45 kịch bản Unit Test (NUnit) và thử nghiệm UAT trên 50 học sinh khối 11:

+-----------------------------------------------------------------------+
|                      KẾT QUẢ KIỂM THỬ HỆ THỐNG                        |
+------------------------------+--------------------+-------------------+
| Hạng mục kiểm thử            | Kế hoạch / Chỉ tiêu| Thực tế đạt được  |
+------------------------------+--------------------+-------------------+
| Tốc độ khung hình (FrameRate)| >= 50 FPS          | 58.4 FPS (Ổn định)|
| Dung lượng RAM chiếm dụng    | < 200 MB           | ~118 MB           |
| Thời gian nạp dữ liệu Scene  | < 1.5 giây         | 0.42 giây         |
| Tỷ lệ phủ câu hỏi Pascal     | 100% SGK Lớp 11    | 100% (45/45 PI)   |
| Tỷ lệ phản hồi đúng logic KG | 100%               | 100% Không deadlock|
+------------------------------+--------------------+-------------------+

Đánh giá trải nghiệm người dùng (UAT Satisfaction Score)

  • Độ hài lòng giao diện: $4.6 / 5.0$
  • Khả năng kích thích tư duy: $4.7 / 5.0$
  • Mức độ hiểu bài sau khi chơi: Tăng $34.8%$ so với nhóm đối chứng chỉ học lý thuyết bảng phấn truyền thống.

Đổi mới và đóng góp khoa học

  1. Tích hợp Đồ thị tri thức vào kịch bản trò chơi: Không giống các trò chơi giải đố thông thường (ngẫu nhiên hóa câu hỏi), Secret Garden áp dụng mô hình $KG$ với các nút $PI$. Người chơi không thể "học vẹt" hay đi đường tắt mà bắt buộc phải nắm vững các kiến thức nền (ví dụ: Phải hiểu Kiểu dữ liệu nguyên trước khi trả lời được Cú pháp vòng lặp FOR).
  2. Cơ chế Dual-Tasking rèn luyện tư duy: Kết hợp giữa phản xạ chiến thuật thời gian thực (Thu hoạch năng lượng, trồng cây, ngăn chặn quái vật) và truy xuất bộ nhớ nhận thức sâu (Giải câu đố lập trình), giúp tăng khả năng chịu áp lực và giải quyết vấn đề.
  3. Mô hình kiến trúc module hóa: Cơ sở dữ liệu PDM phân định rõ ràng giữa cấu hình màn chơi (Scene_Config), câu hỏi (Question) và tri thức (PI), cho phép giáo viên dễ dàng biên tập, thêm mới câu hỏi mà không cần can thiệp mã nguồn C#.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng trong giáo dục phổ thông

  • Hỗ trợ tiết dạy thực hành: Giáo viên sử dụng Secret Garden trong 15 phút đầu hoặc cuối tiết học tại phòng máy để khởi động hoặc củng cố bài học.
  • Công cụ tự học tại nhà: Học sinh cài đặt phần mềm độc lập trên máy tính cá nhân để tự ôn tập trước các kỳ thi học kỳ.

Yêu cầu triển khai và Cấu hình phần cứng

  • Hệ điều hành: Windows XP SP3 / Windows 7 / Windows 8 / Windows 10 / Windows 11.
  • Phần cứng tối thiểu: CPU Intel Pentium 4 2.0 GHz hoặc tương đương, RAM 512 MB, Dung lượng ổ cứng trống 250 MB, Độ phân giải màn hình $1024 \times 768$.
  • Môi trường phần mềm: Microsoft .NET Framework 4.0 Client Profile.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Phần mềm xây dựng dưới dạng ứng dụng Client cục bộ (Desktop App), chưa có khả năng đồng bộ điểm số và tiến trình học tập lên máy chủ đám mây (Cloud Sync).
  • Ngân hàng câu hỏi chủ yếu tập trung vào kiểm tra kiến thức và sửa lỗi cú pháp, chưa tích hợp bộ biên dịch (Compiler/Sandbox) để tự động chấm điểm các bài toán viết mã tự do độ phức tạp cao.

Kế hoạch phát triển

  1. Chuyển đổi nền tảng sang WebGL / Unity: Cho phép chạy trực tiếp trên trình duyệt web và thiết bị di động (iOS/Android).
  2. Tích hợp Module Trình biên dịch ảo (Virtual Compiler): Hỗ trợ biên dịch mã nguồn Pascal, C++ và Python trực tiếp trong cửa sổ trò chơi.
  3. Ứng dụng AI cá nhân hóa lộ trình: Sử dụng thuật toán học máy để phân tích điểm yếu của từng học sinh, từ đó tự động điều chỉnh tần suất xuất hiện của các Prime Idea tương ứng.

Đối tượng hưởng lợi

+------------------------------------------------------------------------------------+
|                               ĐỐI TƯỢNG HƯỞNG LỢI                                  |
+----------------------+-------------------------------------------------------------+
| Học sinh THPT        | Tiếp thu lập trình Pascal trực quan, giảm 40% áp lực học tập|
+----------------------+-------------------------------------------------------------+
| Giáo viên Tin học    | Sở hữu công cụ giảng dạy trực quan, theo dõi mức độ tiếp thu|
+----------------------+-------------------------------------------------------------+
| Lập trình viên Game  | Tham khảo kiến trúc kết hợp Knowledge Graph vào WPF/C# Game |
+----------------------+-------------------------------------------------------------+
| Nhà nghiên cứu GD    | Mô hình mẫu về việc ứng dụng Game Theory & Serious Games     |
+----------------------+-------------------------------------------------------------+

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

1. Yêu cầu cấu hình máy tính để cài đặt và vận hành Secret Garden?

Phần mềm được tối ưu hóa bằng C#/WPF với đồ họa 2D vector/sprite nhẹ, vận hành mượt mà trên các máy tính cấu hình văn phòng hoặc máy tính phòng thực hành cũ (RAM chỉ cần từ 512 MB, CPU Pentium 4, cài sẵn .NET Framework 4.0).

2. Dữ liệu tiến trình chơi của học sinh được lưu trữ như thế nào?

Toàn bộ thông tin tài khoản, màn chơi đã vượt qua, điểm số tích lũy được lưu trữ trong cơ sở dữ liệu quan hệ cục bộ qua các bảng User, UserScene. Khi người dùng đăng nhập lại, hệ thống sử dụng Use Case Load game để khôi phục đúng trạng thái trước đó.

3. Giáo viên có thể tự bổ sung câu hỏi và kiến thức mới không?

Hoàn toàn có thể. Do hệ thống sử dụng thiết kế dữ liệu phân tách (bảng PI, Question, MultiChoice, Quiz, TrueFail), giáo viên chỉ cần cập nhật dữ liệu vào cơ sở dữ liệu thông qua công cụ quản trị mà không cần lập trình lại game.

4. Cơ chế tính điểm và điều kiện vượt màn (Win Condition) hoạt động ra sao?

Người chơi phải đảm bảo đồng thời 3 điều kiện: (1) Trả lời đúng số lượng câu hỏi quy định của màn chơi ($3$ câu/level); (2) Tổng điểm tích lũy $> 0$; (3) Không để bất kỳ quái vật nào vượt qua hàng rào phòng thủ để tiến vào nhà.

5. Tại sao đề tài lại lựa chọn ngôn ngữ Pascal thay vì C++ hay Python?

Tại thời điểm nghiên cứu và theo khung chương trình chuẩn của Bộ Giáo dục và Đào tạo Việt Nam, Pascal là ngôn ngữ lập trình chính khóa bắt buộc cho học sinh lớp 11 nhằm rèn luyện tư duy lập trình có cấu trúc. Khung kiến trúc của Secret Garden hoàn toàn có thể tái sử dụng để nạp nội dung cho C++ hoặc Python.


Kết luận

Đồ án tốt nghiệp "Xây dựng phần mềm trò chơi hỗ trợ học lập trình Pascal" (Game Secret Garden) của nhóm tác giả Bùi Anh Tài và Nguyễn Khánh Tài đã hiện thực hóa thành công một giải pháp công nghệ giáo dục sáng tạo. Bằng việc kết hợp chặt chẽ giữa lý thuyết trò chơi (Game Theory), mô hình đồ thị tri thức (Knowledge Graph) và kỹ thuật lập trình hướng đối tượng trên nền tảng .NET/WPF, dự án đã chứng minh tính khả thi cao trong việc chuyển đổi một môn học trừu tượng thành trải nghiệm tương tác lôi cuốn, hiệu quả và giàu tính sư phạm. Đây là tiền đề vững chắc cho việc phát triển các nền tảng Gamification giáo dục chuyên sâu hơn trong tương lai.