Spieläpfel simulieren - Kann nicht zum Laufen gebracht werden [geschlossen]

11

Ich versuche ein Spiel mit Newtonscher Physik zu erstellen.

Bevor Sie den Rest lesen, ist dies meine Hauptfrage, auf die ich eine Antwort finden möchte:

  • Ich erhalte immer wieder eine Fehlermeldung, die in einem Fenster angezeigt wird, nachdem ich versucht habe, meinen Code auszuführen. Welche Bibliothek oder DLL fehlt mir?

Ich habe einen Apfel, eine Orange und einen Bleistift. Ich habe den größten Teil der Dokumentation mit der Bullet Physics Engine gelesen, aber ich kann den Apfel einfach nicht dazu bringen, sich wie ein Stück Papier zu verhalten (2d-ish). Box2d-Physik-Engines und dergleichen sind nicht das, was ich will. Ich mag keine Kisten im wirklichen Leben, geschweige denn in Cyberwelten.

Ich möchte, dass der Apfel zu Boden schwebt und wie ein Stück Papier hin und her schwingt. Diese Seite gab einige nützliche Informationen, die ich in meinen Code integriert habe: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !!

Ich habe diese Idee für ein Spiel, bei dem Objekte sich wie andere Objekttypen verhalten, aber meine Simulationen des Spiels funktionieren einfach nicht.

Ich habe zu viele Apfelsorten durchlaufen, um sie zu zählen, und keine davon kommt mir auch nur nahe. Ich habe versucht, nach anderen Leuten zu suchen, die ähnliche Dinge ausprobiert haben (mit Brillen wie http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), aber es werden nie Äpfel zurückgegeben!

Daher denke ich, dass ich hier Neuland betrete (keine Sorge, ich werde meine Techniken als Quelle öffnen), und deshalb funktionieren die Dinge für mich einfach nicht.

Ich habe versucht, verschiedene Apfelsorten zu programmieren, aber vielleicht brauche ich einen Cyberapfel? Ich weiß nicht, wo ich eines davon bekommen kann, vielleicht an einem Ort wie diesem: http://cyberapples.com/ Diese Seite ist jedoch momentan nicht verfügbar - es geht immer nur um einen CGI-Mülleimer oder so. Irgendwelche Tipps dazu?

Dies ist der Teil meines Codes, der sich mit dem Apfel befasst, der ein Spiel simuliert:

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

Wie Sie sehen können, habe ich die grundlegenden Konzepte festgelegt und bin mit meinen Variablennamen und den Objektattributen sehr beschreibend. Ich habe die Welt sehr prägnant und klar eingerichtet, obwohl ich die Welt im Spiel im Vergleich zur tatsächlichen Küche vereinfacht habe.

Ich denke, das Problem besteht darin, das paper_2d_behaving_applean den actual_existing_apple_on_myCounterApfel zu binden und es dann auf den in der Luft zu übertragen ( apple_now_inAir);

Was auch immer der Fall ist und egal wie gut ich alles formatiere, es scheint nichts zu passieren. Unten sehen Sie ein Bild davon, wie ich das Programm ausführe:

Geben Sie hier die Bildbeschreibung ein

Hat das schon mal jemand gemacht? Danke im Voraus. Ich fange gerade mit dem Programmieren von Spielen an, nachdem ich kürzlich die Karriere gewechselt habe, also fühle dich nicht schlecht.

Danke, Bob

Bob Flanderson
quelle
2
Sie stellen hier zu viele Fragen. Der Teil über die Inkompatibilität sollte beim Stackexchange abgefragt werden, da er nicht wirklich mit gamedev zusammenhängt. Der Apfelteil sollte hier als eigene Frage gestellt werden. Versuchen Sie auch, einen Teil des irrelevanten Textes zu entfernen, in dem es darum geht, nicht genügend Repräsentanten und andere persönliche Geschichten zu haben, die den Leuten nicht helfen, die Frage zu beantworten.
AttackingHobo
3
"Warum kann ich meinen Code nicht zum Laufen bringen?" fasst so ziemlich jede Programmierfrage zusammen. Überlegen Sie, was Sie wissen möchten, und bearbeiten Sie die Frage dann entsprechend.
JCora
13
Dies ist jetzt meine Lieblingsfrage auf gamedev.SE.
Jimmy
6
Ich fing an, das zu bearbeiten. Dann wurde mir klar, dass es Trolling sein muss ("Cyber ​​Apple"?). Wenn dies kein Trolling ist, müssen Sie wirklich mit etwas Einfacherem beginnen.
MichaelHouse
2
Das ist so lustig. Der Rubyismus - apple_now_inAir.Drop!();- ist ein Aufstand. Es gibt etwas an diesem Beitrag - ehrgeizig, verwirrt, zum Scheitern verurteilt ...
Solidsnack

