Cài đặt Game of Life của Conway cho Windows 3.1x và hệ điều hành mới hơn
Bài viết giới thiệu một dự án mã nguồn mở thú vị: cài đặt trò chơi Game of Life của Conway dành cho Windows 3.1x trở lên, cùng với hai tiện ích khác. Source code chứa nhiều kỹ thuật lập trình Windows cổ điển, đáng học hỏi cho ai quan tâm đến lịch sử phát triển phần mềm.
Game of Life (Trò chơi Sự sống) — một bản cài đặt kinh điển của thuật toán tế bào tự động nổi tiếng do John Conway nghĩ ra, được viết cho nền tảng Windows 3.1x và các phiên bản sau đó. Dù bản thân chương trình bị tác giả đánh giá là quá hạn chế, nhưng mã nguồn của nó lại thực sự đáng giá với những ai muốn tìm hiểu về kỹ thuật lập trình Windows thời kỳ đầu.
Điểm đáng chú ý trong mã nguồn
Phần đáng giá nhất của dự án nằm ở source code, nơi chứa những mẹo và kỹ thuật lập trình hệ thống khá đặc sắc, bao gồm:
- Kết hợp mã C 16-bit và assembly 32-bit thông qua thư viện
winmem32.dll— một cách làm khá phức tạp nhưng cho thấy sự linh hoạt cần thiết trong môi trường Windows 3.1. - Chuyển đổi giữa các DIB (Device-Independent Bitmap) có tổ chức màu sắc khác nhau.
- Quản lý bảng màu (palette) nhỏ một cách phi tuyến — một kỹ năng quan trọng khi làm việc với đồ họa trên các hệ thống cũ.
- Xử lý nền và cập nhật cửa sổ — giúp chương trình chạy mượt mà trong khi vẫn đáp ứng được các sự kiện của hệ điều hành.
Kèm theo hai tiện ích khác
Ngoài Game of Life, tác giả còn chia sẻ hai chương trình miễn phí khác trong cùng bộ sưu tập:
- GDI Rescuer: Một tiện ích lập trình dành riêng cho bản Debug của Windows 3.1x, dùng để tìm và xử lý các đối tượng GDI bị rò rỉ (left lying around) bởi các chương trình khác. Công cụ này tận dụng
toolhelp.dllvà một số tính năng không được tài liệu hóa, rất hữu ích trong việc dọn dẹp bộ nhớ và tài nguyên đồ họa. - Code Breaker: Một phiên bản của trò chơi Bulls & Cows (còn được biết đến với tên gọi Mastermind). Đây là chương trình Windows nghiêm túc đầu tiên tác giả viết và cũng là chương trình đầu tiên ông bán được. Dù mã nguồn không có gì đặc biệt (thậm chí thiếu cả comment), trò chơi vẫn rất thú vị và có kèm file trợ giúp.
Tất cả các chương trình đều là phần mềm tự do theo giấy phép GNU General Public License, và tất nhiên đi kèm với mã nguồn hoàn chỉnh. Hãy chia sẻ và tận hưởng!
Bối cảnh và giá trị lịch sử
Đối với độc giả Việt Nam, những dòng code này giống như một cỗ máy thời gian đưa chúng ta trở lại thời kỳ Windows 3.1 — khi hệ điều hành mới chỉ có giao diện 16-bit và việc lập trình đòi hỏi sự tỉ mỉ đến từng byte. Các kỹ thuật như trộn mã 16-bit/32-bit hay quản lý tài nguyên GDI ngày nay có thể đã lỗi thời, nhưng việc đọc và hiểu chúng giúp lập trình viên trẻ hình dung rõ hơn về sự tiến hóa của nền tảng Windows mà chúng ta đang sử dụng hàng ngày.
Dự án vẫn có thể chạy trên các hệ điều hành mới hơn nhờ lớp tương thích, nhưng tác giả cũng lưu ý rằng ông không còn thực hiện lập trình Windows từ năm 1997 và chỉ có thể trả lời các câu hỏi ở mức cơ bản nhất như WinMain() và WM_PAINT. Dẫu vậy, mã nguồn này vẫn là một tài liệu học tập quý giá cho những ai muốn khám phá lịch sử phát triển phần mềm.