Đồ án môn học lập trình trực quan trò chơi rắn săn mồi

Đồ án lập trình trực quan: Xây dựng trò chơi rắn săn mồi hấp dẫn. Tìm hiểu code, thuật toán và giao diện trò chơi chi tiết. Tải đồ án miễn phí!

Chuyên ngành

Lập trình trực quan

Người đăng

Ẩn danh

Thể loại

Đồ án môn học

2023

47
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan đồ án game rắn săn mồi lập trình bằng C

Đồ án môn học lập trình trực quan trò chơi rắn săn mồi là một dự án ứng dụng các kiến thức nền tảng về lập trình hướng đối tượng và quản lý cơ sở dữ liệu để tái hiện một trò chơi kinh điển. Dự án này không chỉ là một bài tập kỹ thuật mà còn là cơ hội để sinh viên áp dụng lý thuyết vào thực tiễn, từ khâu lên ý tưởng, thiết kế hệ thống, đến lập trình và triển khai sản phẩm. Trò chơi Rắn săn mồi (Snake Game) được lựa chọn vì tính phổ biến, luật chơi đơn giản nhưng vẫn đủ thách thức để phát triển các kỹ năng lập trình cốt lõi. Sản phẩm cuối cùng là một ứng dụng hoàn chỉnh trên nền tảng Windows, sử dụng ngôn ngữ C# và công nghệ Windows Forms. Người chơi có thể đăng ký, đăng nhập tài khoản, lựa chọn các cấp độ khó khác nhau, và hệ thống sẽ lưu lại điểm số cao nhất. Đồ án tập trung vào việc xây dựng một cấu trúc mã nguồn rõ ràng, dễ bảo trì và mở rộng. Các lớp đối tượng như Rắn, Thức ăn, Vật cản được định nghĩa riêng biệt, tuân thủ nguyên tắc đóng gói và trừu tượng của lập trình hướng đối tượng. Bên cạnh đó, việc tích hợp cơ sở dữ liệu SQL Server để quản lý thông tin người chơi là một điểm nhấn quan trọng, cho thấy khả năng kết nối và xử lý dữ liệu của ứng dụng. Báo cáo đồ án chi tiết quá trình từ mô tả bài toán, phân tích chức năng, thiết kế CSDL cho đến xây dựng từng thành phần của game. Việc sử dụng các công cụ hỗ trợ như GitHub để quản lý mã nguồn và Draw.io để thiết kế sơ đồ thuật toán cũng thể hiện sự chuyên nghiệp trong quy trình phát triển phần mềm.

1.1. Lý do và mục tiêu của đồ án lập trình trực quan này

Việc lựa chọn đề tài trò chơi rắn săn mồi xuất phát từ ba lý do chính. Thứ nhất, đây là một trò chơi kinh điển, quen thuộc với nhiều thế hệ, giúp người phát triển dễ dàng hình dung yêu cầu và luật chơi. Thứ hai, lối chơi đơn giản nhưng đòi hỏi xử lý logic phức tạp, là một bài toán lý tưởng để rèn luyện kỹ năng lập trình thuật toán, đặc biệt là xử lý di chuyển, phát hiện va chạm và quản lý trạng thái game. Thứ ba, trò chơi có tiềm năng phát triển và mở rộng trên nhiều nền tảng khác nhau. Mục tiêu của đồ án không chỉ dừng lại ở việc tạo ra một sản phẩm giải trí mà còn nhằm đạt được các kết quả học thuật quan trọng: củng cố kỹ năng lập trình C#, làm chủ công nghệ Windows Forms trong việc xây dựng giao diện người dùng (UI), và có kinh nghiệm thực tế với việc thiết kế và tương tác với cơ sở dữ liệu SQL Server.

1.2. Tổng quan công nghệ chính được ứng dụng trong dự án

Đồ án được xây dựng trên một nền tảng công nghệ vững chắc của Microsoft. Ngôn ngữ lập trình chính là C#, một ngôn ngữ hướng đối tượng mạnh mẽ và phổ biến. Để xây dựng giao diện, dự án sử dụng Windows Forms (WinForms), một framework cung cấp các control hỗ trợ kéo thả, giúp thiết kế giao diện ứng dụng desktop một cách nhanh chóng. Môi trường phát triển tích hợp (IDE) được sử dụng là Microsoft Visual Studio 2022. Về phần lưu trữ dữ liệu, hệ quản trị cơ sở dữ liệu SQL Server được chọn để quản lý thông tin tài khoản người chơi, bao gồm tên đăng nhập, mật khẩu và điểm số cao nhất ở từng cấp độ. Ngoài ra, các công cụ phụ trợ như GitHub được dùng để quản lý phiên bản mã nguồn, đảm bảo sự phối hợp hiệu quả khi làm việc nhóm, và Draw.io hỗ trợ việc thiết kế các sơ đồ phân tích và thuật toán.

1.3. Mô tả các chức năng cốt lõi của trò chơi rắn săn mồi

