Lời nói đầu:
Xin chào anh em lập trình viên! Tuần này, mình sẽ dành thời gian viết các bài hướng dẫn để giúp anh em làm sản phẩm, ứng dụng và cả game. Mục tiêu của chúng ta là học cùng với thực hành.
Để đáp ứng nhu cầu của nhiều bạn học lập trình game bằng C++ hoặc Java, mình đã chọn làm một số game cổ điển bằng C# để hướng dẫn. Viết bài không chỉ đơn thuần là công việc, mà còn là quá trình tốn công sức để biên soạn, chụp ảnh và giải thích. Vì vậy, nếu tốc độ viết bài chậm hay câu cú còn lủng củng, mong anh em thông cảm nhé!
Bạn đang xem: Lập trình game Winform với C# (Phần 1)
Mình sẽ không chia sẻ toàn bộ mã nguồn, mà thay vào đó là hướng dẫn và giúp đỡ anh em hiểu cách làm. Nếu bạn muốn tìm hiểu thêm, hãy tự tìm hiểu và nghiên cứu kỹ hơn.
Và quan trọng nhất, trên tinh thần học hỏi, hãy thảo luận và góp ý khi gặp vấn đề khó hiểu.
Lưu ý đặc biệt: Các bài hướng dẫn chỉ dành cho những bạn đã có kiến thức cơ bản về lập trình và một chút hiểu biết về thuật toán. Nếu bạn chưa có, hãy bắt đầu từ các khóa học cơ bản trước khi tiếp tục.
Ý tưởng và giải pháp:
Xem thêm : Top 15 ngôn ngữ lập trình phổ biến nhất thế giới
Trong bài viết này, chúng ta sẽ làm một game Pokemon bằng Winform. Dù đã có nhiều hướng dẫn về làm game này bằng C++ hoặc Java trên blog này, nhưng làm bằng Winform trong C# chỉ mất khoảng 20 phút. Vì vậy, mình sẽ hướng dẫn lại trong một seri gồm 5-7 bài viết. Quan trọng nhất là bạn phải thực hành nhiều, rèn kỹ năng.
Trước tiên, hãy xem một game tương tự trên trang web: https://gamevui.vn/pikachu/game
Hãy để ý các điểm sau:
- Phần game chính (phần bảng chứa các Pokemon) là một ma trận chữ nhật, có kích thước là chiều cao * chiều rộng.
- Số lượng Pokemon phải là số chẵn, do đó chiều cao * chiều rộng phải chia hết cho 2.
- Mỗi ô trong ma trận chứa một Pokemon ngẫu nhiên.
- Mỗi loại Pokemon có số lượng chẵn.
Ý tưởng:
- Ta tạo một bảng gồm chiều rộng * chiều cao ô chữ nhật (chiều rộng hoặc chiều cao phải là số chẵn). Mỗi ô trong bảng chứa một số đại diện cho một loại Pokemon.
- Mỗi loại Pokemon phải có số lượng chẵn trong bảng.
- Bảng không có ô nào trống.
- Về giao diện, ta sử dụng một PictureBox để biểu diễn một ô chứa Pokemon. Ta sẽ xếp liên tiếp các PictureBox vào nhau để tạo ra bảng.
Với bài tập này, ta nên tạo một lớp GameModel để biểu diễn dữ liệu (bao gồm chiều cao, chiều rộng và bảng chứa các Pikachu dưới dạng số). Đối với giao diện, ta sử dụng Form và thêm các PictureBox vào Form.
Bắt đầu làm:
- Chuẩn bị:
- Hãy tự tìm và tải bộ ảnh Pokemon, đặt tên theo thứ tự của chúng. Ví dụ: 1.png, 2.png, 3.png. Bạn có thể tải các ảnh từ trang web https://gamevui.vn/pikachu/game (đã được đặt tên theo số thứ tự).
- Tạo dự án:
- Sử dụng Visual Studio để tạo dự án Winform như hình dưới đây:
- Tạo lớp GameModel:
- Lớp này sẽ biểu diễn dữ liệu của bảng:
- Có các thuộc tính width, height và int[,] table để biểu diễn các Pokemon trong bảng.
- Có phương thức khởi tạo để tạo bảng và sinh ngẫu nhiên các Pokemon vào bảng.
- Bạn cần tự viết thêm các phương thức Width, Height và getCell(int row, col) để lấy dữ liệu tương ứng từ bảng.
- Hãy đọc và phân tích đoạn code sinh ma trận ngẫu nhiên của mình.
- Cập nhật lại file Form1.cs:
- Thêm mã sau vào Form1.cs đã có sẵn:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
GameModel gameModel = new GameModel(20, 10, 10); // Tạo một đối tượng GameModel với kích thước bảng là 20x10 và 10 loại Pokemon
for (int i = 0; i < gameModel.Height; i++)
{
for (int j = 0; j < gameModel.Width; j++)
{
PictureBox px = new PictureBox();
px.Width = 40;
px.Height = 50;
px.Top = 10 + i * 50;
px.Left = 10 + j * 40;
string name = "pieces" + gameModel.getCell(i, j).ToString() + ".png";
px.Image = Image.FromFile(name);
this.Controls.Add(px);
}
}
}
}
- Copy ảnh đã chuẩn bị vào thư mục chứa file *.exe của dự án.
Sau đó, chạy chương trình và kiểm tra kết quả, xem có giống như hình ảnh không.
- Hãy cải tiến chương trình để hiển thị nhiều Pikachu hơn và hiển thị chính giữa khung cửa sổ.
Tạm kết:
Nếu bài viết này được chia sẻ trên 100 lần, mình sẽ viết tiếp phần 2 để hướng dẫn cài đặt sự kiện như khi click vào một PictureBox, thay đổi màu sắc khi click, v.v.
Hy vọng bài viết này mang lại những thông tin hữu ích và giúp anh em học lập trình game dễ dàng hơn. Hãy tiếp tục thực hiện và tham gia thảo luận nếu gặp vấn đề khó hiểu.
Nguồn: https://laptrinhc.edu.vn
Danh mục: Ngôn ngữ lập trình