Simulando maçãs do jogo - Não é possível fazê-lo funcionar [fechado]


11

Estou tentando criar um jogo com a física newtoniana.

Antes de ler o restante, esta é minha principal pergunta, para a qual estou tentando encontrar uma resposta:

  • Eu continuo recebendo um erro que aparece em uma janela depois de tentar executar meu código. Que biblioteca ou dll estou faltando?

Eu tenho uma maçã, uma laranja e um lápis. Li a maior parte da documentação com o mecanismo de física de balas, mas parece que a maçã não se comporta como um pedaço de papel (2d-ish). Motores de física Box2d e esses não são o que eu quero. Não gosto de caixas na vida real, muito menos em mundos cibernéticos.

Quero que a maçã flutue no chão, meio que balançando para frente e para trás como faria um pedaço de papel. Este site forneceu algumas informações úteis que integrei ao meu código: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !! -Simulating-paper-floating-to-ground

Eu tenho essa idéia para um jogo em que você faz com que os objetos se comportem como outros tipos de objetos, mas minhas simulações do jogo simplesmente não estão funcionando.

Já passei por muitos tipos de maçãs para contar, e nenhuma delas chegou nem perto. Eu tentei procurar outras pessoas que tentaram coisas semelhantes (usando googles como http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), mas nenhuma maçã é devolvida!

Portanto, acho que estou entrando em um novo território aqui (não se preocupe, vou abrir minhas técnicas de código-fonte), e é por isso que as coisas simplesmente não estão funcionando para mim.

Eu tentei programar diferentes tipos de maçãs, mas talvez eu precise de uma maçã cibernética? Eu não sei onde conseguir um desses, talvez em um lugar como este: http://cyberapples.com/ Esse site está fora do ar por enquanto - está apenas falando de algum lixo cgi ou algo assim. Alguma dica sobre isso também?

Esta é a parte do meu código que lida com a maçã simulando coisas do jogo:

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

Como você pode ver, eu tenho os conceitos básicos e estou sendo muito descritivo com meus nomes de variáveis ​​e os atributos do objeto. Eu configurei o mundo de maneira muito sucinta e clara, embora tenha simplificado o mundo no jogo em comparação com a cozinha real.

Acho que o problema é obrigatório o paper_2d_behaving_appleà actual_existing_apple_on_myCountermaçã, e, em seguida, transferir isso para o um no ar ( apple_now_inAir);

Seja qual for o caso, e não importa o quão bem eu formate tudo, nada parece acontecer. Abaixo está uma imagem de como executo o programa:

insira a descrição da imagem aqui

Alguém já se deparou com isso antes? Desde já, obrigado. Estou começando a programar jogos, tendo mudado de carreira recentemente, então não se sinta mal.

Obrigado Bob


2
Você está fazendo muitas perguntas aqui. A parte sobre a incompatibilidade deve ser solicitada no stackexchange, pois não está realmente relacionada ao gamedev. A parte da maçã deve ser feita aqui como sua própria pergunta. Tente também remover parte do texto irrelevante sobre não ter representantes suficientes e outras histórias pessoais que não ajudem as pessoas a responderem à pergunta.
precisa

3
"Por que não consigo fazer meu código funcionar?" praticamente resume todas as questões de programação de todos os tempos. Pense no que você quer saber e edite a pergunta adequadamente, por favor.
jcora

13
Esta é agora a minha pergunta favorita no gamedev.SE.
Jimmy

6
Comecei a editar isso. Então eu percebi que deve ser trolling ("cyber apple"?). Se isso não é corrico, você realmente precisa começar com algo mais simples.
Michaelhouse

2
Isso é muito engraçado. O Rubyism - apple_now_inAir.Drop!();- é uma revolta. Há algo sobre este post - ambicioso, confuso, condenado ...
solidsnack

Respostas:


34

O principal problema que vejo aqui é que você está usando um sistema Windows. Este sistema operacional funciona melhor para simular coisas como janelas e portas (não orgânicas). Você precisa mudar para um computador Macintosh , estes são excepcionais na simulação de maçãs. A versão mais recente do sistema operacional não apenas simula maçãs, mas também oferece suporte para gatos grandes, principalmente leões da montanha. No entanto, se você quiser continuar usando o sistema Windows, precisará fazer algumas alterações. Primeiro baixe o Visual Studio , seu uso principal é para visualizar o código. No seu caso, ele visualizará suas maçãs.

Em seguida, você precisa codificar uma árvore binária para que suas maçãs amadureçam adequadamente. Adicione muitas folhas para que a árvore cresça forte (também dê uma grande raiz). Para testar a maturidade das maçãs, você pode tirar um byte de um e passar os bits pela tasteTest()função Agora você tem maçãs! Mas você disse que queria que eles fossem como papel, certo? Você deseja portá-los em um arquivo simples para obter esse efeito. Não use um banco de dados para armazenar as maçãs, pois elas não serão planas o suficiente.

Por fim, para que as maçãs flutuem, você está perdendo uma etapa crítica no seu código! Você esqueceu de adicionar:

paper_2d_behaving_apple.hasGravity = true;

É um erro noob, mas tudo bem. Por fim, certifique-se de colocar a maçã na parte superior da tela, para que ela caia em algum lugar. E Jimmy sugeriu, você também pode virar o monitor de cabeça para baixo se a maçã estiver do lado errado, já que você está apenas começando, é provável que isso aconteça.

Como um bônus adicional, como você usa o Windows, se quiser criar um gráfico de pizza no Microsoft Excel, você pode simular facilmente uma janela para esfriá-lo.


Como alternativa, há uma maneira muito mais fácil de fazer isso, se você quiser gastar um pouco de dinheiro.

Existe um dispositivo chamado ENCOM Digitizing Molecular Laser. Eu já vi isso digitalizar maçãs antes e acho que seria útil para você. Você nem precisaria digitar todas essas variáveis, o scanner faria isso por você. Aqui está em ação:

insira a descrição da imagem aqui


5
Pode ser confuso para você, mas eu entendo. É o meu computador que tem o problema, e é por isso que eu estava pensando que estava faltando algumas bibliotecas ou algo assim. Na verdade, estou lendo o guia de estilo de codificação do Google agora. Espero que isso resolva algumas das preocupações que vocês têm sobre o meu estilo de codificação.
Bob Flanderson

1
Você está certo, eu estava confuso. Eu mudei minha resposta.
Michaelhouse

Sim! Por favor, visualize minhas maçãs! Eu não tenho sido capaz de fazer isso ainda, porque eu ainda não encontrei a biblioteca que estou em falta
Bob Flanderson

2
Eu acho que o problema raiz é: paper_2d_behaving_apple.owner.has_wife = false; Se tivesse uma esposa, ela diria a ele o que havia de errado.
David Thielen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.