2010-09-23 21 views
16
của Java

Tôi sẵn sàng phát triển một trò chơi bóng đá cho Android.Máy trạng thái hữu hạn (FSM) và Java

Vì sự phức tạp của AI, tôi thực sự nghĩ rằng tôi cần phải thiết kế nó bằng cách sử dụng FSM (Máy nhà nước hữu hạn) và không có công tắc quái vật.

Googling xung quanh tôi tìm thấy một số FSM viết bằng Java, nhưng không có gì rõ ràng tương thích với Android: Tôi tự hỏi nếu có ai đó ở đây đã sử dụng FSM trước đó cho nền tảng đó.

+0

Bạn có được xây dựng bằng con quạ không? –

Trả lời

2

Android có Máy phân cấp trạng thái phân cấp nội bộ (HSM), tích hợp với Hàng đợi thông báo Android.

Nội bộ là nội bộ, do đó bạn không thể truy cập rõ ràng từ SDK.

Tuy nhiên, nếu bạn tuân thủ các điều khoản của giấy phép Apache 2.0, bạn có thể tạo phiên bản của riêng mình.
https://android.googlesource.com/platform/frameworks/base/+/gingerbread-release/core/java/com/android/internal/util/HierarchicalStateMachine.java

Edit:
Lớp này bây giờ được gọi StateMachine.

+0

Tôi đã tự làm xong. Tôi muốn có thể khai báo một bảng chuyển tiếp trạng thái trong mã. https://github.com/olibye/guvna – byeo

8

Tôi đang tìm kiếm FSM cho Android cách đây vài tháng nhưng không thể tìm thấy bất kỳ thứ gì phù hợp, vì vậy tôi phải tự tạo cho mình.

Tôi đã sử dụng nó trong một vài dự án và rất vui. Nó làm cho mã sạch hơn và dễ sử dụng. Nếu ai đó vẫn đang tìm kiếm một máy trạng thái cho java, hãy kiểm tra EasyFlow.

Bạn cũng có thể contribute cho dự án.

+0

dự án không còn được hỗ trợ, lãng phí thời gian của tôi –

+0

Hãy xem http://stackoverflow.com/a/43964422/2267723 này –

1

Triển khai máy trạng thái (FSM) này được sử dụng trong Android và được cung cấp bởi Google có vẻ là một lựa chọn tốt. Bạn có thể lấy nó here on Github.

Bạn có thể sử dụng lớp StateMachine để xác định trạng thái, số nguyên ban đầu, bạn có thể thực hiện các tác vụ khi bạn nhập hoặc thoát trạng thái, bạn có thể gửi sự kiện và sự kiện trì hoãn để triển khai thời gian chờ.

Tôi không tìm thấy nhiều lựa chọn thay thế khác, nhưng triển khai này chứa tất cả các tính năng tôi đang tìm kiếm. Đây là một phần của dự án Android, vì vậy tôi cho rằng đây là một thử nghiệm tốt. Hy vọng điều này giúp đỡ.