Tôi đang viết một phiên bản máy tính của trò chơi Dominion . Đây là một trò chơi bài theo lượt, trong đó thẻ hành động, thẻ kho báu và thẻ điểm chiến thắng được tích lũy vào bộ bài cá nhân của người chơi. Tôi có cấu trúc lớp phát triển khá tốt, và tôi đang bắt đầu thiết kế logic trò chơi. Tôi đang sử dụng python và tôi có thể thêm GUI đơn giản với pygame sau.
Trình tự lần lượt của người chơi được điều chỉnh bởi một bộ máy trạng thái rất đơn giản. Xoay qua chiều kim đồng hồ và người chơi không thể thoát khỏi trò chơi trước khi kết thúc. Chơi một lượt cũng là một máy trạng thái; nói chung, người chơi trải qua "giai đoạn hành động", "giai đoạn mua" và "giai đoạn làm sạch" (theo thứ tự đó). Dựa trên câu trả lời cho câu hỏi Làm thế nào để triển khai công cụ trò chơi theo lượt? , máy trạng thái là một kỹ thuật tiêu chuẩn cho tình huống này.
Vấn đề của tôi là trong giai đoạn hành động của người chơi, cô ấy có thể sử dụng thẻ hành động có tác dụng phụ, cho bản thân hoặc cho một hoặc nhiều người chơi khác. Ví dụ: một thẻ hành động cho phép người chơi thực hiện lượt thứ hai ngay sau khi kết thúc lượt chơi hiện tại. Một thẻ hành động khác khiến tất cả những người chơi khác loại bỏ hai thẻ khỏi tay họ. Tuy nhiên, một thẻ hành động khác không làm được gì cho lượt hiện tại, nhưng cho phép người chơi rút thêm thẻ vào lượt tiếp theo. Để làm cho mọi thứ thậm chí phức tạp hơn, thường có những bản mở rộng mới cho trò chơi có thêm thẻ mới. Dường như với tôi, việc mã hóa cứng kết quả của mọi thẻ hành động vào bộ máy trạng thái của trò chơi sẽ vừa xấu vừa không thể chấp nhận được. Câu trả lời cho Vòng lặp chiến lược theo lượt không đi vào một mức độ chi tiết giải quyết các thiết kế để giải quyết vấn đề này.
Tôi nên sử dụng loại mô hình lập trình nào để bao hàm thực tế rằng mô hình chung cho việc thay phiên có thể được sửa đổi bằng các hành động diễn ra trong lượt? Đối tượng trò chơi có nên theo dõi tác động của mọi thẻ hành động không? Hoặc, nếu các thẻ nên thực hiện các hiệu ứng của riêng chúng (ví dụ: bằng cách triển khai một giao diện), thiết lập nào là bắt buộc để cung cấp cho chúng đủ sức mạnh? Tôi đã nghĩ ra một vài giải pháp cho vấn đề này, nhưng tôi tự hỏi liệu có một cách tiêu chuẩn để giải quyết nó. Cụ thể, tôi muốn biết đối tượng / lớp / bất cứ điều gì chịu trách nhiệm theo dõi các hành động mà mọi người chơi phải thực hiện do hậu quả của thẻ hành động đang được chơi và cũng liên quan đến những thay đổi tạm thời trong chuỗi thông thường Máy trạng thái lần lượt.