Bạn đã vấp vào các cạnh của một cuộc chiến tranh tôn giáo lớn, xoay quanh câu hỏi
có nên chương trình hướng sự kiện được viết bằng nhiều chủ đề hoặc sử dụng một sự kiện duy nhất vòng?
Trại chủ tin rằng các thực thể riêng lẻ, như "người chơi", được lập trình dễ dàng hơn khi được viết làm chủ đề thực tế, có thể giải thích rõ ràng bộ xử lý khi chúng không còn cần đến nữa. Thông tin về trạng thái của người chơi có thể được lưu trữ trong các biến cục bộ và ngay cả trong bộ đếm chương trình. Nhưng với chủ đề bạn có thể phải lo lắng về nguyên tử, bế tắc, và những niềm vui khác của lập trình đồng thời.
Trại hướng sự kiện tin rằng đơn giản hơn để có được toàn bộ ứng dụng ngay khi mọi thực thể có khả năng phản hồi mọi sự kiện và thực thể đó hoàn toàn kiểm soát bộ xử lý trong khoảng thời gian cần xử lý sự kiện (mà tốt hơn là hữu hạn, và thường tốt hơn là ngắn). Không có lo lắng về đồng thời bởi vì mọi trình xử lý sự kiện thực thi nguyên tử, nhưng có một chi phí lập trình: khi xử lý sự kiện kết thúc, tất cả các thủ tục của nó thoát, và vì vậy thông tin về trạng thái của nó phải được lưu trữ trong các trường của đối tượng được cấp phát trên đống.
Câu chuyện chủ đề có xu hướng tỏa sáng khi một thực thể có luồng điều khiển phức tạp hoặc muốn sử dụng nhiều trừu tượng — cả hai đều khó mã mà không có chủ đề. Câu chuyện sự kiện có xu hướng tỏa sáng khi các trình xử lý khá đơn giản — thật tuyệt vời khi mọi trình xử lý thực thi nguyên tử mà không phải lo lắng về nó và nó đơn giản hóa giao tiếp giữa các thực thể.
Trước khi tiếp tục nhiệm vụ của bạn, tìm nhóm tôn giáo mà người hướng dẫn của bạn thuộc về.
Vì bạn đã hỏi về chủ đề, tôi đặc biệt khuyên bạn nên sử dụng thư viện chủ đề và kênh trong số C Interfaces and Implementations của Dave Hanson. Phần mềm này là miễn phí, và cuốn sách có giá trị mua — nó bao gồm nhiều module khác mà sẽ cực kỳ hữu ích cho bất cứ ai viết bài tập về nhà trong C.
Tôi có nên làm việc mỗi người chơi như một 'ngã ba' và các chủ đề trên các ngã ba, hoặc chỉ tạo ra một số chủ đề cho người chơi và liên kết chúng bằng cách nào đó?
Trừ khi bạn được yêu cầu sử dụng fork
, tôi muốn tránh nó — cơ chế giao tiếp giữa các quy trình Unix không dễ sử dụng. Nếu bạn có thể nhận được thư viện Hanson, tôi muốn nói tạo một chuỗi cho mỗi người chơi và yêu cầu người chơi giao tiếp với nhau (và với máy chủ trò chơi, cũng phải là chủ đề) bằng cách sử dụng các kênh của Hanson.
Đoán của tôi là nhiệm vụ của bạn là bạn sử dụng một chuỗi cho mỗi người chơi. Nếu vậy, bạn nên làm rõ điều đó trong câu hỏi của bạn. Ngoài ra, là mỗi người chơi một người và các chủ đề giao diện của mình cho các trò chơi, hoặc là chủ đề người chơi? Ngoài ra, bạn cần phải chạy cái nền tảng nào? Tôi giả định một số * nix. – nategoose
@nateg, vì anh ta không yêu cầu mã, nền tảng là tất cả nhưng không liên quan. –
@Henk: Windows có nĩa() không? Tôi nghĩ nền tảng này có liên quan ở mức trừu tượng đó. – Duncan