CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

printf("blabla");

godrik
godrik
Niveau 30
07 février 2013 à 00:44:08

interessant, je jetterai un oeil :)

Tu as essayer de recompiler le jeu a partir des sources?

Pseudo supprimé
Pseudo supprimé 07 février 2013 à 01:36:50

Non mais pour une bonne raison, il suffit de modifier un des fichiers C et c'est prit en compte au démarrage du jeu comme si c'était interprété... Est-ce normal ? :o))

Je n'ai pas assez d'expérience, mais on dirait que le jeu est codé en orienté objet, mais peut être me trompe. Voici des exemples que je met sur hastebin :

http://www.hastebin.com/voyugisala.avrasm
http://www.hastebin.com/meviriwidu.avrasm

godrik
godrik
Niveau 30
07 février 2013 à 04:39:32

Ca ressemble a du C en effet. Mais ca pourrait ne pas en etre aussi. Je n'ai pas vu de pointeur par exemple.

C'est possible que le C soit compile a la volee. Aussi il y a des compilateur comme tcc qui font de C un langage de script.

Pseudo supprimé
Pseudo supprimé 07 février 2013 à 06:22:30

c surement angelscript

http://www.angelcode.com/angelscript/

Pseudo supprimé
Pseudo supprimé 07 février 2013 à 18:19:52

En parcourant les fichiers c'est vrai que je ne voit pas de pointeurs pour l'instant, par contre ici si je ne me trompe pas il renvoit une adresse :

http://pastebin.com/qLhP8fsH

Caudheur
Caudheur
Niveau 8
08 février 2013 à 00:58:05

Bonsoir tout le monde,

juste une rapide question (dont je n'ai pas pu trouver la réponse sur Internet, merci de ne pas m'humilier avec un lien google où la réponse est en première page :gni: )

Quelle est la valeur par défaut d'un booléen en C++ ? (je suis avec GCC, je ne sais pas si ça change quelque chose)

J'ai pu observer des résultats vraiment étranges (ça m'apprendra aussi à initialiser toutes mes variables)

PocoIo
PocoIo
Niveau 10
08 février 2013 à 01:54:43

Normalement false (ou 0 autrement dit) pour une variable globale, sinon pour une variable automatique ou allouée sur le tas ce sera la valeur qui se trouve à cet endroit en mémoire, ce qui donne souvent un gros chiffre qui n'est pas celui que tu attends.

Attention pour les classes ce n'est pas comme en Java où les attributs d'une classe sont automatiquement initialisés à une valeur par défaut si tu ne les initialise pas toi-même, en C++ ce n'est le cas que pour les variables globales, autrement il faut toujours les initialiser dans le constructeur.

Caudheur
Caudheur
Niveau 8
08 février 2013 à 12:10:26

D'accord merci pour l'explication !
C'est fou qu'un booléen puisse prendre des valeurs complètement exotiques, je ne pensais pas que j'aurais un jour des SIGSEGV à cause d'eux...

Pseudo supprimé
Pseudo supprimé 08 février 2013 à 13:17:43

le stack n'est pas "zero initialized". tu peux le voir avec ce code http://pygments.org/demo/63047/?style=monokai
vu que la proc a() est rappelée de suite elle se retrouve avec la même stackframe que l’appel précédent et donc les même valeurs.

d’après le standard c++ seulement les variables statiques et de threads(thread_local) sont zero-initialized. les statiques aux lancement du programme et les variables de thread a chaque lancement d'un thread.

définition de zero-initialize:
To zero-initialize an object or reference of type T means:

if T is a scalar type (3.9), the object is set to the value 0 (zero), taken as an integral constant expression, converted to T;

if T is a (possibly cv-qualified) non-union class type, each non-static data member and each base-class subobject is zero-initialized and padding is initialized to zero bits;

if T is a (possibly cv-qualified) union type, the object’s first non-static named data member is zero-initialized and padding is initialized to zero bits;

if T is an array type, each element is zero-initialized;

if T is a reference type, no initialization is performed.

Brain-Grey
Brain-Grey
Niveau 10
08 février 2013 à 13:25:49

Bonjour. :)

PocoIo
PocoIo
Niveau 10
08 février 2013 à 13:38:14

" C'est fou qu'un booléen puisse prendre des valeurs complètement exotiques "

C'est vrai qu'en théorie un booléen a deux valeurs possibles, 0 ou 1, cela-dit vu que le type bool tient sur un octet il peut prendre n'importe quelle valeur qui tienne sur 8 bits.

