Táo trò chơi mô phỏng - Không thể làm cho nó hoạt động [đã đóng]


11

Tôi đang cố gắng tạo ra một trò chơi với vật lý newtonian.

Trước khi bạn đọc phần còn lại, đây là câu hỏi chính của tôi, tôi đang cố gắng tìm câu trả lời cho:

  • Tôi liên tục nhận được một lỗi xuất hiện trong một cửa sổ sau khi tôi thử và chạy mã của mình. Tôi thiếu thư viện hoặc dll nào?

Tôi đã có một quả táo, một quả cam và một cây bút chì. Tôi đã đọc hầu hết các tài liệu với động cơ vật lý viên đạn, nhưng dường như tôi không thể khiến quả táo hoạt động giống như một mảnh giấy (2d-ish). Động cơ vật lý Box2d và đó không phải là những gì tôi muốn. Tôi không thích những chiếc hộp trong đời thực, nói gì đến thế giới mạng.

Tôi muốn quả táo trôi xuống đất, đung đưa qua lại như một tờ giấy. Trang web này đã cung cấp một số thông tin hữu ích mà tôi đã tích hợp vào mã của mình: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Xin-GIÚP !! -Simulation-paper-float-to-ground

Tôi có ý tưởng này cho một trò chơi trong đó bạn làm cho các vật thể hoạt động giống như các loại đối tượng khác, nhưng các mô phỏng của tôi về trò chơi không hoạt động.

Tôi đã trải qua quá nhiều loại táo để đếm, và không ai trong số họ thậm chí đến gần. Tôi đã thử tìm kiếm những người khác đã thử những thứ tương tự, (sử dụng googles như http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), nhưng không có quả táo nào được trả lại!

Vì vậy, tôi nghĩ rằng tôi sẽ đi vào lãnh thổ mới ở đây (đừng lo lắng, tôi sẽ mở nguồn kỹ thuật của mình) và đó là lý do tại sao mọi thứ không hoạt động với tôi.

Tôi đã thử lập trình các loại táo khác nhau, nhưng có lẽ tôi cần một quả táo mạng? Tôi không biết lấy một trong số đó ở đâu, có thể tại một nơi như thế này: http://cyberapples.com/ Trang web đó hiện đã ngừng hoạt động - chỉ nói về một số thùng rác cgi hoặc một cái gì đó. Bất kỳ lời khuyên về điều này là tốt?

Đây là một phần trong mã của tôi liên quan đến quả táo mô phỏng một công cụ trò chơi:

///... /* setup other objects in the room and other stuff */ ...

// see http://www.orangepippin.com/apples/arlet-swiss-gourmet
// for more arlet apple details
paper_2d_behaving_apple = new ArletApple[);

/ setup the arlet apple's general characteristics
paper_2d_behaving_apple.species = SPECIES.MALUS_DOMESTICA;
paper_2d_behaving_apple.parentage = PARENTAGE.GOLDEN_DELICIOUS_X_IDARED:
paper_2d_behaving_apple.introduced = make_year(1958);
paper_2d_behaving_apple.fruitColor = COLORS.red;
paper_2d_behaving_apple.fleshCOlor = APPLE_FLESH_COLORS::CREAM;
paper_2d_behaving_apple.fruitSize = GENERIC_FRUIT_SIZES.MEDIUM;
paper_2d_behaving_apple.GoodFor.add("eating fresh");
paper_2d_behaving_apple.GoodFor.add("cooking");
paper_2d_behaving_apple.GoodFor.add("use / keeping: 3 months or more");
paper_2d_behaving_apple.GoodFor.add("ripening PERIOD: 3 months or more");
paper_2d_behaving_apple.diseaseResistances = [DISEASE_RES::SCAB, DISEASE_RES::MILDEW];
///... (I cut some of this out for brevity's sake) ...

///* setup this specific apple's characteristics
paper_2d_behaving_apple.base_color = 0xff2000;
paper_2d_behaving_apple.bumpMap = BUMP_MAP_APPLE;
paper_2d_behaving_apple.texture = TEXTURE_REALISTIC_APPLE;
paper_2d_behaving_apple.feel_texture = SMOOTH;
paper_2d_behaving_apple.has_small_orangey_stripes = TRUE;
paper_2d_behaving_apple.DoesntHaveStem = FALSE;
paper_2d_behaving_apple.juicy = true; // needs a lowercase true for some reason
paper_2d_behaving_apple.has_bugs = false; // heck no it doesn't, I only buy good apples
///... (again I cut some stuff out so this post would'n't be too long) ...