Hệ thống được thiết kế với đầy đủ các chức năng của một trò chơi hoàn chỉnh. Chức năng đầu tiên là quản lý người dùng, cho phép người chơi Đăng ký tài khoản mới và Đăng nhập vào hệ thống. Sau khi đăng nhập, người chơi có thể tùy chỉnh trải nghiệm qua các chức năng như Chọn map (Dễ, Vừa, Khó), Chọn rắn (thay đổi màu sắc) và Chọn thức ăn. Chức năng cốt lõi là gameplay, bao gồm việc điều khiển rắn di chuyển bằng các phím mũi tên, xử lý logic khi rắn ăn mồi (tăng chiều dài, tăng điểm) và xử lý va chạm khi rắn tự cắn vào thân hoặc đâm vào tường/vật cản. Hệ thống cũng có các tính năng phụ trợ như tính điểm, quản lý mạng sống của rắn, và tích hợp âm thanh để tăng tính hấp dẫn. Cuối cùng, game lưu lại điểm số cao nhất của người chơi ở mỗi cấp độ, tạo động lực để người chơi cải thiện thành tích.

II. Thách thức khi xây dựng game rắn với CSDL và WinForms

Việc phát triển một đồ án môn học lập trình trực quan như trò chơi rắn săn mồi đặt ra nhiều thách thức đáng kể, đặc biệt khi kết hợp giữa logic game thời gian thực và quản lý cơ sở dữ liệu. Thách thức đầu tiên nằm ở giai đoạn phân tích và thiết kế hệ thống. Cần phải xác định rõ ràng tất cả các yêu cầu chức năng và phi chức năng, từ việc quản lý tài khoản người chơi đến việc xử lý các sự kiện trong game một cách mượt mà. Một sơ đồ phân tích trò chơi chi tiết là cần thiết để hình dung luồng hoạt động, từ lúc đăng nhập, chọn cấp độ, chơi game, cho đến khi kết thúc và lưu điểm. Thách thức thứ hai liên quan đến việc sử dụng Windows Forms, một công nghệ chủ yếu dành cho các ứng dụng quản lý, để xây dựng một trò chơi có yếu tố đồ họa và chuyển động liên tục. Việc vẽ các đối tượng game (rắn, mồi, vật cản) lên form, cập nhật vị trí của chúng theo một vòng lặp thời gian (timer) và đảm bảo hiệu suất hoạt động ổn định đòi hỏi sự tối ưu hóa trong mã nguồn. Phải xử lý việc vẽ lại (repaint) màn hình một cách hiệu quả để tránh hiện tượng giật, lag. Thách thức cuối cùng và không kém phần quan trọng là việc tích hợp SQL Server. Phải thiết kế một cấu trúc cơ sở dữ liệu hợp lý để lưu trữ thông tin người chơi. Quá trình kết nối, truy vấn và cập nhật dữ liệu từ ứng dụng C# đến CSDL cần được xử lý một cách an toàn và hiệu quả, tránh làm ảnh hưởng đến trải nghiệm chơi game, đặc biệt là các thao tác ghi điểm sau khi kết thúc một màn chơi.

2.1. Phân tích bài toán và xác định các yêu cầu của hệ thống

Giai đoạn đầu tiên của dự án là mô tả chi tiết bài toán. Snake Game yêu cầu người chơi điều khiển một con rắn ăn mồi để tăng chiều dài và điểm số, đồng thời tránh va chạm vào chính nó hoặc các chướng ngại vật. Từ mô tả này, các chức năng hệ thống được xác định, bao gồm: quản lý tài khoản (đăng nhập, đăng ký), khởi tạo game (tạo màn chơi, rắn, thức ăn), điều khiển rắn, tạo thức ăn ngẫu nhiên, xử lý va chạm, và kết thúc game. Các yêu cầu cần đạt được bao gồm một giao diện người dùng (UI) trực quan, dễ sử dụng; lối chơi hấp dẫn; và độ khó tăng dần để thử thách người chơi. Đây là bước nền tảng để định hình kiến trúc tổng thể cho toàn bộ ứng dụng.

2.2. Khó khăn trong việc thiết kế giao diện đồ họa 2D cơ bản

Mặc dù Windows Forms cung cấp các công cụ thiết kế giao diện mạnh mẽ, nó không phải là một game engine chuyên dụng. Thách thức chính là phải tự xây dựng cơ chế vẽ và cập nhật đồ họa 2D từ đầu. Lập trình viên phải sử dụng đối tượng Graphics để vẽ các hình chữ nhật (Rectangle) đại diện cho từng đốt của con rắn, thức ăn và vật cản. Việc quản lý tọa độ, kích thước và màu sắc của hàng chục đối tượng trên màn hình một cách thủ công là một công việc phức tạp. Thêm vào đó, việc đảm bảo chuyển động của rắn mượt mà, không bị nhấp nháy đòi hỏi kỹ thuật xử lý vòng lặp game và vẽ lại màn hình một cách hợp lý, thường thông qua đối tượng Timer với các khoảng thời gian cập nhật rất ngắn.

2.3. Vấn đề đồng bộ hóa dữ liệu người chơi với SQL Server

