This article has been localized into Vietnamese by the community.
In this article series, we're building a complete Snake game from scratch. It makes sense to start with the Introduction and then work your way through the articles one by one, to get the full understanding.
If you want to get the complete source code for the game at once, to get started modifying and learning from it right now, consider downloading all our samples!
Giới thiệu
Tóm tắt nhanh về bài viết giới thiệu này: Chúng tôi sẽ triển khai trò chơi Snake cổ điển trong WPF và kết quả cuối cùng sẽ giống như thế này:
Tạo trò chơi thường là lý do mà rất nhiều người, đặc biệt là giới trẻ, bị cuốn hút vào việc học lập trình. Nhưng câu hỏi thường là: Làm thế nào để tôi bắt đầu và tôi cần gì? Chà, bạn cần một ngôn ngữ lập trình, như C#, C++ hoặc bất kỳ ngôn ngữ phổ biến nào khác, và nếu bạn thông thạo ngôn ngữ ưa thích của mình, bạn không thực sự cần bất cứ điều gì khác: Chỉ cần bắt đầu ở phía dưới bằng cách thêm pixel vào màn hình và tại một số điểm, bạn có thể có một trò chơi chạy được.
Tuy nhiên, hầu hết mọi người sẽ thích một chút giúp đỡ với những thứ cấp thấp. Tại sao phải thêm pixel vào màn hình theo cách thủ công nếu có thư viện hoặc framework có thể làm điều đó cho bạn, để bạn có thể tập trung vào việc xây dựng một trò chơi giải trí? Có rất nhiều framework sẽ giúp bạn làm điều này, và thực sự, một trong số đó là WPF framework.
Hiện đã được cấp, WPF không phải là lựa chọn rõ ràng nhất khi bạn muốn tạo trò chơi - đó chắc chắn là một framework tập trung chủ yếu vào việc tạo giao diện người dùng cho các ứng dụng hướng kinh doanh. Tuy nhiên, vẫn có nhiều yếu tố trong WPF framework mà bạn có thể sử dụng để tạo trò chơi và có lẽ không kém phần quan trọng: Bạn có tất cả các cơ chế để vẽ và điều khiển Window trong Windows.
Vì vậy, nếu bạn đang muốn tạo ra một trò chơi đơn giản, WPF thực sự có thể là một lựa chọn tốt. Ít nhất nó sẽ là một trợ giúp tuyệt vời cho tất cả các khía cạnh cơ bản nhất, như tạo Window, vẽ một khu vực đơn giản cho trò chơi, v.v. Nếu bạn muốn thêm những thứ như đồ họa 3D tiên tiến và các đối tượng chuyển động nhanh, có thể cần thêm trợ giúp từ người khác library/framework, nhưng nó sẽ làm tốt cho một trò chơi đơn giản - ví dụ, một Snake game cổ điển!
SnakeWPF
Để chứng minh khái niệm, tôi đã quyết định tạo ra một phiên bản dựa trên WPF của trò chơi Snake cực kỳ cổ điển. Nó sẽ sử dụng WPF Window thông thường làm khu vực trò chơi của mình, cũng như các điều khiển/hình dạng WPF thông thường để tạo ra lối chơi thực tế. Lý do tại sao tôi chọn Snake là vì nó khá dễ thực hiện (không có nhiều logic để viết code) và bởi vì nó có thể được thực hiện bằng các hình hình học đơn giản như hình vuông và hình tròn, có thể được sử dụng rất dễ dàng với WPF framework. Nhưng cũng bởi vì đây vẫn là một trò chơi thực sự hài hước, mặc dù bản chất đơn giản của nó!
Nếu bạn không biết trò chơi Snake, tôi chỉ có thể cho rằng bạn chưa bao giờ sở hữu điện thoại di động Nokia vào cuối những năm 90 / đầu những năm 2000. Phiên bản đầu tiên của Snake đã được viết và trình diễn nhiều năm trước đó, nhưng nó đã trở thành một cú hích lớn khi Nokia quyết định đưa phiên bản của riêng nó vào tất cả các điện thoại di động của họ.
Trò chơi đơn giản như đang giải trí: Bạn di chuyển một con rắn ảo theo một hướng (trái, phải, lên hoặc xuống) trong cuộc săn tìm thức ăn (đôi khi là một quả táo). Khi con rắn của bạn chạm vào quả táo, nó đã bị tiêu diệt, con rắn của bạn lớn lên và một quả táo mới xuất hiện trên màn hình. Nếu bạn va vào tường hoặc đuôi rắn của riêng bạn, trò chơi kết thúc và bạn phải bắt đầu lại. Bạn càng ăn nhiều táo, bạn càng nhận được nhiều điểm nhưng càng khó để không đánh vào đuôi của chính mình.
Có NHIỀU biến thể trong trò chơi - ví dụ, tốc độ di chuyển của con rắn của bạn thường sẽ tăng lên mỗi khi bạn ăn một quả táo, làm cho nó ngày càng khó hơn, nhưng không phải tất cả các cách thực hiện của Snake đều làm điều này. Một biến thể khác là các bức tường - một số triển khai sẽ cho phép bạn đi xuyên tường và ra phía đối diện, trong khi các biến thể khác sẽ kết thúc trò chơi ngay khi bạn chạm tường.
Trong SnakeWPF của chúng tôi, các bức tường rất cứng (con rắn chết nếu nó đâm vào chúng) và tốc độ sẽ tăng theo cấp số nhân cho mỗi quả táo bạn ăn, lên đến một điểm nhất định.
Tổng kết
Trong một số bài viết tiếp theo, chúng tôi sẽ triển khai một phiên bản hay của trò chơi Snake cổ điển sử dụng WPF framework. Chúng ta sẽ bắt đầu với nền tảng trong bài viết tiếp theo và cuối cùng, chúng ta sẽ có trò chơi dựa trên WPF đầu tiên, đầy đủ chức năng.
Xin lưu ý rằng trong khi đây là hướng dẫn WPF, chúng tôi sẽ cần mã C# nhiều hơn bình thường, để triển khai logic trò chơi, v.v. Tôi sẽ cố gắng giải thích phần lớn khi chúng tôi di chuyển, nhưng trong trường hợp bạn cần thêm một chút kiến thức về C#, đừng quên rằng chúng tôi có một C# tutorial hoàn chỉnh, tuyệt vời trong mạng của chúng tôi!