C64 BASIC Dungeon Crawler phần 11: Cầu thang, tầng mới và cơ chế lên cấp

Công nghệ02 tháng 11, 2026·7 phút đọc

Loạt bài hướng dẫn lập trình game dungeon crawler bằng BASIC trên Commodore 64 bước sang phần 11, bổ sung hệ thống 5 tầng, cầu thang chỉ mở khi thu đủ chén thánh, cùng cơ chế lên cấp giúp nhân vật mạnh dần qua từng màn. Bài viết cũng giải thích cách tách hàm khởi tạo nhân vật khỏi hàm dựng bản đồ để giữ nguyên tiến trình của người chơi.

C64 BASIC Dungeon Crawler phần 11: Cầu thang, tầng mới và cơ chế lên cấp

Sau mười phần xây dựng, game dungeon crawler viết bằng BASIC trên Commodore 64 đã có thể chơi được nhưng vẫn chỉ gói gọn trong một bản đồ duy nhất. Phần 11 giải quyết điểm yếu lớn nhất đó bằng cách thêm hệ thống 5 tầng, cầu thang làm lối thoát và cơ chế lên cấp cho nhân vật.

Điểm đáng chú ý là cách tác giả tách mã nguồn thành hai thủ tục riêng biệt, giúp nhân vật giữ nguyên chỉ số khi bước sang bản đồ mới – nền tảng quan trọng để xây dựng cảm giác tiến bộ trong game.

Vì sao cảm giác tiến bộ lại quan trọng đến vậy

Theo tác giả, cảm giác tiến bộ là yếu tố quyết định giữa một "mini game chơi cho vui rồi bỏ" và một tựa game khiến người chơi ngồi lì cả ngày làm việc. Một bản đồ duy nhất, không phát triển nhân vật, không tăng độ khó – đó là tình trạng của game trước phần 11.

Dù vậy, nhiều game hay vẫn chỉ có một màn hình và không có phát triển nhân vật, nhưng chúng thường tăng dần độ khó theo thời gian chơi. Vì thế, hướng đi tiếp theo của dự án là bổ sung tiến trình, tăng độ khó và cải thiện chỉ số nhân vật.

Người đọc có thể chạy thử ngay trên trình duyệt bằng cách nạp tệp part11a.bas vào IDE trực tuyến của RGC, không cần cài đặt gì.

Giao diện game dungeon crawler C64 với các tầng và cấp độGiao diện game dungeon crawler C64 với các tầng và cấp độ

Định nghĩa lại khái niệm "tầng"

Ở phiên bản này, game có 5 tầng. Mỗi tầng tạo bản đồ mới bằng bộ sinh bản đồ của phần 10, nhưng có thêm quy tắc về vị trí và số lượng vật phẩm.

Thay vì chỉ một chén thánh, người chơi phải thu đủ tất cả chén thánh trên tầng thì mới bước được lên cầu thang. Số chén thánh tăng dần nhưng không theo quy luật cộng một đơn giản:

Công thức: CL=INT((LV+1)/2)

Trong đó LV là số tầng, CL là số chén thánh còn lại. Kết quả: tầng 1 và 2 có 1 chén, tầng 3 và 4 có 2 chén, tầng 5 có 3 chén.

Nhân vật giờ đây tồn tại xuyên suốt các tầng khi còn sống, giữ nguyên máu, chỉ số, vàng, chìa khóa và ma thuật. Cầu thang ở tầng 5 đưa người chơi thoát khỏi hầm ngục và giành chiến thắng. Màn hình kết thúc hiển thị tổng vàng kiếm được cùng tầng cao nhất đã đạt tới.

Một thủ tục duy nhất dựng nên mỗi tầng

Ở phần 10, mã khởi tạo người chơi và vẽ bản đồ nằm rải rác ở hai chỗ: lúc bắt đầu game và khi nhấn phím N để chơi mới. Phần 11 tách đôi đoạn mã này:

  • INITPLAYER xử lý mọi thứ liên quan đến nhân vật, chỉ chạy một lần mỗi ván.
  • BUILDLEVEL xử lý toàn bộ nội dung của từng tầng, chạy một lần mỗi cấp.

Đoạn mã của BUILDLEVEL đặt lại vị trí người chơi về ô xuất phát, xóa cờ thoát tầng, tính số chén thánh cần thu, rồi lần lượt gọi các thủ tục xóa bản đồ, sinh bản đồ, hiển thị, đặt vật phẩm và vẽ nhân vật.

Sự khác biệt giữa chơi mới và xuống tầng nằm ở chỗ: chơi mới gọi GOSUB INITPLAYER rồi GOSUB BUILDLEVEL, còn xuống cầu thang chỉ gọi GOSUB BUILDLEVEL. Nhờ vậy, nhân vật sống sót qua quá trình sinh bản đồ mà không bị đặt lại chỉ số.