Si tu essaye directement d'assigner à un bool une valeur supérieure à 1 ou inférieure à 0 il y aura une conversion implicite en true, 1 autrement dit.

Cela dit tu peux quand même obtenir d'autres valeurs, notamment si tu n'initialise pas la variable ou si tu passes par un pointeur, voici quelques exemples :

http://codepad.org/zrQ9FveF

Dans les trois derniers cas le booléen est toujours "vrai" mais il contient des valeurs différentes.

Caudheur
Caudheur
Niveau 8
08 février 2013 à 13:42:47

Merci à vous deux pour les détails. Je ne comprends pas très bien pourquoi les variables sur le tas ne peuvent pas prendre par défaut des valeurs "safe" (à défaut d'être cohérent).
Genre automatiquement initialiser les pointeurs à 0.

godrik
godrik
Niveau 30
08 février 2013 à 15:36:57

Caudheur, tu pourrais t'assurer que la pile est toujours initialise a zero apres un appel de fonction, mais ca couterait pas mal de temps. Le choix de C est de laisser la pile non initialise. Il est possible que certaines variables ne soit pas ecrite ou lue dans une execution d'une fonction. pourquoi perdre du temps a l'initialise.

Aussi dans beaucoup de cas, les variables ne passent pas par la pile du tout, elle reste en registre. Finalement, il y a des outils qui peuvent te dire quand tu fais n'importe quoi (ton compilateur avec les options qui vont bien, et valgrind).

caelacanthe
caelacanthe
Niveau 10
08 février 2013 à 15:40:25

Bonjour tout le monde! Je suis face à un problème de géométrie en apparence simple, mais je galère un peu dessus...

http://sournoishack.com/uploads/1632584062Sans_titre.PNG je connais les coordonnées du point A et du point B, ainsi que le rayon de la sphère rouge, existe t-il une manière simple de calculer les coordonnées des points C et D? ce serait dans l'espace.

si quelqu'un voit une solution rapide... merci d'avance. :pf:

godrik
godrik
Niveau 30
08 février 2013 à 15:47:08

Qu'est ce que l'on peut savoir en 2D

Avec le theoreme de pythagore tu peux connaitre la distance de AC.
Avec le rayon et la distance AB tu puex obtenir le sinus de l'angle BAC et BAD. tu peux prendre l'arcsin pour obtenir la valeure de l'angle

Avec ces deux informations tu as direction et distance a partir de A. Donc tu peux calculer C et D.

En 3d, ton dessin defini un cercle sur la sphere de centre B, queles sont donc les points qui t'interessent?

Caudheur
Caudheur
Niveau 8
08 février 2013 à 16:20:16

Godrik : "Finalement, il y a des outils qui peuvent te dire quand tu fais n'importe quoi (ton compilateur avec les options qui vont bien"

Tiens ça m'intéresse ça, tu veux dire que le compilateur pourrait me mettre des warnings quand il y a des variables que j'ai oubliées d'initialiser ?

vive_cod4
vive_cod4
Niveau 9
08 février 2013 à 16:36:53

Caudheur -> Par exemple avec gcc/g++ tu peux mettre ces warnings : http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Warning-Options.html#Warning-Options

Sinon regarde pour -Wuninitialized,-Wmaybe-uninitialized. Tu as des exemples de détections sur le lien ci-dessus en recherchant ces 2 mots-clés.

Après tu peux regarder tous les warnings généraux + ceux spécifiés aux langages etc..., toujours au même endroit (ou en PDF qui est un peu mieu niveau mise en forme : http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc.pdf)

godrik
godrik
Niveau 30
08 février 2013 à 16:37:37

quand tu compile avec gcc, tu peux utilise -Wall qui te dit ca.

J'ai l'habitude de dire qu'il faut toujours compiler avec les options maximale de warning. Dans mon experience, les warnings sont important a prendre en compte. Certains sont catastrophique si ils sont ignore.

Pseudo supprimé
Pseudo supprimé 08 février 2013 à 16:40:27

tu peux remplacer le new globalement. par exemple sur windows new est un appel a la fonction HeapAlloc[1] sans flags. tu peux le replacer par un new qui appellera avec le flag HEAP_ZERO_MEMORY.

https://gist.github.com/anonymous/4739767

[1] http://msdn.microsoft.com/en-us/library/windows/desktop/aa366597%28v=vs.85%29.aspx

godrik
godrik
Niveau 30
08 février 2013 à 16:49:11

Il y a plein d'application a redefinir le comportement de new. L'un des plus pratique est l'initialisation avec une valeures debile. Ca permet de detecter les bugs de variables de tas non initialise rapidement.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment