Làm cho các hằng số / bảng trò chơi có sẵn cho các lớp / thói quen logic trò chơi theo cách thức mô đun


8

Giả sử tôi có một trò chơi trong đó có một số hằng và biểu đồ được xác định trước (biểu đồ XP, chi phí hàng hóa, v.v.). Chúng có thể được xác định khi chạy hoặc tải từ các tệp khi khởi động. Câu hỏi là làm thế nào những thói quen logic đó nên truy cập vào hằng và biểu đồ?

Ví dụ, tôi có thể thử sử dụng các biến toàn cục, nhưng điều đó khiến tất cả các lớp dựa vào các biến được liên kết chặt chẽ với chúng.

Câu trả lời:


3

Nó thực sự phụ thuộc vào loại (và số lượng / kích thước) dữ liệu bạn đang nói đến. Nếu đó là một chút dữ liệu có thể được lưu giữ an toàn trong bộ nhớ trong suốt thời gian thực hiện, một cái gì đó giống như một lớp tĩnh sẽ là đề xuất của tôi.

public static class Constants
{
    public static int[] Levels = { 0, 100, 200, 400, 800, 1600, 3200, 6400 }
}

Bằng cách này, kinh nghiệm cần có để đạt Cấp X là Constatns.Levels[X - 1];và việc truy cập dữ liệu khác cũng dễ dàng, nếu bạn cần một bộ sưu tập Vật phẩm, bạn cũng có thể thêm nó vào đây, nếu dữ liệu Vật phẩm của bạn quá lớn để lưu trữ trong bộ nhớ, bạn có thể cũng thực hiện logic bộ nhớ đệm trong lớp tĩnh.

Làm cho nó tĩnh giữ một bản sao duy nhất trong bộ nhớ và đảm bảo rằng mọi máy khách của lớp này sẽ nhận được cùng một dữ liệu.

Mặc dù điều này "kết hợp chặt chẽ" các lớp của bạn với nhau, nhưng khớp nối chặt chẽ không phải là điều xấu nếu thiết kế thực sự cần nó, trong trường hợp thống kê Item và biểu đồ XP, thì IMHO, hợp lý để kết hợp chặt chẽ các lớp này. Tôi luôn cố gắng giữ cho nó đơn giản, cho đến khi một cái gì đó buộc nó phải phức tạp.


3

Tạo một đối tượng để đại diện cho mỗi phần và chuyển đối tượng đó vào các hàm cần nó. Điều này không khác với bất kỳ dữ liệu nào khác - bạn chuyển nó đi khắp nơi.


2

Tôi khuyên bạn nên sử dụng một lớp có thể truy cập toàn cầu - hãy gọi nó là Từ điển (sử dụng thuật ngữ flash). Từ điển về cơ bản là một danh sách các cặp giá trị tên (dữ liệu, quy tắc, hằng số) bạn muốn truy cập trong toàn bộ ứng dụng của mình. Sử dụng tên (chuỗi) các lớp khác sẽ có thể truy xuất các giá trị (số, chuỗi, lớp, v.v.) được giao tiếp vào mã của bạn. Vì vậy, việc triển khai của bạn về cơ bản là IOC ngoại trừ việc khởi tạo đã được thực hiện trước đó trong Từ điển. Bạn cũng có thể nghe những thay đổi của Từ điển, v.v.


Cách tiếp cận này rất tốt để gỡ lỗi - bạn có thể chuyển từ điển sang máy chủ http và chỉnh sửa các số đang bay từ một ứng dụng khác hoặc in các giá trị trên màn hình, v.v.
tenpn

0

Chà, nếu bạn đang sử dụng Java thì tôi khuyên bạn nên đưa dữ liệu của mình vào các tệp XML và sử dụng một cái gì đó như JAXB hoặc đơn giản-xml để có được dữ liệu mà bạn muốn vào đúng đối tượng.


1
Nếu tôi không hoàn toàn sai, câu hỏi không phải là về cách lưu trữ và tải dữ liệu, mà là cách cung cấp quyền truy cập vào nó sau khi được tải (thiết kế phần mềm, OOP).
bummzack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.