Имитация игровых яблок - не могу заставить его работать [закрыто]


11

Я пытаюсь создать игру с ньютоновской физикой.

Прежде чем вы прочитаете остальную часть этого, это мой главный вопрос, на который я пытаюсь найти ответ:

  • Я продолжаю получать сообщение об ошибке, которое появляется в окне после попытки запуска кода. Какую библиотеку или DLL мне не хватает?

У меня есть яблоко, апельсин и карандаш. Я прочитал большую часть документации с помощью движка физики пули, но я просто не могу заставить яблоко вести себя как лист бумаги (2d-ish). Физические движки Box2d и такие не то, что я хочу. Я не люблю коробки в реальной жизни, не говоря уже о кибермирах.

Я хочу, чтобы яблоко упало на землю, качаясь взад-вперед, как лист бумаги. Этот сайт дал некоторую полезную информацию, которую я интегрировал в свой код: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !! -Simulating-paper-float-to-ground

У меня есть идея для игры, в которой вы заставляете объекты вести себя как другие типы объектов, но мои симуляции игры просто не работают.

Я прошел через слишком много типов яблок, чтобы сосчитать, и ни одно из них даже близко не подошло. Я пытался найти других людей, которые пробовали похожие вещи (используя googles, такие как http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), но яблоки никогда не возвращались!

Таким образом, я думаю, что я ухожу на новую территорию здесь (не волнуйтесь, я открою исходные тексты моих методов), и именно поэтому у меня просто ничего не получается.

Я пробовал программировать разные виды яблок, но, может быть, мне нужно кибер яблоко? Я не знаю, где взять один из них, может быть, в таком месте, как это: http://cyberapples.com/ Хотя этот сайт пока закрыт - он говорит только о каком-то мусорном ведре cgi или о чем-то подобном . Любые советы по этому вопросу?

Это часть моего кода, которая имеет дело с яблоком, имитирующим игровой материал:

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

Как вы можете видеть, у меня есть основные понятия, и я очень описательно с именами моих переменных и атрибутами объекта. Я настроил мир очень кратко и четко, хотя я упростил мир в игре по сравнению с реальной кухней.

Я думаю, что проблема заключается в том, paper_2d_behaving_appleчтобы actual_existing_apple_on_myCounterпривязать яблоко к яблоку, а затем перенести его в воздух ( apple_now_inAir);

Как бы то ни было, и независимо от того, насколько хорошо я все форматирую, похоже, ничего не происходит. Ниже изображение того, как я запускаю программу:

введите описание изображения здесь

Кто-нибудь сталкивался с этим раньше? Заранее спасибо. Я только начинаю с программирования игр, недавно сменив карьеру, так что не чувствую себя плохо.

Спасибо боб


2
Вы задаете слишком много вопросов здесь. Часть о несовместимости должна быть задана на stackexchange, поскольку она не имеет отношения к gamedev. Яблочная часть должна быть задана здесь как отдельный вопрос. Также постарайтесь удалить часть ненужного текста о нехватке репов и других личных историй, которые не помогают людям ответить на вопрос.
AttackingHobo

3
"Почему я не могу заставить мой код работать?" в значительной степени подводит итог каждого вопроса программирования когда-либо. Подумайте, что вы хотите знать, и затем отредактируйте вопрос соответствующим образом, пожалуйста.
Jcora

13
Теперь это мой любимый вопрос на gamedev.SE.
Джимми

6
Я начал редактировать это. Тогда я понял, что это, должно быть, троллинг («кибер яблоко»?). Если это не троллинг, вам действительно нужно начать с чего-то более простого.
MichaelHouse

2
Это так весело. Рубинизм - apple_now_inAir.Drop!();это бунт. В этом посте есть что-то амбициозное, растерянное, обреченное ...
solidsnack

Ответы:


34

Главная проблема, которую я вижу здесь, заключается в том, что вы используете систему Windows. Эта ОС лучше всего подходит для имитации таких вещей, как окна и двери (неорганические). Вам нужно переключиться на компьютер Macintosh , это исключительно для симуляции яблок. Последняя версия ОС не только имитирует яблоки, она имеет дополнительную поддержку для крупных кошек, особенно горных львов. Однако, если вы хотите продолжить использовать свою систему Windows, вам нужно будет внести некоторые изменения. Сначала скачайте Visual Studio , она в основном используется для визуализации кода. В вашем случае это визуализирует ваши яблоки.

Затем вам нужно кодировать бинарное дерево, чтобы яблоки правильно созрели. Убедитесь, что добавили много листьев, чтобы дерево стало сильным (также убедитесь, что вы даете ему большой корень). Чтобы проверить яблоки на зрелость, вы можете взять из одного байта и передать биты через tasteTest()функцию. Теперь у вас есть яблоки! Но вы сказали, что хотите, чтобы они были как бумага, верно? Вы захотите перенести их в плоский файл для достижения этого эффекта. Не используйте базу данных для хранения яблок, они не будут достаточно плоскими.

Наконец, чтобы яблоки упали, вам не хватает одного критического шага в вашем коде! Вы забыли добавить:

paper_2d_behaving_apple.hasGravity = true;

Это ошибка нуба, но это нормально. Наконец, убедитесь, что вы поместили яблоко в верхнюю часть экрана, чтобы ему было куда упасть. И Джимми предложил, вы также можете перевернуть монитор вверх дном, если яблоко не на той стороне, так как вы только начинаете, это может произойти.

В качестве дополнительного бонуса, поскольку вы используете Windows, если вы хотите создать диаграмму яблочного пирога в Microsoft Excel, вы можете легко смоделировать окно для его охлаждения.


В качестве альтернативы есть гораздо более простой способ сделать это, если вы хотите потратить немного денег.

Тогда есть устройство под названием ENCOM Digitizing Molecular Laser. Я уже видел, как раньше оцифровывали яблоки, и думаю, это пригодится вам. Вам даже не придется вводить все эти переменные, сканер сделает это за вас. Вот оно в действии:

введите описание изображения здесь


5
Это может сбить вас с толку, но я это понимаю. Проблема в моем компьютере, поэтому я подумал, что мне не хватает некоторых библиотек или чего-то еще. Я сейчас читаю руководство по стилю кодирования Google . Надеюсь, это разрешит некоторые из ваших опасений, связанных с моим стилем кодирования.
Боб Фландерсон

1
Вы правы, я был сбит с толку. Я изменил свой ответ.
MichaelHouse

Да! Пожалуйста, представьте мои яблоки! Я еще не смог этого сделать, потому что я до сих пор не нашел библиотеку, в которой я скучаю
Боб Фландерсон,

2
Я думаю, что основная проблема заключается в следующем: paper_2d_behaving_apple.owner.has_wife = false; Если бы у него была жена, она бы сказала ему, что не так.
Дэвид Тилен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.