2009-04-09 37 views
10

Tôi hiện đang viết một trò chơi Java rất cơ bản dựa trên ý tưởng của Theme Hospital.Hướng dẫn chơi 2D Java?

Tôi khá mới đối với Java và hiện đang học tại trường đại học năm đầu tiên của tôi. Tôi đã làm Java gần hai năm nay và tắt, nhưng cuối cùng tôi đã dành thời gian của mình cho một dự án phong nha.

Tôi đang ở giai đoạn mà tôi cần phải tạo một người (bệnh nhân) để được nhập viện. Họ cần phải đi đến bàn tiếp tân, sau đó là văn phòng của GP, và sau đó trở lại vị trí bắt đầu của họ.

Tôi đã xem xét tìm đường dẫn A *, nhưng dường như điều đó thực sự phức tạp đối với tôi. Tôi hiểu nó hoạt động như thế nào, nhưng tôi không chắc chắn làm thế nào để thực hiện nó vào trò chơi của mình.

Cho đến nay, người dùng có thể đặt bàn tiếp tân và xây dựng văn phòng GP. Mỗi phòng trong số này có một "điểm sử dụng" sẽ là nơi mà bệnh nhân phải đến. Các ô vuông chỉ có thể đầy hoặc không, sẽ không có địa hình khác.

Tôi do dự khi dán bất kỳ mã nào, vì nó lộn xộn như tôi đã học được rất nhiều kỹ thuật mới để thực hiện với GUI trong vài tháng qua. Kế hoạch của tôi là đi đến cột mốc 1, khiến bệnh nhân đi đến bàn làm việc rồi đến văn phòng rồi rời đi. Một khi tôi có điều này, tôi sẽ dọn dẹp mã nhiều hơn.

Tôi đã thấy nhiều triển khai của A * và nhiều loại khác nhau. Ai đó có thể cho tôi một điểm khởi đầu mà tôi có thể làm việc cùng không? Tôi có nên thử và điều chỉnh một tập hợp các lớp đã được viết hay cố gắng tự viết từ đầu?

+0

xem bài đăng của tôi để có liên kết đến triển khai A *. – TofuBeer

Trả lời

6

Bạn muốn A *, đó là việc triển khai tối ưu cho đường dẫn dựa trên lưới.

này có thể giúp bạn ra ngoài:

http://www.cokeandcode.com/main/tutorials/path-finding/

EDIT: Liên kết preceeding là tốt cho cả hai như là một bộ implementable các lớp và như một hướng dẫn để tùy biến con đường tìm kiếm phương pháp để đáp ứng sự hài lòng của bạn .

+0

Ah vâng, tôi đã tìm thấy tháng này trước khi nghiên cứu công cụ đầu tiên cho ý tưởng trò chơi của tôi. Tôi sẽ đọc lại nó, xem nó có giúp ích gì không. Cảm ơn :) – Relequestual

4

Sách AI for Game Developers có giải thích rất tốt về A *. Tôi đã thực sự viết một bài thực hiện hôm nay ... nếu tôi làm tôi sẽ ném mã lên đây.

Mã được thực hiện, nó quá lớn để đặt ở đây, vì vậy bạn có thể lấy nó từ: https://chaos.bcit.ca/svn/public/astar/ (chứng chỉ tự ký, nhưng máy chủ không làm gì xấu).

Tôi đã theo mã giả trong cuốn sách cho hầu hết các phần, nhưng tôi đã làm mọi thứ hướng đối tượng nhiều hơn bất kỳ thứ gì tôi đã thấy cho đến nay đối với A *.

Bạn có một Mê cung bao gồm Gạch. Mỗi Tile có một Location và một Obstacle (null nếu không có trở ngại nào).

Bạn có thể sử dụng PathFinder (như AStar) để tìm đường đi ngắn nhất giữa vị trí bắt đầu và kết thúc đã cho. Bạn có được một con đường trở lại trong đó bao gồm các gạch bạn cần phải đi qua để có được từ đầu đến cuối.

Bạn có thể thay đổi phép tính heuristic bằng cách cung cấp một HeuristicCalculator khác (hiện tại chỉ kiểm tra xem có một Chướng ngại vật hay không và tìm ra số Gạch ngắn nhất để đi qua, bạn có thể thêm trọng số vào các Trở ngại khác nhau cho Ví dụ nếu bạn không thích mặc định).

Mã này là giấy phép theo LGPL, vì vậy nếu bạn thực hiện thay đổi và phân phối ứng dụng, bạn phải thực hiện các thay đổi có sẵn. Vui lòng gửi báo cáo lỗi/bản sửa lỗi tới địa chỉ email trong nhận xét giấy phép (được tìm thấy trong mỗi tiêu đề).

Tôi sẽ không bao giờ nhận được lời bình luận sau bài kiểm tra, nhưng tôi nghĩ nó khá đơn giản.

+0

wow tôi thích SO, phản ứng rất nhanh. Cảm ơn, điều đó thật tuyệt vời nếu bạn đã làm. Nếu tôi đã sử dụng triển khai của bạn, tôi sẽ tất nhiên cung cấp cho bạn tín dụng đầy đủ! – Relequestual

+0

không phải lo lắng (chỉ một vài cựu sinh viên biết tên thật của tôi ở đây anyways :-) – TofuBeer

+1

Miễn là bạn đăng nội dung thú vị, rộng hoặc thú vị, bạn sẽ nhận được phản hồi nhanh. Những câu hỏi kỹ thuật chính xác ở những khu vực mà không có nhiều người có kinh nghiệm, hoặc những câu hỏi được viết ít chi tiết và bạn sẽ thấy bên SO ít ồn ào hơn. :) –

2

Một cách tự nhiên bạn sẽ học được rất nhiều về việc hướng dẫn nếu bạn viết triển khai của riêng mình. Nhưng bạn cũng sẽ dành rất nhiều thời gian để làm điều đó.

Kiểm tra thư viện JGraphT liên quan đến đồ thị nói chung, có API tốt và hỗ trợ more thuật toán đường đi ngắn nhất so với chỉ A *.

+0

Cảm ơn bạn đã liên kết JGraphT. –

5

Đây là pathfinding bài nhiều thông tin nhất mà tôi đã nhìn thấy cho đến nay: http://www.ai-blog.net/archives/000152.html

+1

Bài viết hay, cảm ơn. –

+0

Liên kết bị hỏng. – Laurent

+1

Liên kết (hiệu quả) bị hỏng. Nó chuyển hướng đến trang chính của trang web đó. –

0

Có lẽ bạn tìm thấy những gì bạn muốn, nhưng đây là một liên kết với một lời giải thích tốt đẹp của A * pathfinding. Tôi đã phải thực hiện A * cho trò chơi của mình trong C++ và điều đó đã giúp tôi hiểu rất nhiều về cách hoạt động của trò chơi.

http://www.abdn.ac.uk/~csc245/teaching/CS1015/practicals/aStarTutorial.htm

+0

Liên kết bị hỏng (hiệu quả): * Bạn không có quyền truy cập /~csc245/teaching/CS1015/practicals/aStarTutorial.htm trên máy chủ này. * –

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