Việc kết nối ứng dụng game với một cơ sở dữ liệu bên ngoài như SQL Server mang đến thách thức về hiệu suất và đồng bộ hóa. Các thao tác như kiểm tra thông tin đăng nhập, đăng ký tài khoản mới, hay đặc biệt là cập nhật điểm số cao nhất phải được thực hiện nhanh chóng để không làm gián đoạn trải nghiệm người dùng. Cần thiết kế các lớp riêng biệt (Connection, Modify) để quản lý việc kết nối và thực thi các câu lệnh SQL. Điều này giúp mã nguồn trở nên gọn gàng và dễ quản lý hơn. Một vấn đề cần quan tâm là xử lý các lỗi có thể xảy ra trong quá trình tương tác với CSDL, ví dụ như mất kết nối mạng hoặc lỗi truy vấn, để đảm bảo ứng dụng không bị treo và dữ liệu người chơi được bảo toàn.

III. Phương pháp thiết kế CSDL cho đồ án trò chơi rắn săn mồi

Nền tảng của hệ thống quản lý người chơi trong đồ án game rắn săn mồi là một cơ sở dữ liệu được thiết kế cẩn thận trên SQL Server. Cách tiếp cận này giúp tách biệt dữ liệu người dùng ra khỏi logic của ứng dụng, tạo điều kiện cho việc quản lý, bảo trì và mở rộng sau này. Thiết kế CSDL tập trung vào sự đơn giản nhưng hiệu quả, với một bảng chính là TaiKhoan để lưu trữ toàn bộ thông tin cần thiết. Việc thiết kế này đảm bảo rằng mọi dữ liệu liên quan đến một người chơi đều được tập trung tại một nơi duy nhất. Để tương tác với CSDL từ ứng dụng C#, dự án đã xây dựng một tầng truy cập dữ liệu (Data Access Layer) đơn giản. Tầng này bao gồm các lớp chuyên dụng như ConnectionModify. Lớp Connection chịu trách nhiệm tạo và quản lý chuỗi kết nối đến SQL Server, đảm bảo rằng ứng dụng luôn có thể thiết lập một kết nối ổn định. Trong khi đó, lớp Modify đóng gói các phương thức để thực thi các câu lệnh SQL, chẳng hạn như SELECT để truy vấn dữ liệu tài khoản hoặc INSERT, UPDATE để thêm mới và cập nhật thông tin. Cách tổ chức này tuân thủ nguyên tắc phân chia trách nhiệm, giúp mã nguồn trở nên sạch sẽ và dễ hiểu hơn. Sơ đồ Database Diagram cũng được tạo ra để trực quan hóa mối quan hệ giữa các bảng (dù trong trường hợp này chỉ có một bảng chính), cung cấp một cái nhìn tổng quan về cấu trúc lưu trữ dữ liệu của toàn bộ hệ thống.

3.1. Chi tiết cấu trúc bảng TaiKhoan trong hệ quản trị SQL

Bảng TaiKhoan là trung tâm của cơ sở dữ liệu, được thiết kế để lưu trữ thông tin của mỗi người chơi. Cấu trúc của bảng này bao gồm các trường (field) sau: TenTaiKhoan (varchar(50), khóa chính) để lưu tên đăng nhập duy nhất; MatKhau (varchar(50)) để lưu mật khẩu; Email (varchar(50)) cho các chức năng khôi phục tài khoản. Ngoài ra, các trường de, vua, kho (đều là varchar(50)) được dùng để lưu trữ điểm số cao nhất mà người chơi đạt được tương ứng với ba cấp độ Dễ, Vừa và Khó. Trường Level cũng được thêm vào để có thể phát triển các tính năng cấp độ tài khoản trong tương lai. Thiết kế này đáp ứng đầy đủ các yêu cầu lưu trữ của trò chơi.

3.2. Phân tích sơ đồ Database Diagram và các trường dữ liệu

Sơ đồ Database Diagram trong tài liệu đồ án cung cấp một cái nhìn trực quan về bảng TaiKhoan và các thuộc tính của nó. Mặc dù chỉ có một bảng, sơ đồ này vẫn rất hữu ích để hiểu rõ vai trò của từng trường dữ liệu. TenTaiKhoan được xác định là khóa chính (Primary Key), đảm bảo tính duy nhất cho mỗi tài khoản và tăng tốc độ truy vấn. Các trường còn lại lưu trữ thông tin bổ sung. Việc chọn kiểu dữ liệu varchar(50) cho hầu hết các trường là một lựa chọn hợp lý, cân bằng giữa việc tiết kiệm không gian lưu trữ và đảm bảo đủ chỗ cho dữ liệu người dùng. Sơ đồ này là một công cụ thiết kế quan trọng, giúp đảm bảo tính toàn vẹn và nhất quán của cơ sở dữ liệu.

3.3. Kỹ thuật truy vấn dữ liệu với các lớp Connection và Modify

Để ứng dụng C# có thể giao tiếp với SQL Server, đồ án đã triển khai hai lớp tiện ích. Lớp Connection chứa một phương thức tĩnh để trả về một đối tượng SqlConnection đã được cấu hình sẵn với chuỗi kết nối. Điều này giúp tránh việc lặp lại chuỗi kết nối ở nhiều nơi trong mã nguồn. Lớp Modify chứa các phương thức để thực hiện các câu lệnh SQL. Ví dụ, có một phương thức để thực thi các câu lệnh không trả về kết quả (như INSERT, UPDATE, DELETE) và một phương thức khác để thực thi các truy vấn SELECT và trả về một danh sách các đối tượng TaiKhoan. Cách tiếp cận này giúp che giấu sự phức tạp của ADO.NET, cho phép các phần khác của ứng dụng tương tác với CSDL một cách đơn giản và an toàn.

IV. Hướng dẫn xây dựng logic game rắn săn mồi bằng C OOP

Việc xây dựng logic cho trò chơi rắn săn mồi được thực hiện hoàn toàn dựa trên các nguyên tắc của lập trình hướng đối tượng (OOP) trong C#. Cách tiếp cận này giúp chia nhỏ bài toán phức tạp thành các đối tượng có thể quản lý được, mỗi đối tượng có thuộc tính và hành vi riêng. Cốt lõi của game là các lớp Ran, ThucAn, và VatCan. Lớp Setting được thiết kế theo mô hình Singleton để đảm bảo chỉ có một thể hiện duy nhất trong toàn bộ ứng dụng, dùng để lưu trữ các cài đặt chung như màu sắc rắn, âm thanh, và thông tin tài khoản đang đăng nhập. Thuật toán di chuyển của rắn là một phần quan trọng. Rắn được biểu diễn bằng một mảng các hình chữ nhật (Rectangle[]). Khi di chuyển, mỗi đốt của rắn sẽ lấy vị trí của đốt ngay trước nó, và chỉ có đốt đầu tiên được cập nhật vị trí mới dựa trên phím điều khiển của người chơi. Vòng lặp game, được điều khiển bởi một đối tượng Timer, chịu trách nhiệm gọi các phương thức cập nhật vị trí và vẽ lại toàn bộ các đối tượng lên màn hình. Xử lý va chạm là một logic then chốt khác, được triển khai bằng cách sử dụng phương thức IntersectsWith() để kiểm tra xem hình chữ nhật đại diện cho đầu rắn có giao với thân, tường, hay vật cản không. Hệ thống tính điểm và mạng sống cũng được xây dựng một cách logic: điểm tăng khi ăn mồi, và mạng giảm khi xảy ra va chạm. Toàn bộ quá trình này cho thấy sự ứng dụng hiệu quả của OOP để tạo ra một cấu trúc game rõ ràng, logic và dễ mở rộng.

4.1. Thiết kế các lớp đối tượng Rắn Thức ăn và Vật cản

Kiến trúc của game được xây dựng quanh ba lớp đối tượng chính. Lớp Ran chứa một mảng các đối tượng Rectangle để biểu diễn các đốt rắn, cùng với các thuộc tính như màu sắc đầu và thân. Lớp này cũng bao gồm các phương thức để vẽ rắn (VeRan), di chuyển (VeRanChay, dichuyenlen, dichuyenxuong...), và tăng trưởng (ranlon). Lớp ThucAn quản lý vị trí và hình ảnh của mồi, có phương thức để tạo mồi ở một vị trí ngẫu nhiên trên màn hình. Tương tự, lớp VatCan (nếu có ở các map khó) quản lý vị trí và hình ảnh của các chướng ngại vật. Việc tách biệt các đối tượng này giúp mã nguồn trở nên module hóa và dễ quản lý.

4.2. Lập trình thuật toán di chuyển và logic xử lý va chạm

Thuật toán di chuyển được triển khai một cách thông minh. Thay vì tính toán lại vị trí cho từng đốt, vòng lặp di chuyển sẽ duyệt ngược từ đuôi lên, gán vị trí của đốt i-1 cho đốt i. Sau đó, vị trí của đầu rắn (đốt 0) được cập nhật theo hướng di chuyển mới. Logic xử lý va chạm được kiểm tra trong mỗi lần cập nhật của Timer. Hệ thống sẽ kiểm tra va chạm giữa đầu rắn và các đối tượng khác: các đốt còn lại của thân rắn, bốn bức tường bao quanh màn hình, và các vật cản. Hàm IntersectsWith() của lớp Rectangle là công cụ chính để thực hiện việc kiểm tra này. Khi va chạm xảy ra, game sẽ kết thúc hoặc trừ mạng của người chơi.

4.3. Xây dựng hệ thống tính điểm mạng sống và tích hợp âm thanh

Hệ thống điểm số và mạng sống được quản lý bằng các biến đơn giản. Ban đầu, người chơi có 3 mạng và 0 điểm. Mỗi khi rắn ăn mồi, điểm sẽ được cộng thêm (ví dụ 10 điểm) và tốc độ của game (khoảng thời gian của Timer) có thể được giảm đi một chút để tăng độ khó. Khi va chạm xảy ra, biến mạng sẽ giảm đi 1. Nếu mạng về 0, trò chơi kết thúc. Để tăng trải nghiệm, âm thanh được tích hợp bằng lớp SoundPlayer. Các đối tượng SoundPlayer được khởi tạo trong lớp Setting để phát các âm thanh khác nhau cho các sự kiện như ăn mồi, va chạm, hoặc nhạc nền trong menu, tạo ra một không gian chơi game sống động và hấp dẫn hơn.

V. Kết quả và ứng dụng thực tiễn của đồ án game rắn này

