2009-07-21 37 views
15

Tôi đã quyết định bắt đầu làm việc về lập trình một yêu thích cũ của tôi. Tôi đã không bao giờ làm một trò chơi trước và cũng không bao giờ thực hiện một dự án lớn trong Python.Tạo mô phỏng trò chơi bảng (Python?) (Pygame?)

Trò chơi là Avalon Hill trò chơi cũ Russian Campaign

Tôi đã chơi với Pygame một chút và đã tự hỏi nếu có những lý do để không cố gắng để làm điều này với Pygame và đi sau khi một số công cụ/ngôn ngữ khác .

Điều gì sẽ là nhược điểm khi sử dụng Pygame để tạo điều này?

Tôi không lo lắng về AI, chủ yếu là tôi chỉ muốn có phiên bản tối thiểu hai người chơi của trò chơi và chạy. Tiền thưởng sẽ là khả năng lưu trạng thái của trò chơi và cũng để chơi trên mạng.

Do's và Dont's để bắt đầu dự án này sẽ được đánh giá cao.

Trả lời

25

Tách động cơ "back-end" (theo dõi trạng thái bảng, nhận đơn đặt hàng di chuyển từ giao diện người dùng, tạo số ngẫu nhiên để giải quyết trận đánh, gửi cập nhật cho giao diện người dùng, giao dịch tiết kiệm và khôi phục các trò chơi cụ thể, ...) từ "front-end", về cơ bản cung cấp giao diện người dùng cho tất cả những điều này.

PyGame là một công nghệ phù hợp cho giao diện người dùng, nhưng bạn có thể triển khai nhiều giao diện người dùng (có thể là phần mềm PyGame, trình duyệt dựa trên trình duyệt, văn bản để gỡ lỗi, v.v.) . Back-end của khóa học có thể chăm sóc ít hơn về PyGame hoặc các công nghệ giao diện người dùng khác. Python là tốt cho hầu hết các front-end (ngoại trừ những người cần phải được trong Javascript, Actionscript, vv, nếu bạn viết front-end cho các trình duyệt, Flash, vv ;-) và chắc chắn tốt cho thre back-end.

Chạy back-end và front-end như các quy trình riêng biệt và giao tiếp đơn giản như bạn có thể - cho trò chơi theo lượt (như tôi tin là trò chơi này), XML-RPC hoặc một số biến thể đơn giản hơn (JSON tải trọng đi qua lại qua HTTP POST và trả lời cho họ, nói) sẽ có vẻ tốt nhất.

Tôi bắt đầu với back-end (có thể sử dụng JSON cho tải trọng, như tôi đã đề cập), như một máy chủ WSGI đơn giản (có thể với một liên lạc của werkzeug hoặc tương tự để trợ giúp với mdidleware), và một ứng dụng dòng lệnh gỡ lỗi đơn giản. Tại mỗi bước tôi sẽ làm giàu ở phía máy chủ (back-end) hoặc phía máy khách (front-end) cẩn thận tránh làm quá lớn HOẶC bất kỳ "bước" đồng thời nào. Tôi sẽ không sử dụng công nghệ "nặng" hay bất cứ khung công tác lớn nào làm những điều kỳ diệu sau lưng tôi (không có ORM, Django, SOAP, ...).

Đảm bảo bạn sử dụng kho lưu trữ mã nguồn tốt (ví dụ: hg, hoặc có thể svn nếu bạn biết bạn sẽ làm tất cả một mình, hoặc bazaar hoặc git nếu bạn đã biết chúng).

+0

Cảm ơn, bạn đã cho tôi rất nhiều điều để tiếp tục ... – Evan

+0

@Evan, bạn được chào đón! –

2

Tôi không nghĩ rằng bạn nên quan tâm đến hỗ trợ nhiều plateforms, tách trước kết thúc và back-kết thúc, nhiều quy trình giao tiếp sử dụng XML-RPC và JSON, máy chủ, vv

Thả tiền thưởng của bạn và tập trung vào ý tưởng chính của bạn: trò chơi theo lượt, hai người chơi. Đó là trò chơi đầu tiên của bạn, do đó bạn sẽ có rất nhiều điều để học và chăm sóc tất cả những điều này cùng một lúc có thể áp đảo.

+4

Điểm phân tách mọi thứ ra là làm cho việc thực hiện các bit hoạt động trở nên đơn giản hơn. Sau đó, khi đến lúc học Pygame, tác giả chỉ cần học Pygame, như một giao diện. Nếu không thì sprites sẽ lưu trữ trạng thái trò chơi. Pygame khó gỡ lỗi, giao diện văn bản thì không. –

Các vấn đề liên quan