Cầu thang và điều kiện kích hoạt

Cầu thang được đặt ngẫu nhiên vào một trong bốn phòng ở góc bản đồ, trong khi người chơi luôn xuất phát ở phòng trung tâm – nên cầu thang không bao giờ nằm chung phòng xuất phát.

Tác giả không kiểm tra xem cầu thang có thể tiếp cận được hay không, vì quy tắc sinh bản đồ của phần 10 đảm bảo mọi phòng đều có đường đi tới nhau. Tuy nhiên, phòng chứa cầu thang được ép về loại phòng trống để tránh việc cầu thang chặn lối đi.

Khi người chơi bước vào cầu thang mà vẫn còn chén thánh chưa nhặt, game sẽ đẩy lùi nhân vật và hiện thông báo "CHALICES LEFT" kèm con số cụ thể. Khi đã thu đủ, cầu thang bật cờ WN=1 và vòng lặp chính sẽ chuyển sang thủ tục NEXTLEVEL.

Cờ này trước đây có nghĩa là "thắng cả game", nhưng giờ chỉ còn nghĩa là "thắng tầng hiện tại". Cách dùng cờ rồi nhảy GOTO vẫn giữ nguyên như phần 10, vì nếu dựng tầng mới ngay bên trong một GOSUB thì ngăn xếp của BASIC sẽ bị treo lệnh mỗi lần.

Cầu thang hoạt động sau khi thu đủ chén thánhCầu thang hoạt động sau khi thu đủ chén thánh

Cơ chế lên cấp

Mỗi tầng mới, nhân vật được hồi máu bằng một nửa chỉ số thể chất (làm tròn xuống). Ngoài ra, tầng chẵn cộng 1 sức mạnh, tầng lẻ cộng 1 nhanh nhẹn.

Đoạn mã dùng phép toán LV AND 1 để xác định tầng đang xét là chẵn hay lẻ: kết quả bằng 1 với số lẻ và 0 với số chẵn, đồng thời cũng chính là chỉ số mảng cần tăng.

Lớp giáp được tính lại sau đó vì nó phụ thuộc vào nhanh nhẹn. Tác giả thừa nhận đây chủ yếu là minh họa cách làm, còn việc cân bằng chỉ số thực sự hữu ích sẽ để dành cho giai đoạn hoàn thiện.

Thuốc tím cuối cùng cũng có tác dụng

Nhặt được bình thuốc * giờ cộng 50 điểm ma thuật, tối đa 100. Chưa có gì tiêu hao ma thuật ở phiên bản này, nhưng chỉ số đã được đếm và hiển thị, sẵn sàng cho đòn tấn công tầm xa ở phần 12.

Các con số này khớp với phiên bản C của game: mỗi bình thuốc cho 50 điểm, mỗi phép tốn 5 điểm cộng thêm 1 điểm cho mỗi ô mà phép bay qua.

Màn hình trạng thái hiển thị ma thuật và cấp độ nhân vậtMàn hình trạng thái hiển thị ma thuật và cấp độ nhân vật

Thanh trạng thái chật hơn

Việc thêm hai bộ đếm mới – ma thuật và cấp độ – khiến khoảng cách giữa các chỉ số bị thu từ hai dấu cách xuống còn một. Thanh trạng thái hiện dùng 31 trên tổng số 40 ký tự khả dụng của dòng lệnh.

Thanh này được dựng bằng hai lệnh PRINT, lệnh đầu kết thúc bằng dấu chấm phẩy để con trỏ ở lại trên cùng dòng cho phần thứ hai.

Những việc còn dang dở

Danh sách cần làm vẫn còn khá dài:

  • Tăng độ khó: mỗi tầng vẫn chỉ có 3 đến 6 con goblin như nhau.
  • Ma thuật chưa dùng được: có thể thu thập nhưng chưa có phép để thi triển.
  • Tối ưu bộ nhớ: vẫn còn RAM trống, liệu có thể nhét thêm vật phẩm và đa dạng hóa lối chơi?

Tác giả cũng đặt ra vài câu hỏi mở cho cộng đồng: cầu thang có nên đi được cả hai chiều và quái vật có hồi sinh khi quay lại tầng cũ? Chìa khóa có nên mang sang tầng sau? Việc lên cấp có nên để người chơi tự chọn chỉ số? Và game nên kéo dài bao nhiêu tầng trước khi kết thúc?

Với những ai quan tâm đến lập trình game cổ điển trên Commodore 64, đây là loạt bài thực hành đáng theo dõi – vừa học BASIC, vừa thấy rõ cách một ý tưởng game nhỏ dần trở thành sản phẩm hoàn chỉnh.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