Quá trình thực hiện đồ án môn học lập trình trực quan trò chơi rắn săn mồi đã mang lại nhiều kết quả quan trọng, không chỉ về mặt sản phẩm mà còn về kiến thức và kỹ năng cho nhóm sinh viên. Kết quả rõ ràng nhất là một ứng dụng game hoàn chỉnh, có thể chạy độc lập trên môi trường Windows. Sản phẩm có đầy đủ chức năng từ quản lý người dùng với cơ sở dữ liệu SQL Server đến gameplay đa dạng với nhiều cấp độ khó, giao diện thân thiện và các hiệu ứng âm thanh cơ bản. Về mặt học thuật và kỹ năng, đồ án đã giúp sinh viên cải thiện đáng kể kỹ năng lập trình C# và hiểu sâu hơn về nền tảng Windows Forms. Việc phải tự mình xử lý đồ họa, logic game và tương tác CSDL đã cung cấp những kinh nghiệm thực tiễn quý báu mà các bài học lý thuyết khó có thể mang lại. Kỹ năng giải quyết vấn đề cũng được nâng cao thông qua việc đối mặt và vượt qua các thách thức như tối ưu hóa hiệu suất, xử lý lỗi va chạm, và đồng bộ hóa dữ liệu. Bên cạnh đó, kỹ năng làm việc nhóm được thể hiện qua việc phân công công việc rõ ràng, sử dụng GitHub để quản lý mã nguồn và phối hợp để hoàn thành mục tiêu chung. Đồ án này không chỉ là một bài tập cuối kỳ, mà còn là một minh chứng cho khả năng áp dụng kiến thức vào việc xây dựng một sản phẩm phần mềm hoàn chỉnh từ đầu đến cuối, là một nền tảng vững chắc cho các dự án phức tạp hơn trong tương lai.

5.1. Đánh giá các kỹ năng lập trình C và WinForms đạt được

Thông qua dự án, các thành viên đã nắm vững cú pháp và các khái niệm cốt lõi của C#, đặc biệt là lập trình hướng đối tượng qua việc thiết kế các lớp Ran, TaiKhoan, Setting. Kỹ năng làm việc với Windows Forms cũng được nâng cao, từ việc thiết kế giao diện bằng cách kéo thả các control cho đến việc lập trình xử lý sự kiện (event handling) cho các nút bấm, phím nhấn và timer. Đặc biệt, kỹ năng sử dụng lớp Graphics để vẽ và điều khiển các đối tượng đồ họa 2D là một trong những thành tựu kỹ thuật quan trọng nhất của đồ án.

5.2. Phân tích thiết kế giao diện người dùng UI hoàn chỉnh

Sản phẩm cuối cùng có một hệ thống giao diện người dùng (UI) hoàn chỉnh và thân thiện. Hệ thống bao gồm nhiều form khác nhau, mỗi form đảm nhận một chức năng riêng biệt: DangNhap, DangKy, MenuForm, SetMap, SetRan, các form chơi game (FormChinhDe, FormChinhVua, FormChinhKho), và form thông báo kết thúc (GameOver). Việc thiết kế giao diện được thực hiện cẩn thận để đảm bảo tính dễ sử dụng, từ việc điều hướng menu đến hiển thị thông tin điểm số và mạng sống một cách rõ ràng trong khi chơi. Điều này cho thấy sự chú trọng đến trải nghiệm người dùng, một yếu tố quan trọng trong phát triển phần mềm.

5.3. Tổng kết các ưu điểm và hạn chế còn tồn tại của dự án

Đồ án có nhiều ưu điểm nổi bật như tính đa chức năng, tích hợp thành công cơ sở dữ liệu và có giao diện thân thiện. Tuy nhiên, theo báo cáo, dự án vẫn còn một số hạn chế. Hạn chế lớn nhất là game chỉ hỗ trợ chế độ chơi đơn. Bên cạnh đó, mặc dù game hoạt động mượt mà, mã nguồn vẫn còn có thể được tối ưu hóa hơn nữa để cải thiện hiệu suất, đặc biệt là ở các cấp độ khó với nhiều vật cản. Việc nhận diện được những hạn chế này cho thấy tư duy phản biện và định hướng phát triển rõ ràng của nhóm thực hiện.

VI. Bí quyết phát triển tương lai cho đồ án game rắn săn mồi

Một đồ án thành công không chỉ nằm ở sản phẩm hiện tại mà còn ở tiềm năng phát triển trong tương lai. Đồ án game rắn săn mồi này đã đặt một nền móng vững chắc, cho phép mở rộng và cải tiến theo nhiều hướng khác nhau để trở thành một sản phẩm hoàn thiện và hấp dẫn hơn. Hướng phát triển quan trọng và tham vọng nhất được đề cập trong báo cáo là xây dựng chế độ chơi trực tuyến nhiều người (multiplayer). Đây là một bước tiến lớn, đòi hỏi việc nghiên cứu và áp dụng các công nghệ mạng, thiết kế lại cơ sở dữ liệu để xử lý trạng thái game của nhiều người chơi cùng lúc và giải quyết các vấn đề về độ trễ và đồng bộ hóa. Việc này không chỉ tăng tính cạnh tranh mà còn mở ra một cộng đồng người chơi xung quanh sản phẩm. Ngoài ra, việc cải tiến hiệu suất và tối ưu hóa mã nguồn là một nhiệm vụ cần thiết. Có thể áp dụng các kỹ thuật như double buffering để việc vẽ đồ họa trở nên mượt mà hơn, hoặc tái cấu trúc lại các thuật toán xử lý va chạm để chúng hoạt động hiệu quả hơn, đặc biệt khi số lượng vật cản tăng lên. Cuối cùng, việc mở rộng nội dung game là một hướng đi không thể thiếu để giữ chân người chơi. Có thể thêm các tính năng như cho phép người chơi tự tạo map, bổ sung nhiều loại rắn với các kỹ năng đặc biệt, hoặc thêm các vật phẩm (power-ups) mới trong màn chơi. Những định hướng này cho thấy đồ án không phải là điểm kết thúc, mà là điểm khởi đầu cho một sản phẩm tiềm năng.