// from http://www.3dbuzz.com/vbforum/showthread.php?50854-Please-HELP!!-Simulating-paper-floating-to-ground
// "i think reactor can do this, i would try cloth witha high air resistance and a very high stifness"
paper_2d_behaving_apple.addReactor(REactor());
// got this technique from http://www.gimptutorials.eu/html/clothify_filter_gimp_gnu.html
import gimp ; GIMP::Clothify(paper_2d_behaving_apple); pass
// / 7 should be high enough - it's a big number
paper_2d_behaving_apple.reactor.stiffness = 7.0f;
paper_2d_behaving_apple.reactor.airResistance = 5.0f; // high, but not "very high"

// setup the world the apple exists in
paper_2d_behaving_apple.owner = new BobFlanderson();
paper_2d_behaving_apple.owner.appearance = APPEARANCE_AWESOME;
paper_2d_behaving_apple.owner.clothes.size = CLOTHES_SIZE_MEDIUM;
paper_2d_behaving_apple.owner.owns_house = false;
paper_2d_behaving_apple.owner.apartment.sucks = true;
paper_2d_behaving_apple.owner.has_wife = false;
paper_2d_behaving_apple.viewSpace = LIVING_ROOM;
paper_2d_behaving_apple.RESTINGon = Kitchen.GetSurfaces()->COUNTER_BY_STOVE;
////... (also cut some  more out here too) ...

// transform the paper behaving apple into something viewable
view_matrix = new ViewMatrix();
view_matrix.DoTransformation(paper_2d_behaving_apple);
view_matrix.makeViewable();
World->ApplyViewMatrix(view_matrix);

paper_2d_behaving_apple.RenderToNeakedEye();

// THIS IS WHERE I'm HAVING THE TROUBLE
actual_existing_apple_on_myCounter = new ExistingApple(paper_2d_behaving_apple);
actual_existing_apple_on_myCounter.bindInRealLive();

// THIS NEVER WORKS! I DON"T KNOW HOW YOU GUYS DO THIS STUFF!
actual_existing_apple_on_myCounter.Translate(LANGUAGES::ENGLISH);
// saw the IW_FIXED on some jam making site
// (http://www.madewithmarmalade.com/devnet/documentation#/api/api/group__IwGeomCore.html)
//  - that's the closest I've come to seeing anything close to what
// I'm trying to do
actual_existing_apple_on_myCounter.TranslateTo(0, 0, IW_FIXED(10.0f));
apple_now_inAir = actual_existing_apple_on_myCounter;

// I know this is C++ code, but some ruby sites were saying that it's best
// to put an exclamation point after a function that modifies a physical
// object - no luck yet for me
apple_now_inAir.Drop!();

Như bạn có thể thấy, tôi đã có các khái niệm cơ bản và tôi rất mô tả với các tên biến và các thuộc tính đối tượng. Tôi thiết lập thế giới rất ngắn gọn và rõ ràng, mặc dù tôi đã đơn giản hóa thế giới trong trò chơi so với nhà bếp thực tế.

Tôi nghĩ vấn đề được ràng buộc paper_2d_behaving_applevới actual_existing_apple_on_myCountertáo, và sau đó chuyển đến một trong không khí ( apple_now_inAir);

Dù là trường hợp nào, và dù tôi có định dạng mọi thứ tốt đến đâu, dường như không có gì xảy ra. Dưới đây là hình ảnh về cách tôi chạy chương trình:

nhập mô tả hình ảnh ở đây

Có ai đã chạy vào đây trước? Cảm ơn trước. Tôi mới bắt đầu với các trò chơi lập trình, gần đây đã chuyển đổi nghề nghiệp, vì vậy đừng cảm thấy tồi tệ.

Cảm ơn, Bob


2
Bạn đang hỏi quá nhiều câu hỏi ở đây. Phần về sự không tương thích nên được hỏi trên stackexchange vì nó không thực sự liên quan đến gamedev. Phần táo nên được hỏi ở đây là câu hỏi của riêng mình. Ngoài ra, hãy cố gắng xóa một số văn bản không liên quan về việc không có đủ đại diện và các nội dung câu chuyện cá nhân khác không giúp mọi người trả lời câu hỏi.
Tấn

3
"Tại sao tôi không thể lấy mã của mình để làm việc?" khá nhiều tổng hợp tất cả các câu hỏi lập trình bao giờ hết. Hãy suy nghĩ về những gì bạn muốn biết, và sau đó chỉnh sửa câu hỏi cho phù hợp.
jcora

13
Đây là câu hỏi yêu thích của tôi trên gamedev.SE.
Jimmy

