Tôi đang làm việc trên trò chơi 2D với chế độ xem cuộn (nghĩ Red Alert hoặc Zelda) nhưng tôi đang cố gắng vẽ bản vẽ.Sắp xếp nhanh khi đặt hàng hiếm khi thay đổi
Về cơ bản có hai loại đối tượng được vẽ trên bản đồ. Một số có vị trí cố định (như cây cối và tòa nhà) và những người khác di chuyển xung quanh (người chơi, kẻ thù, mũi tên bay).
Đối với mọi thứ xuất hiện trước mặt nhau theo cách chính xác, chúng cần được vẽ theo thứ tự cụ thể (đối tượng ở xa trước và làm việc với "máy ảnh").
Ngay bây giờ, tôi sắp xếp danh sách tất cả các đối tượng (cả hai loại) mỗi khi trò chơi cập nhật (100 lần mỗi giây) và cảm thấy như một sự lãng phí lớn thời gian của CPU. Thứ tự của các đối tượng rất hiếm khi thay đổi, và khi chúng làm chúng thường chỉ di chuyển một vị trí lên hoặc xuống trong danh sách.
Một vấn đề khác là chỉ các đối tượng trên màn hình thực sự cần được xem xét. Vì các bản đồ có thể trở nên khá lớn với 1000 đối tượng tôi không muốn sắp xếp chúng 100 lần mỗi giây.
Bạn đề nghị tôi giải quyết vấn đề này như thế nào?
[Straight Insertion Sort] (http://en.wikipedia.org/wiki/Adaptive_sort# Ví dụ) hoặc [Shell Sort] (http://en.wikipedia.org/wiki/Shell_sort) có vẻ là thuật toán tốt cho việc này. Hầu hết các đối tượng chuyển động sẽ di chuyển khá sâu để cấu trúc dữ liệu có thể sẽ làm chậm mọi thứ. –