6.1. Hướng phát triển chế độ chơi trực tuyến cho nhiều người

Chuyển đổi từ game chơi đơn sang game nhiều người chơi trực tuyến là một thử thách lớn nhưng đầy hứa hẹn. Điều này đòi hỏi phải xây dựng một kiến trúc client-server. Server sẽ chịu trách nhiệm quản lý logic chính của game, trạng thái của tất cả người chơi và đồng bộ hóa dữ liệu. Client (ứng dụng game của người chơi) sẽ gửi các hành động (như phím di chuyển) lên server và nhận lại trạng thái game để hiển thị. Cần nghiên cứu các công nghệ mạng như Socket programming hoặc các thư viện cấp cao hơn để hiện thực hóa tính năng này. Cơ sở dữ liệu cũng cần được mở rộng để quản lý phòng chơi và bảng xếp hạng trực tuyến.

6.2. Các phương pháp cải tiến hiệu suất và tối ưu hóa mã nguồn

Để game chạy mượt hơn, đặc biệt trên các máy tính cấu hình thấp, việc tối ưu hóa là rất quan trọng. Một trong những kỹ thuật phổ biến trong lập trình game 2D trên Windows Forms là double buffering. Kỹ thuật này bao gồm việc vẽ toàn bộ khung hình lên một bộ đệm ẩn (off-screen buffer) trước, sau đó mới vẽ toàn bộ bộ đệm này lên màn hình chỉ trong một thao tác. Điều này giúp loại bỏ hoàn toàn hiện tượng nhấp nháy (flickering). Ngoài ra, có thể xem xét lại các vòng lặp trong game, đặc biệt là vòng lặp kiểm tra va chạm, để giảm số lượng phép tính không cần thiết trong mỗi khung hình.

6.3. Ý tưởng mở rộng tính năng map loại rắn và vật phẩm

Để tăng giá trị chơi lại của game, việc bổ sung nội dung mới là rất cần thiết. Một hệ thống cho phép người chơi tự thiết kế màn chơi (map editor) và chia sẻ với người khác sẽ tạo ra một cộng đồng sáng tạo. Có thể thêm vào các loại rắn khác nhau, mỗi loại có một ưu điểm riêng (ví dụ: rắn đi nhanh hơn, rắn có thể đi xuyên tường trong thời gian ngắn). Các vật phẩm (power-ups) xuất hiện ngẫu nhiên trên bản đồ cũng là một ý tưởng hay, ví dụ như vật phẩm làm chậm thời gian, nhân đôi điểm, hoặc tạm thời bất tử. Những tính năng này sẽ làm cho mỗi lần chơi trở nên mới mẻ và thú vị hơn.

11/09/2025

Trích đoạn nội dung tài liệu

Chương 1 Giới thiệu đề tài 1. Tên đề tài - _ Trò chơi ran sin méi 1. Mô tả đề tài - Tro choi ran sin méi là một trò chơi cô điển, trong đó người chơi điều khiển một con rắn di chuyên xung quanh màn hình đề ăn các vật phâm. - Khi an duoc mot vat pham, con ran sé tang kích thước và tốc độ di chuyền.

Người chơi sẽ thua cuộc nếu con rắn chạm vào chướng ngại vật, bấy hoặc tự cắn vào chính bản thân. - _ Các nhiệm vu ma dé tai thực hiện - - Tạo ra một trò chơi răn săn môi với các chức năng chính sau : o_ Điều khiên con rắn di chuyển xung quanh màn hình o_ Ăn các vật phâm đề tăng kích thước và tốc độ con rắn o_ Tránh các chướng ngại vật và bấy o_ Thuật toán để con rắn tự di chuyên - - Tạo ra các map khác nhau với mức độ khó tăng dần - Các yêu cầu cần đạt được : « - Trò chơi phải có giao diện trực quan, đễ nhìn và dễ sử dụng « - Trò chơi phải có lối chơi hấp dẫn, lôi cuỗn người chơi « - Trò chơi phải có độ khó tăng dần để người chơi có thé thứ thách bản thân 1. Lý đo chọn đề tài - _ Trò chơi rắn săn môi là một trò chơi cô điển, đã có mặt từ rất lâu và vẫn được nhiều người yêu thích 11 Trò chơi có lối chơi đơn giản nhưng hấp dẫn, phù hợp với nhiều đối tượng người chơi Trò chơi có thê được phát triển trên nhiều nền tảng khác nhau, bao gồm máy tính, điện thoại, máy tính bảng 1. Các chức năng chính của đề tài - Điều khiển con rắn di chuyên: Người chơi có thế điều khiến con rắn di chuyển bằng các phím mũi tên trên bàn phím hoặc các nút điều khiến trên màn hình cảm ứng.