6
Tôi bắt đầu chỉnh sửa cái này. Sau đó, tôi nhận ra nó phải được trolling ("táo mạng"?). Nếu điều này không phải là trolling, bạn thực sự cần phải bắt đầu với một cái gì đó đơn giản hơn.
MichaelHouse

2
Điều này thật buồn cười. Rubyism - apple_now_inAir.Drop!();- là một cuộc bạo loạn. Có một cái gì đó về bài đăng này - tham vọng, bối rối, cam chịu ...
solidsnack

Câu trả lời:


34

Vấn đề chính tôi thấy ở đây là bạn đang sử dụng một hệ thống Windows. Hệ điều hành này hoạt động tốt nhất để mô phỏng những thứ như cửa sổ và cửa ra vào (không phải chất hữu cơ). Bạn cần chuyển sang máy tính Macintosh , đây là những ứng dụng đặc biệt với mô phỏng táo. Phiên bản mới nhất của HĐH không chỉ mô phỏng táo, nó còn hỗ trợ thêm cho những con mèo lớn, đặc biệt là sư tử núi. Tuy nhiên, nếu bạn muốn tiếp tục sử dụng hệ thống Windows của mình, bạn sẽ cần thực hiện một số thay đổi. Trước tiên hãy tải xuống Visual Studio , công dụng chính của nó là để hiển thị mã. Trong trường hợp của bạn, nó sẽ hình dung những quả táo của bạn.

Tiếp theo, bạn cần mã hóa cây nhị phân để táo của bạn trưởng thành đúng cách. Hãy chắc chắn để thêm nhiều lá để cây phát triển mạnh mẽ (cũng đảm bảo bạn cung cấp cho nó một gốc lớn). Để kiểm tra độ táo, bạn có thể lấy một byte ra khỏi một và truyền các bit qua tasteTest()hàm. Bây giờ, bạn đã có táo! Nhưng, bạn nói rằng bạn muốn chúng giống như giấy phải không? Bạn sẽ muốn chuyển chúng sang một tệp phẳng để đạt được hiệu quả đó. Đừng sử dụng cơ sở dữ liệu để lưu trữ táo, chúng sẽ không đủ phẳng.

Cuối cùng, để khiến những quả táo trôi xuống, bạn đang thiếu một bước quan trọng trong mã của mình! Bạn quên thêm:

paper_2d_behaving_apple.hasGravity = true;

Đó là một sai lầm, nhưng không sao. Cuối cùng, hãy chắc chắn rằng bạn đặt quả táo ở trên cùng của màn hình, để nó có chỗ rơi. Và Jimmy đề nghị, bạn cũng có thể lật ngược màn hình nếu quả táo ở phía sai, vì bạn mới bắt đầu, điều này có khả năng xảy ra.

Là một phần thưởng phụ, vì bạn đang sử dụng Windows, nếu bạn muốn tạo một biểu đồ hình quả táo trong Microsoft Excel, bạn có thể dễ dàng mô phỏng một cửa sổ để làm mát nó.


Ngoài ra, có một cách dễ dàng hơn để làm điều này nếu bạn muốn chi tiêu một ít tiền.

Có một thiết bị được gọi là ENCOM Số hóa Laser phân tử. Tôi đã thấy nó được sử dụng để số hóa táo trước đây và tôi nghĩ rằng nó sẽ có ích cho bạn. Bạn thậm chí sẽ không phải nhập tất cả các biến đó, máy quét sẽ làm điều đó cho bạn. Đây là hành động:

nhập mô tả hình ảnh ở đây


5
Nó có thể gây nhầm lẫn với bạn, nhưng tôi hiểu nó. Đó là máy tính của tôi có vấn đề, đó là lý do tại sao tôi nghĩ rằng tôi đang thiếu một số thư viện hoặc một cái gì đó. Tôi đang thực sự đọc qua hướng dẫn phong cách mã hóa google ngay bây giờ. Hy vọng rằng điều đó sẽ giải quyết một số mối quan tâm của các bạn về phong cách mã hóa của tôi.
Bob Flanderson

1
Bạn nói đúng, tôi đã bối rối. Tôi đã thay đổi câu trả lời của tôi.
MichaelHouse

Đúng! Hãy hình dung những quả táo của tôi! Tôi chưa thể làm điều đó vì tôi vẫn chưa tìm thấy thư viện mà tôi đang thiếu
Bob Flanderson

2
Tôi nghĩ vấn đề gốc là: paper_2d_behaving_apple.owner.has_wife = false; Nếu có vợ thì cô sẽ nói cho anh biết chuyện gì đã xảy ra.
David Thielen
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.