Tạo bố cục thị trấn trong lưới


9

Tôi muốn tạo bố cục thị trấn trong một ô vuông (được hiển thị bằng phương pháp đo, nhưng điều đó không quan trọng) bằng cách sử dụng các yếu tố sau:

  • Nhà 2x2
  • Đường, rộng 1 đơn vị
  • Kênh, rộng 1 đơn vị

Bố cục mẫu:

Bố cục mẫu

  • Tôi luôn có một số lượng nhà cụ thể, và càng nhiều đường và kênh cần thiết để kết nối tất cả.
  • Những ngôi nhà cần phải có hai đoạn đường trước cửa trước (luôn luôn chỉ về bên phải)
  • Nó sẽ là tốt đẹp để có các lĩnh vực cỏ (trống rỗng) ở giữa.

Có một thuật toán làm sẵn cho việc này? Nếu không, tôi nên nghĩ đến hướng nào để thực hiện điều này?

Câu trả lời:


8

Có nhiều cách để đi tùy thuộc vào chính xác cách bạn muốn. Dưới đây là một phác thảo sơ bộ về một cách mà tôi nghĩ sẽ phù hợp với mô tả của bạn:

Đầu tiên tạo ra các kênh. Sau đó bắt đầu đặt nhà ngẫu nhiên, đối với mỗi ngôi nhà bạn đặt, đặt con đường phía trước nó và vẽ một con đường từ đoạn đường đó đến mạng lưới đường hiện có, nếu không thể hoặc đặt con đường phía trước dẫn đến một khối 2x2 xấu xí đường định vị lại nhà. Phát hiện một số điểm đường gần nhau nhưng cách xa nhau theo các đường hiện có và cố gắng tạo một số phím tắt cho những điểm đó.

Đây là loại công cụ hầu hết đều cần thử nghiệm và kinh nghiệm. Thường thì bạn sẽ nhận được kết quả tốt từ việc tạo một số chi tiết theo cách ngẫu nhiên, xác định xem nó có đáp ứng một số tiêu chí hay không và hoàn tác lại nếu không.

Đối với nhiệm vụ chính xác này, bạn chắc chắn cũng sẽ cần nắm bắt tốt việc tìm đường cơ bản, trừ khi bạn đã là một chuyên gia, hãy đọc về chủ đề này. Và hãy nhớ rằng, tìm đường không chỉ là về con đường ngắn nhất, đối với phần cuối cùng của mô tả của tôi, bạn có thể muốn đưa ra một số trọng lượng để sử dụng lại các đường dẫn đã có.

Đây hoàn toàn không phải là một nhiệm vụ dễ dàng, nếu bạn gặp khó khăn hãy quay lại và cho chúng tôi xem mã của bạn và một số ví dụ đầu ra và giải thích chi tiết bạn muốn nó khác biệt như thế nào.

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.