- An cac vat phâm: Khi con rắn di chuyến vào vị trí của một vật phẩm, vật phâm đó sẽ biến mắt và con rắn sẽ tăng kích thước. - Tránh các chướng ngại vật và bấy: Trên màn hình sẽ xuất hiện các chướng ngại vật vả bay. Nếu con ran chạm vào các chướng ngại vật hoặc bay, người chơi sẽ thua cuộc. - Thuật toán để con rắn tự di chuyên: Con rắn sẽ tự di chuyền theo một thuật toán đã được định sẵn.

Người chơi có thể thay đổi thuật toán này để tạo ra các lối chơi khác nhau. Công nghệ sử dụng - Công nghệ đồ họa: Trò chơi sẽ sử dụng công nghệ đồ họa 2D đề tạo ra hình ảnh và hiệu ứng trong game. - Ngôn ngữ C# lập trình WindowForm - SQL Server 1. Môi trường lập trình - Microsoft Visual Studio 2022 1.

Công cụ hỗ trợ (nếu có) -_ Draw.io: Thiết kế sơ đồ thuật toán - GitHub : Quan ly project 12 Chương2 GIỚI THIỆU CÔNG NGHỆ 2. Giới thiệu - Windows Forms (WinForms) la GUI mã nguồn mở và miễn phí được bao gồm như một phần cua Microsoft.NET Framework hoặc Mono Framework, cung cấp nền tảng để viết các ứng đụng khách phong phú cho máy tính. Mặc dủ nó được coi là sự thay thế cho Thư viện lớp nền tảng Microsoft Foundation của C ++ trước đây và phức tạp hơn, nhưng nó không cung cấp mô hình tương đương và chỉ hoạt động như một nền tảng cho tầng giao điện người dùng trong một giải pháp nhiều tầng. Lịch sử - Windows Forms phát hành lần đầu vào 13 - 2 - 2002.

Giống như Tóm tắt Window Toolkit (AWT), API Java tương đương, các biểu mẫu Windows là một cách sớm và đễ dàng đề cung cấp các thành phần giao điện người dùng đồ họa cho. Các biểu mẫu Windows được xây dựng trên API Windows hiện có và một số điều khiến chỉ quấn các thành phần Windows bên dưới. Một số phương thức cho phép truy cập trực tiếp vào các cuộc gọi lại Win32, không khả dụng trong các nền tảng không phải Windows. Chức năng - Cung cấp các control hỗ trợ tính năng kéo thả để thiết kế giao diện người dùng, nhờ vậy, việc xây dựng, phát triển các ứng dụng trở nên đễ dàng.

Áp dụng - Thiết kế cũng như xây đựng các form trong tmg dụng ví dụ như: FormChinhDe, FormChinhVua, FormChinhKho. và hỗ trợ tạo các class như Ran, VatCan. Giới thiệu Microsoft SQL Server là một hệ quan tri co so di liệu quan hệ được phát triển bởi Microsoft. Là một máy chủ cơ sở dữ liệu, nó là một sản phẩm phần mềm có chức năng chính là lưu trữ và truy xuất đữ liệu theo yêu cầu của các ứng dụng phần mềm 4 khác.

Có thế chạy trên cùng một máy tính hoặc trên một máy tính khác trên mạng (bao gồm cả Internet). Lịch sử Microsoft SQL Server bắt đầu với sản phẩm Microsoft SQL Server đầu tiên SQL SQL Server 10, may chu 16-bit cho hé diéu hanh OS/2 vao nam 1989 và kéo dai dén ngay hién tai. Chire nang Lưu trữ và truy xuất đữ liệu theo yêu cầu của các ứng dụng phần mềm khác. Áp dụng Tạo cơ sở đữ liệu TaiKhoan dùng để lưu trữ phần lớn các thông tin của ứng dụng ví nhụ như: Tên tài khoản, mật khẩu, gmail, level cua tai khoan va diém cao nhât ở mức đề, vừa, khó của tài khoản đó.

14 Chuong 3 THIET KE HE THONG 3. Mô ta bài toán Snake Game là một trò chơi điện tử cổ điển được phát hành lần đầu tiên vào năm 1976. Trò chơi này yêu cầu người chơi điều khiến một con rắn ăn các hạt thức ăn xuất hiện trên màn hình. Khi con rắn ăn các hạt thức ăn, nó sẽ phát triển chiều đài.

Nếu con rắn chạm vào chính nó hoặc các cạnh của mản hình, trò chơi sẽ kết thúc. Snake Game vẫn là một trong những trò chơi điện tử phô biến nhất mọi thời đại. Nó có sẵn trên nhiều nền tảng khác nhau, bao gồm điện thoại thông minh, máy tính bảng, máy tính và các thiết bị chơi game. Độ phô biến Theo một cuộc khảo sát do Statista thực hiện vào năm 2022, Snake Came là trò chơi điện tử được chơi nhiều nhất trên thế giới.

Cuộc khảo sát cho thấy rằng 72% người chơi điện tử đã chơi Saake Game ít nhất một lần. Trò chơi này phố biến ở mọi lứa tuôi và giới tính. Nó đặc biệt phô biến ở trẻ em và thanh thiêu niên. Các phiên bản hiện đại Snake Game đã được làm mới và cải tiền nhiều lần trong những năm qua.

