Simulazione di mele di gioco - Impossibile farlo funzionare [chiuso]


11

Sto cercando di creare un gioco con la fisica newtoniana.

Prima di leggere il resto, questa è la mia domanda principale, sto cercando di trovare una risposta a:

  • Continuo a ricevere un errore che viene visualizzato in una finestra dopo aver tentato di eseguire il mio codice. Quale libreria o dll mi manca?

Ho una mela, un'arancia e una matita. Ho letto la maggior parte della documentazione con il motore di fisica dei proiettili, ma non riesco proprio a far sì che la mela si comporti come un pezzo di carta (2d-ish). I motori fisici Box2d e simili non sono quello che voglio. Non mi piacciono le scatole nella vita reale, figuriamoci nei cyber-mondi.

Voglio che la mela galleggi a terra, oscillando avanti e indietro come farebbe un pezzo di carta. Questo sito ha fornito alcune informazioni utili che ho integrato nel mio codice: htp: //www.3dbuzz.com/vbforum/showthread.php? 50854-Please-HELP !! -Simulating-paper-floating-to-ground

Ho questa idea per un gioco in cui gli oggetti si comportano come altri tipi di oggetti, ma le mie simulazioni del gioco non funzionano.

Ho attraversato troppi tipi di mele per contarle, e nessuna di esse si è nemmeno avvicinata. Ho provato a cercare altre persone che hanno provato cose simili (usando google come http://lmgtfy.com/?q=simluating+game+apples+in+real+life ), ma non sono mai state restituite mele!

Quindi, penso che andrò in un nuovo territorio qui (non preoccuparti, aprirò le mie tecniche) ed è per questo che le cose non funzionano per me.

Ho provato a programmare diversi tipi di mele, ma forse ho bisogno di una cyber apple? Non so dove trovarne uno, forse in un posto come questo: http://cyberapples.com/ Quel sito è chiuso per ora, però - parla sempre solo di un bidone della spazzatura o qualcosa del genere. Qualche consiglio anche su questo?

Questa è la parte del mio codice che tratta della mela che simula un gioco:

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

Come puoi vedere, ho giù i concetti di base e sono molto descrittivo con i miei nomi di variabile e gli attributi dell'oggetto. Ho impostato il mondo in modo molto succinto e chiaro, anche se ho semplificato il mondo nel gioco rispetto alla cucina reale.

Penso che il problema sia quello di legare paper_2d_behaving_applealla actual_existing_apple_on_myCountermela e quindi trasferirlo a quello nell'aria ( apple_now_inAir);

In ogni caso, e non importa quanto bene formatta tutto, nulla sembra accadere. Di seguito un'immagine di come eseguo il programma:

inserisci qui la descrizione dell'immagine

Qualcuno l'ha mai incontrato prima? Grazie in anticipo. Sto solo iniziando con i giochi di programmazione, avendo recentemente cambiato carriera, quindi non sentirti male.

Grazie Bob


2
Stai facendo troppe domande qui. La parte relativa all'incompatibilità dovrebbe essere richiesta su stackexchange in quanto non è realmente correlata a gamedev. La parte della mela dovrebbe essere posta qui come una sua domanda. Prova anche a rimuovere parte del testo irrilevante sul non avere abbastanza rappresentante e altre cose della storia personale che non aiutano le persone a rispondere alla domanda.
Attaccando

3
"Perché non riesco a far funzionare il mio codice?" riassume praticamente ogni domanda di programmazione di sempre. Pensa a ciò che vuoi sapere, quindi modifica la domanda di conseguenza, per favore.
jcora,

13
Questa è ora la mia domanda preferita su gamedev.SE.
Jimmy,

6
Ho iniziato a modificare questo. Poi ho capito che doveva essere la pesca a traina ("cyber apple"?). Se questo non è il trolling, devi davvero iniziare con qualcosa di più semplice.
MichaelHouse

2
È così divertente. The Rubyism - apple_now_inAir.Drop!();- è una rivolta. C'è qualcosa in questo post - ambizioso, confuso, condannato ...
solidsnack

Risposte:


34

Il problema principale che vedo qui è che stai usando un sistema Windows. Questo sistema operativo funziona in modo ottimale per simulare elementi quali finestre e porte (non organici). È necessario passare a un computer Macintosh , questi sono eccezionali con la simulazione di mele. L'ultima versione del sistema operativo non solo simula le mele, ma supporta ulteriormente i gatti di grossa taglia, in particolare i leoni di montagna. Tuttavia, se si desidera continuare a utilizzare il sistema Windows, è necessario apportare alcune modifiche. Prima scarica Visual Studio , il suo utilizzo principale è per visualizzare il codice. Nel tuo caso, visualizzerà le tue mele.

Successivamente è necessario piantare in codice un albero binario per far maturare correttamente le mele. Assicurati di aggiungere molte foglie in modo che l'albero diventi forte (assicurati anche di dargli una grande radice). Per testare la maturità delle mele puoi prendere un byte da uno e passare i bit attraverso la tasteTest()funzione. Ora hai le mele! Ma hai detto che volevi che fossero come la carta, giusto? Ti consigliamo di portarli su un file flat per ottenere questo effetto. Non usare un database per conservare le mele, non saranno abbastanza piatte.

Infine, per far cadere le mele, ti manca un passaggio critico nel tuo codice! Hai dimenticato di aggiungere:

paper_2d_behaving_apple.hasGravity = true;

È un errore noob, ma va bene. Infine, assicurati di mettere la mela nella parte superiore dello schermo, in modo che abbia un posto dove cadere. E Jimmy ha suggerito che puoi anche capovolgere il monitor se la mela è dalla parte sbagliata, poiché hai appena iniziato, è probabile che accada.

Come bonus laterale, dal momento che stai usando Windows, se volevi creare un grafico a torta di mele in Microsoft Excel, potresti facilmente simulare una finestra per raffreddarlo.


In alternativa c'è un modo molto più semplice per farlo se vuoi spendere un po 'di soldi.

Esiste un dispositivo chiamato ENCOM Digital Molecular Laser. L'ho già visto per digitalizzare le mele prima e penso che ti sarebbe utile. Non dovresti nemmeno digitare tutte quelle variabili, lo scanner lo farebbe per te. Eccolo in azione:

inserisci qui la descrizione dell'immagine


5
Potrebbe confonderti, ma lo capisco. È il mio computer che ha il problema, motivo per cui stavo pensando che mi mancavano alcune librerie o qualcosa del genere. In questo momento sto leggendo la guida allo stile di programmazione di Google . Spero che questo risolva alcune delle preoccupazioni che avete sul mio stile di programmazione.
Bob Flanderson,

1
Hai ragione, ero confuso. Ho cambiato la mia risposta.
MichaelHouse

Sì! Per favore, visualizza le mie mele! Non sono ancora riuscito a farlo perché non ho ancora trovato la biblioteca che mi manca
Bob Flanderson,

2
Penso che il problema alla radice sia: paper_2d_behaving_apple.owner.has_wife = false; Se avesse una moglie, gli avrebbe detto cosa non andava.
David Thielen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.