Symulowanie jabłek w grze - nie można go uruchomić [zamknięty]


11

Próbuję stworzyć grę z fizyką newtonowską.

Zanim przeczytasz resztę, oto moje główne pytanie, na które staram się znaleźć odpowiedź na:

  • Po próbie uruchomienia kodu pojawia się błąd, który pojawia się w oknie. Jakiej biblioteki lub biblioteki DLL brakuje?

Mam jabłko, pomarańczę i ołówek. Przeczytałem większość dokumentacji z silnikiem fizyki pocisków, ale po prostu nie wydaje mi się, aby jabłko zachowywało się jak kartka papieru (2d-ish). Silniki fizyki Box2d i takie nie są tym, czego chcę. Nie lubię pudełek w prawdziwym życiu, a tym bardziej w cyberświatach.

Chcę, żeby jabłko opadło na ziemię, jakby kołysało się w przód iw tył, jak kawałek papieru. Ta strona zawiera przydatne informacje, które zintegrowałem z moim kodem: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !! -Simulation-paper-floating-to-ground

Mam pomysł na grę, w której sprawiasz, że obiekty zachowują się jak inne typy obiektów, ale moje symulacje gry po prostu nie działają.

Przeszedłem zbyt wiele rodzajów jabłek, aby je policzyć, i żadne z nich nawet się nie zbliżyło. Próbowałem szukać innych osób, które próbowały podobnych rzeczy (używając Google, takich jak http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), ale żadne jabłka nigdy nie są zwracane!

Dlatego myślę, że wchodzę tutaj na nowe terytorium (nie martw się, otworzę źródła moich technik) i właśnie dlatego rzeczy po prostu mi nie działają.

Próbowałem programować różne rodzaje jabłek, ale może potrzebuję cyber-jabłka? Nie wiem, skąd wziąć jeden z nich, może w takim miejscu: http://cyberapples.com/ Ta strona jest na razie niedostępna - mówi się tylko o jakimś śmietniku cgi lub czymś podobnym . Wszelkie wskazówki na ten temat?

To część mojego kodu, która zajmuje się jabłkiem symulującym grę:

///... /* 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!();

Jak widać, mam podstawowe pojęcia i jestem bardzo opisowy z moimi nazwami zmiennych i atrybutami obiektu. Ustawiam świat bardzo zwięźle i wyraźnie, chociaż uprościłem świat w grze w porównaniu do rzeczywistej kuchni.

Myślę, że problem wiąże paper_2d_behaving_applesię z actual_existing_apple_on_myCounterjabłkiem, a następnie przeniesieniem go do tego w powietrzu ( apple_now_inAir);

Cokolwiek to jest i bez względu na to, jak dobrze wszystko sformatuję, nic się nie dzieje. Poniżej znajduje się obraz tego, jak uruchamiam program:

wprowadź opis zdjęcia tutaj

Czy ktoś już na to wpadł? Z góry dziękuję. Zaczynam od programowania gier, ostatnio zmieniłem karierę, więc nie czuj się źle.

Dzięki, Bob


2
Zadajesz tutaj zbyt wiele pytań. O niekompatybilności należy zapytać o wymianę stosów, ponieważ tak naprawdę nie jest to związane z gamedev. Część jabłkową należy zadać tutaj jako własne pytanie. Spróbuj także usunąć część nieistotnego tekstu o braku wystarczającej liczby przedstawicieli i innych osobistych historii, które nie pomogą ludziom odpowiedzieć na pytanie.
AttackingHobo

3
„Dlaczego nie mogę uruchomić mojego kodu?” prawie podsumowuje każde pytanie programowe kiedykolwiek. Zastanów się, co chcesz wiedzieć, a następnie odpowiednio edytuj pytanie.
jcora

13
To jest teraz moje ulubione pytanie na gamedev.SE.
Jimmy

6
Zacząłem to edytować. Potem zdałem sobie sprawę, że to musi być trolling („cyber jabłko”?). Jeśli to nie trolling, naprawdę musisz zacząć od czegoś prostszego.
MichaelHouse

2
To jest takie zabawne. Rubyizm - apple_now_inAir.Drop!();- to zamieszki. Jest coś w tym poście - ambitny, zdezorientowany, skazany na porażkę ...
solidsnack,

Odpowiedzi:


34

Główny problem, jaki tu widzę, polega na tym, że używasz systemu Windows. Ten system operacyjny działa najlepiej do symulacji takich rzeczy, jak okna i drzwi (nieorganiczne). Musisz przełączyć się na komputer Macintosh , są wyjątkowe z symulacją jabłek. Najnowsza wersja systemu operacyjnego nie tylko symuluje jabłka, ale ma także dodatkowe wsparcie dla dużych kotów, zwłaszcza lwów górskich. Jeśli jednak chcesz nadal korzystać z systemu Windows, musisz wprowadzić pewne zmiany. Najpierw pobierz Visual Studio , jego głównym zastosowaniem jest wizualizacja kodu. W twoim przypadku wizualizuje twoje jabłka.

Następnie musisz posadzić drzewo binarne, aby Twoje jabłka odpowiednio dojrzały. Pamiętaj, aby dodać dużo liści, aby drzewo rosło silnie (upewnij się również, że dajesz mu duży korzeń). Aby przetestować dojrzałość jabłek, możesz pobrać jeden bajt z jednego i przekazać bity przez tasteTest()funkcję. Teraz masz jabłka! Ale powiedziałeś, że chcesz, żeby były jak papier, prawda? Będziesz chciał przenieść je do płaskiego pliku, aby osiągnąć ten efekt. Nie używaj bazy danych do przechowywania jabłek, nie będą one wystarczająco płaskie.

Wreszcie, aby spławić jabłka, brakuje jednego kluczowego kroku w kodzie! Zapomniałeś dodać:

paper_2d_behaving_apple.hasGravity = true;

To błąd nooba, ale to OK. Na koniec upewnij się, że umieściłeś jabłko u góry ekranu, aby miało ono gdzieś upaść. Jimmy zasugerował, że możesz również odwrócić monitor do góry nogami, jeśli jabłko jest po niewłaściwej stronie, ponieważ dopiero zaczynasz, to może się zdarzyć.

Dodatkową korzyścią jest to, że ponieważ używasz systemu Windows, jeśli chcesz utworzyć wykres szarlotki w programie Microsoft Excel, możesz łatwo symulować okno, aby je ochłodzić.


Alternatywnie istnieje znacznie łatwiejszy sposób na zrobienie tego, jeśli chcesz wydać trochę pieniędzy.

Istnieje urządzenie zwane wówczas ENCOM Digitizing Molecular Laser. Widziałem już, jak kiedyś digitalizował jabłka, i myślę, że przydałby ci się. Nie musiałbyś nawet wpisywać wszystkich tych zmiennych, skaner zrobiłby to za Ciebie. Oto jest w akcji:

wprowadź opis zdjęcia tutaj


5
To może być dla ciebie mylące, ale rozumiem to. Problem dotyczy mojego komputera, dlatego myślałem, że brakuje mi bibliotek lub czegoś takiego. Właśnie czytam teraz przewodnik po stylu kodowania Google . Mam nadzieję, że rozwiąże to niektóre obawy, jakie macie na temat mojego stylu kodowania.
Bob Flanderson,

1
Masz rację, byłem zmieszany. Zmieniłem odpowiedź.
MichaelHouse

Tak! Proszę wizualizuj moje jabłka! Nie byłem jeszcze w stanie tego zrobić, ponieważ wciąż nie znalazłem biblioteki, za którą tęsknię
Bob Flanderson,

2
Myślę, że głównym problemem jest: paper_2d_behaving_apple.owner.has_wife = false; Gdyby miała żonę, powiedziałaby mu, co jest nie tak.
David Thielen,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.