Antworten:

34

Das Hauptproblem, das ich hier sehe, ist, dass Sie ein Windows-System verwenden. Dieses Betriebssystem eignet sich am besten zum Simulieren von Fenstern und Türen (nicht organisch). Sie müssen zu einem Macintosh-Computer wechseln. Diese sind außergewöhnlich bei der Simulation von Äpfeln. Die neueste Version des Betriebssystems simuliert nicht nur Äpfel, sondern bietet auch zusätzliche Unterstützung für Großkatzen, insbesondere Berglöwen. Wenn Sie Ihr Windows-System jedoch weiterhin verwenden möchten, müssen Sie einige Änderungen vornehmen. Laden Sie zuerst das Visual Studio herunter . Es wird hauptsächlich zur Visualisierung von Code verwendet. In Ihrem Fall werden Ihre Äpfel visualisiert.

Als nächstes müssen Sie einen Binärbaum codieren , damit Ihre Äpfel richtig reifen. Stellen Sie sicher, dass Sie viele Blätter hinzufügen, damit der Baum stark wächst (geben Sie ihm auch eine große Wurzel). Um die Äpfel auf Reife zu testen, können Sie ein Byte aus einem herausnehmen und die Bits durch die tasteTest()Funktion führen. Jetzt hast du Äpfel! Aber Sie sagten, Sie wollten, dass sie wie Papier sind, oder? Sie sollten sie in eine flache Datei portieren, um diesen Effekt zu erzielen. Verwenden Sie keine Datenbank zum Speichern der Äpfel, sie sind nicht flach genug.

Um die Äpfel zum Schweben zu bringen, fehlt ein entscheidender Schritt in Ihrem Code! Sie haben vergessen hinzuzufügen:

paper_2d_behaving_apple.hasGravity = true;

Es ist ein Noob-Fehler, aber das ist in Ordnung. Stellen Sie schließlich sicher, dass Sie den Apfel oben auf dem Bildschirm platzieren, damit er irgendwo hinfallen kann. Und Jimmy schlug vor, dass Sie den Monitor auch auf den Kopf stellen können, wenn sich der Apfel auf der falschen Seite befindet. Da Sie gerade erst anfangen, ist dies wahrscheinlich.

Als Nebenbonus können Sie, da Sie Windows verwenden und ein Apple Pie-Diagramm in Microsoft Excel erstellen möchten, problemlos ein Fenster simulieren, um es abzukühlen.


Alternativ gibt es eine viel einfachere Möglichkeit, dies zu tun, wenn Sie ein wenig Geld ausgeben möchten.

Es gibt ein Gerät namens ENCOM Digitalizing Molecular Laser. Ich habe gesehen, dass es früher zum Digitalisieren von Äpfeln verwendet wurde, und ich denke, es wäre nützlich für Sie. Sie müssten nicht einmal alle diese Variablen eingeben, der Scanner würde dies für Sie tun. Hier ist es in Aktion:

Geben Sie hier die Bildbeschreibung ein

Byte56
quelle
5
Es mag für Sie verwirrend sein, aber ich verstehe es. Es ist mein Computer, der das Problem hat, weshalb ich dachte, ich hätte einige Bibliotheken oder so etwas vermisst. Ich lese gerade den Google Coding Style Guide durch . Hoffentlich löst das einige der Bedenken, die ihr bezüglich meines Codierungsstils habt.
Bob Flanderson
1
Du hast recht, ich war verwirrt. Ich habe meine Antwort geändert.
MichaelHouse
Ja! Bitte visualisiere meine Äpfel! Ich habe das noch nicht geschafft, weil ich die Bibliothek, die ich vermisse, immer noch nicht gefunden habe
Bob Flanderson
2
Ich denke, das Grundproblem ist: paper_2d_behaving_apple.owner.has_wife = false; Wenn es eine Frau hätte, würde sie ihm sagen, was los ist.
David Thielen