- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Đây là một dự án trò chơi nhỏ dành cho MinGW/Windows sử dụng SDL.
Tôi đang làm việc trên một công cụ vật lý và ý tưởng là có mộtVật lý::Đối tượng
, tất cả các đối tượng vật lý phải bắt nguồn từ nó, và nó sẽ có tính toàn cầu Đăng ký hệ thống của riêng bạn trong Vật lý::
class (đây là mẫu đơn hình), do đó người dùng không cần theo dõi những đối tượng nào được đưa vào phép tính vật lý và chỉ cần gọi một hàm như Vật lý::Hệ thống::PerformTimestepCalculation(double dt )
.
Điều này hoạt động rất tốt, tôi thậm chí còn sử dụng một lớp dẫn xuất Vật lý::Vòng tròn
Để thực hiện nó, đây là một vòng tròn 2D. Tôi khá hài lòng với khả năng phát hiện va chạm dự đoán, mặc dù tôi vẫn cần tối ưu hóa nó.
Dù sao đi nữa, khi tôi bắt đầu thêm các giá trị nguyên thủy khác để đưa vào tính toán, tôi gặp phảirắc rối, chẳng hạn như dòng. Vật lý::Hệ thống::PerformTimestepCalculation(double dt)
đầy đủ các cặp Đối tượng::GetID()
hoặc các lệnh gọi hàm tương tự (có thể là một cách để tránh Dynamic_cast<>), nhưng tôi cảm thấy bẩn.
tôi đã làm một ít đọcvà nhận ra rằng các thành phần trong hệ thống phân cấp của tôi không thể thay thế được (tức là sự va chạm giữa hai vòng tròn rất khác với sự va chạm giữa hai đường thẳng).
tôi thích của tôi Vật lý::Đối tượng
向 System
Cách các lớp tự "đăng ký" để chúng tự động được đưa vào tính toán, tôi thực sự không muốn đánh mất điều này.
Phải có một số con đường thiết kế hợp lý khác. Làm cách nào tôi có thể thiết kế lại mọi thứ tốt hơn để những vật thể không thể thay thế không gây cản trở?
Đã chỉnh sửa chỉ để tham khảo:Cuối cùng, tôi chia nhỏ các thuộc tính thực thể và hình dạng, tương tự như mô tả trong câu trả lời được chấp nhận, tương tự như mô hình hệ thống thành phần thực thể. Điều này có nghĩa là tôi vẫn có logic "đây là đường tròn hay đường thẳng, đây là đường thẳng hay đường tròn?", nhưng tôi không còn giả vờ rằng tính đa hình đang giúp tôi ở đây nữa. Điều này cũng có nghĩa là tôi sử dụng một số loại nhà máy và nhiều thế giới tính toán có thể xảy ra cùng một lúc!
câu trả lời hay nhất
Các công cụ vật lý có sẵn công khai thành công nhất không quá nặng về mặt "mẫu" hoặc "thiết kế hướng đối tượng".
Đây là một bản tóm tắt ủng hộ khẳng định táo bạo được thừa nhận của tôi:
sóc chuột - Viết bằng C là đủ rồi.
Box2d - Viết bằng C++, ở đây có tính đa hình. Có một hệ thống phân cấp hình dạng (lớp cơ sở b2Shape) với một số hàm ảo. Tuy nhiên, sự trừu tượng này bị rò rỉ như một cái sàng và bạn sẽ tìm thấy nhiều phép biến đổi đối với các lớp lá trong toàn bộ mã nguồn. Ngoài ra còn có một hệ thống phân cấp "liên hệ", đã được chứng minh là thành công hơn, mặc dù việc viết lại nó mà không có tính đa hình bằng cách sử dụng một hàm ảo sẽ là chuyện nhỏ (tôi tin rằng sóc chuột sử dụng con trỏ hàm). b2Body là một lớp dùng để biểu diễn các phần cứng và nó không ảo.
Viên đạn - Được viết bằng C++ và được sử dụng trong một số lượng lớn trò chơi. Rất nhiều tính năng, nhiều mã (so với hai tính năng còn lại). Thực tế, có một lớp cơ sở dành cho phần mở rộng biểu diễn phần thân cứng và phần thân mềm, nhưng chỉ một phần nhỏ của mã có thể sử dụng nó. Hầu hết các chức năng ảo của lớp cơ sở đều liên quan đến tuần tự hóa (lưu/tải trạng thái động cơ). Phần mềm không thể triển khai hai chức năng ảo còn lại, một trong số đó có TODO thông báo cho chúng tôi rằng chúng tôi cần dọn dẹp một số lỗi. Đây không hẳn là sự chứng thực rõ ràng về tính đa hình trong động cơ vật lý.
Có rất nhiều điều để nói và tôi thậm chí còn chưa thực sự bắt đầu trả lời câu hỏi của bạn. Tôi muốn nhấn mạnh rằng tính đa hình không phải là thứ được triển khai hiệu quả trong các công cụ vật lý hiện có. Điều này có lẽ không phải do tác giả không "hiểu" được hướng đối tượng.
Vì vậy, dù sao đi nữa, lời khuyên của tôi là: hãy từ bỏ tính đa hình cho các lớp thực thể của bạn. Cuối cùng, bạn sẽ không có 100 loại khác nhau mà không thể tái tạo lại sau này, dữ liệu hình dạng của công cụ vật lý của bạn sẽ khá đồng nhất (đa giác lồi, hình hộp, hình cầu, v.v.) và dữ liệu thực thể của bạn có thể sẽ còn đồng nhất hơn nữa (có thể chỉ cần cơ thể cứng nhắc).
Một sai lầm khác mà tôi nghĩ bạn đang mắc phải là chỉ hỗ trợ một Physics::System. Sẽ rất hữu ích nếu có thể mô phỏng cơ thể của nhau một cách độc lập (ví dụ: đối với trò chơi hai người chơi) và cách dễ nhất để làm điều này là hỗ trợ nhiều Vật lý::Hệ thống.
Với suy nghĩ này, "mẫu" rõ ràng nhất cần làm theo là mẫu nhà máy. Khi người dùng muốn tạo một vật cứng, họ cần yêu cầu Physics::System (hoạt động như một nhà máy) làm điều đó cho họ, vì vậy trong Physics::System của bạn:
// trả về một con trỏ thông minh sẽ không phải là không hợp lý, nhưng tôi sẽ trả về một con trỏ thô để đơn giản:
cứng nhắc_body_t* AddBody( body_params_t const& body_params );
Trong mã khách hàng:
Circle_params_t vòng tròn(1.f /*radius*/);
body_params_t b( 1.f /*mass*/, &circle /*shape params*/, xform /*system Transform*/ );
cứng_body_t* body = vật lý_system.AddBody( b );
Dù sao cũng có chút lảng vảng. Hy vọng điều này sẽ giúp. Ít nhất tôi muốn chỉ cho bạn box2d. Nó được viết bằng phương ngữ C++ rất đơn giản và các mẫu được áp dụng sẽ phù hợp với công cụ của bạn, cho dù là 3D hay 2D.
Về các quyết định kế thừa/giao diện cho c++ - công cụ vật lý, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/9339129/
Có công cụ nào hiển thị số lượng trường hợp thử nghiệm để cung cấp phạm vi quyết định/điều kiện không? Ví dụ: if(x>0) if(x0) 3 trường hợp là đủ để bao gồm các quyết định/điều kiện. if(x>0) if(x0) 4 trường hợp là đủ để bao gồm các quyết định/điều kiện. Điều này có đúng không?
Tôi đang cố gắng tìm một cách hay để triển khai thuật toán ra quyết định dễ duy trì vì các điều kiện đưa ra quyết định có thể thay đổi thường xuyên. Tôi sẽ cố gắng cụ thể hơn bằng một ví dụ: Giả sử tôi đang cố gắng quản lý một nhóm đầu bếp nấu ăn trong bếp của một nhà hàng. Đầu bếp nào cũng biết nấu ăn
Tôi cần một Hoạt động trên Android sẽ hiển thị một trường như tiêu đề có hình ảnh và bên dưới nó là một số mục được tạo động (tôi nghĩ là từ 1 đến 100). Nếu tôi không muốn phần đầu cuộn, tôi sẽ sử dụng Li
Tôi đang viết hàm để cung cấp giá trị (giá trị) tối đa từ danh sách các giá trị. Câu hỏi của tôi là nếu tất cả các giá trị đều giống nhau thì sao? Ví dụ: 30,29,34,45 là đơn giản. Giá trị tối đa là 45. Bây giờ, 20,20,20,20 là giá trị tối đa ở đây 20? hoặc không
Tôi cần biết cái nào nhanh hơn để truy xuất nhật ký sự kiện, nhưng tôi không thể tìm thấy nó trong so sánh: Giả sử rằng tất cả các cột cần tra cứu đều có chỉ mục btree và tất cả các khóa trong đối tượng json cần được tra cứu có chỉ số GIN. trường hợp 1: ID hoạt động (trong
Tôi cần hiển thị một bảng trong ứng dụng iPhone của mình: cả số lượng ô lẫn nội dung đều không được biết tại thời điểm biên dịch, b
đóng cửa. Câu hỏi này cần được hỏi tập trung hơn. Câu trả lời không được chấp nhận vào thời điểm này. Bạn muốn cải thiện vấn đề này? Đã cập nhật câu hỏi để chỉ tập trung vào một vấn đề chỉnh sửa bài đăng này. Đã đóng 9 năm trước. Cải thiện truy vấn này
Đây là một dự án trò chơi nhỏ dành cho MinGW/Windows sử dụng SDL. Tôi đang làm việc trên một công cụ vật lý và ý tưởng là có một Physics::Object mà tất cả các đối tượng vật lý nên bắt nguồn từ đó và nó sẽ nằm trong Phys toàn cầu
Tôi có một truy vấn LINQ nhỏ để điền vào điều khiển thả xuống (ứng dụng WinForms Telerik) trong đó hàng dữ liệu hiển thị hai giá trị (ITNBR và mô tả): var query = from i in db.ItemMa
Tôi đang cố gắng sử dụng antlr 3 để tạo từ vựng và trình phân tích cú pháp cho ngữ pháp của mình. Ai đó có thể giải thích lỗi này có nghĩa là gì? lỗi (211): Tg:14:6: quy tắc [gây tử vong] stmt không có L
Gói partykit thể hiện cây quyết định rất tốt. Vấn đề duy nhất tôi gặp phải là các nhãn rất dài và sau đó chúng chồng lên nhau. Có thể di chuyển các nhãn này để ngăn chặn nó không (xem mũi tên màu xanh trong hình bên dưới)? thư viện ("rpart") thư viện ("partykit
Vì vậy, tôi đã nhìn xung quanh và dường như không thể tìm ra giải pháp phù hợp cho vấn đề của mình. Vấn đề nằm ở bố cục của tôi, tôi muốn có thể chọn xem mục điều hướng có tồn tại trong thời gian chạy hay không dựa trên những gì có trong cơ sở dữ liệu: Bố cục hiện tại (Thanh điều hướng) @Html.Acti
Tôi hiện đang tạo một sổ ghi chép jupyter học máy như một dự án nhỏ và muốn hiển thị các cây quyết định của mình. Tuy nhiên, tất cả các tùy chọn tôi có thể tìm thấy là xuất biểu đồ rồi tải hình ảnh, việc này khá phức tạp. Vì vậy, tôi muốn hỏi liệu có cách nào để hiển thị đồ họa trực tiếp mà không cần xuất nó không.
ngữ pháp AdifyMapReducePredicate: PREDICATE_BRANCH |
Tôi là một lập trình viên xuất sắc, rất giỏi!