Các phiên bản hiện đại của trò chơi thường có dé họa đẹp hơn, các chế độ chơi mới và các tính năng bồ sung. Xác định các chức năng của hệ thống Các chức năng của hệ thống trong trò chơi Snake bao gồm: - - Đăng nhập, đăng kí: Người chơi sử dụng tài khoản để có thê tham gia trò chơi. ¢ Chon map, chon răn và chọn thức ăn « - Khởi tạo trò chơi: Tạo màn hình trò chơi, khởi tạo các đỗi tượng cần thiết, chăng hạn như con rắn, thức ăn, v. 15 « - Điều khiến con rắn: Nhận đầu vào từ người chơi và điều khiển con rắn di chuyền.

* = Tạo thức ăn: Tạo thức ăn mới trên màn hình khi con rắn ăn hết thức ăn hiện có. - - Kiếm tra va chạm: Kiểm tra xem con rắn có va chạm với chính nó hoặc các chướng ngại vật hay không. « - Kết thúc trò chơi: Kết thúc trò chơi khi con rắn va chạm với chính nó hoặc các chướng ngại vật, lưu lại điểm cao nhat ứng với mỗi map 3. Thiết kẽ cơ sở dữ liệu create table TatiKhoan ( TenTaiKhoan varchar(50) not null primary key, MatKhau varchar(50), Email varchar(50), Level varchar(50), de varchar(50), vua varchar(50), kho varchar(50), ) Ta sé tạo bảng TaiKhoan với các thuộc tính: » - TenTaiKhoan: Tài khoản người dùng.

- - MatKhau: Mật khâu người dùng. ¢ Email: Email người dùng. * Level: Luu tri level account. - - de: Lưu trữ điểm cao nhất của người chơi tại map đễ.

« _ vua: Lưu trữ điểm cao nhất của người chơi tại map vừa. - - kho: Lưu trữ điểm cao nhất của người chơi tại map khó. Database diagram trong SQL ÿ TenTaiKhoan MatKhau Email [Level] de vua kho Hình 3. Datatabase diagram trong AQL 3.

Cấu trúc các bảng dữ liệu trong SQL Bảng 3.1 Cau tric bang TaiKhoan Field Name Field Type Descriptions TenTaiKhoan varchar(50) Tên tài khoản MatKhau varchar(50) Mật khâu Email varchar(50) Email Level varchar(50) Level cua tai khoan de varchar(50) Mức điểm cao nhất ở mức dễ vua varchar(50) Mức điểm cao nhất ở mức vừa kho varchar(50) Mức điểm cao nhất ở mức khó 3. Dữ liệu mẫu Bảng 3.2 Dữ liệu mẫu của bảng TaiKhoan TenTaiKhoan | MatKhau | Email Level |de |vua | kho aaal23 123456 phonglon@gmail.com | 3 200 | 1000 | 200 abe1234 abe123 abc1234@gmail.com | 3 150 | 2000 | 300 abc 12345 abc 123 abc 12345@gmail.com | 2 300 | 2000 | 400 huong 123 123456789 | huong|23@gmail. Thuật toán Bước |: Khoi tao con ran gồm các đốt và thiết kế đầu rắn đề có thể phân biệt được giữa đầu rắn và đuôi rắn. Bước 2: Lập trình dé rắn có thé di chuyên theo hướng các phím mũi trên trên ban phim máy tính và lập trình hàm rắn lớn.

Bước 3: Khởi tạo mỗi đề rắn có thê ăn được. Bước 4: Lập trình dé khi rắn ăn mỗi sẽ dài thêm một đốt đồng thời mỗi của rắn ngẫu nhiên xuất hiện ở vị trí khác. Bước 5: Khởi tạo vật cản. Bước 6: Khởi tạo bức tường.

Bước 7: Lập trình hàm hàm rắn chết. Bươc 8: Lập trình để khi rắn cắn vào thân sẽ chết. Bước 9: Lập trình đề khi rắn chạm vào bức tường sẽ chết. Bước I0: Xây dựng hệ thống tính điểm trong game, lưu điểm cao nhất Bước II: Xây dựng chức năng tăng tốc trong game.

Bước I2: Xây dựng tính mạng cho rắn. Bước 13: Kết thúc. Sơ đồ phân tích trò chơi Đăng nhập Level = 3 ĐÚNG SAT Level = 2 Mang giảm Điểm + 10 fees aoelen The a + Sumit Level +1 Đúng <iieng => <Gin= > Level < 3 GAMEOVER Hình 3.2 Sơ đồ phân tích trò chơi 19 Chwong 4 XAY DUNG UNG DUNG 4. Thiết kế và tao cac class 4.

Thiết kế lớp Setting - Đoạn mã này định nghĩa một lớp có tên Setting trong namespace C# là Snake. Lớp này được thiết kế theo mô hình singleton, có nghĩa là chỉ có một thê hiện của lớp Setting có thê tồn tại trong toàn bộ ứng dụng. - Dưới đây là phân tích về chức năng của lớp này: Mô hình Thiết kế Singleton - Lớp này tuân theo mô hình singleton sử dụng một thể hiện tĩnh riêng của nó (instance). Thuộc tính Instance làm cho chỉ có một thể hiện của lớp Setting được tạo.

instance; Instance if (instance == { instance = i return instance; Hình 4.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