Bonjour tout le monde.
Je suis en train de coder un programme simple; et je n'ai que, pour le moment, un bonhomme qui se déplace ( je travail avec la SDL ).
Mais il y a des choses qui m'intrigue:
- Comme dans le code de M@teo21 avec le Sokoban, j'ai une variable map et une fonction chargerMap. Mais je ne comprends pas pourquoi on peut modifier "map" dans la fonction sans utilisé un pointeur !?!?
- Je me demandais aussi si c'était une bonne idée de mettre ma fonction "deplacer" en inline. Car certe c'est une grosse fonction mais elle est trés souvent appellé!
- Est ce que true est égal à 1 et false à 0 ?
Désolé si c'est question on déja été posé, je ne les ai pas trouvé.
- Comme dans le code de M@teo21 avec le Sokoban, j'ai une variable map et une fonction chargerMap. Mais je ne comprends pas pourquoi on peut modifier "map" dans la fonction sans utilisé un pointeur !?!?
Tu veux dire en faisant ça ?
void chargerMap(int map[][Y])
{
map[i][j]= truc;
...
}
[...]
int map[X][Y];
chargerMap(map);
Car tout simplement un tableau est un pointeur. Quand tu tape "map" dans ton code sans précision supplémentaire (sans les []), en fait c'est comme si tu écrivais son adresse.
Et quand tu le modifies dans la fonction, tu modifies l'original et non une copie.
Pour conclure en fait, la fonction ci-dessus a deux prototypes possibles différents : void chargerMap(int map[]);
void chargerMap(int *map);
Là j'ai simplifié avec un tableau mono-dimensionnel mais ça marche aussi quand y'a deux dimensions (ou +), avec même une possibilité en plus
- Je me demandais aussi si c'était une bonne idée de mettre ma fonction "deplacer" en inline. Car certe c'est une grosse fonction mais elle est trés souvent appellé!
Heu, ça dépend. Si elle n'est pas appelée à beaucoup trop d'endroits différents alors oui c'est une très bonne idée même.
Mais sinon sache que des fois le compilateur inline automatiquement certaines fonctions sans que tu le lui est précisé explicitement de le faire, ça fait partie de son travail d'optimisation du code compilé.
Non non et non!
il faut bien être claire, et avoir ça dans l'esprit! Puisque vous parlez du socoban, alors c'est du C, en C faux=0, alors que vrai vaut toute valeur différente de zéro, il faut que ça soit bien dans l'esprit, il ne faut pas prendre les choses fondamentales à la légère!
La maîtrise des fondamentaux est le fondamental de la Maîtrise.
Non non et non!
il faut bien être claire, et avoir ça dans l'esprit! Puisque vous parlez du socoban, alors c'est du C, en C faux=0, alors que vrai vaut toute valeur différente de zéro, il faut que ça soit bien dans l'esprit, il ne faut pas prendre les choses fondamentales à la légère!
De même en C++. La norme spécifie simplement que true !=0. Petit exemple débile pour vérifier que la condition est true :
Il ne faut pas faire :
if(condition == 1)
{
//traitement...
}
mais plutôt
if(condition)
{
//traitement...
}
Pour la condition false, même si elle vaut effectivement 0, dans un soucis de sémantique je déconseille de faire un test de valeur. Ainsi :
Non non et non!
il faut bien être claire, et avoir ça dans l'esprit! Puisque vous parlez du socoban, alors c'est du C, en C faux=0, alors que vrai vaut toute valeur différente de zéro, il faut que ça soit bien dans l'esprit, il ne faut pas prendre les choses fondamentales à la légère!
Ne le prend pas mal, mais j'aurais quelques remarques à faire.
Ce que tu me dis je l'ai parfaitement à l'esprit. Je sais très bien que lorsqu'une expression est évaluée dans le but d'être booléenne que différent de 0 veut dire vrai et zéro, faux.
Or ici on ne parle pas d'évaluation d'une expression mais bel et bien de true et false qui sont des constantes du C++.
Si on regarde la définition d'un booléen, on sait qu'il n'y a que deux valeurs possibles, en informatique cela correspond à la position ouverte (FAUX) ou fermée (VRAI) d'un circuit électrique.
On note ces états 0 et 1, ce sont ce que valent false et true, on ne va pas dire qu'on utilise 27 pour vrai par exemple, ce serait totalement illogique et pour que la représentation électrique soit cohérente, il faudrait un peu plus de un bit (ce qui ne serait plus vraiment un booléen car plus de 2 valeurs différentes possibles) !
Déjà, comment peut-tu prétendre que parce que l'on ai parlé du sokoban que ça soit forcément du C ? On se trouve dans la section C++ du forum là.
dangerous > Tout à fait d'accord avec toi, pour les tests de booléens il convient d'utiliser la méthode que tu as décrite.
en fait true et false ne sont pas des constantes mais des mots clés
Tout à fait ! Quand je voulais dire constante je parlais de ça bien évidemment, pas des defines ou des const machin chose ! (je n'ai pas employé le terme exact de chez exact)
ReSalut chers camarades ! Je suis de retour avec une nouvelle question !
Alors voila, dans mon programme, j'utilise un tableau d'une structure que j'ai créée.
Le probleme est que j'aimerai pouvoir changer la taille de mon tableau en cours de programme. C'est a dire, par exemple: imaginons que mon tableau soit de la forme garde[nbgardes], et que je veuille en rajouter un ( garde ) ! Comment faire ?
Il y a certe la méthode barbare qui consiste a creer un tableau de 50 et comme ca je ne serai pas embeter, mais c'est n'est pas trés .... "optimal"
Auriez-vous une solution ?
Je me demandais si ceci pouvait être une solution correcte:
Si tu veux faire via des new et delete, n'oublie pas de faire delete avant de refaire un new! Il te faut un tableau temporaire, ou un tableau cible.
L'alternative est std::vector. Je te laisse faire qq recherches dessus, le fonctionnement n'est pas trop compliqué.
Ok merci, je viens de voir ce que donne les "vector". Ca a l'air bien mais j'ai peur de m'embrouiller l'esprit plus qu'autre chose en les utilisant. Je vais reflechir.
En tout cas merci pour ton aide et ton conseil !
on peut s'embrouiller avec le T de la STL. C'est un outil fabuleux la meta-programmation mais c'est comme divulguer que la terre est ronde au 9e siecle à des programmeurs qui ne l'ont jamais utilisé.
Sidus, t'inquiète pas : les vecteurs ne morts pas et ne feront pas de toi un moins bon programmeur ou plus paresseux, c'est plutôt une force du langage C++!
Bonjour! Je déterre mon topic car j'ai une nouvelle question:
Avec la SDL, y a t il moyen de forcer une image à se blitter par dessus les autres ? Je m'explique : j'ai besoin de coder un truc du genre
Ne déterre pas les topic comme ça, recrée en. Surtout que ce n'est pas le sujet.
Pour répondre à ta question, l'affichage se fait à chaque fois "par dessus" ce qui existe. Si tu veux que ce soit la surface1 qui soit dessus la 2, alors affiche la après.
Primo je préfére deterrer mon topic, déja parce que c'est le mien, ensuite parce que c'est toujours le sujet ( "Conseil en tout genre") et pour finir je trouve plus malin d'avoir toutes les réponses a mes questions au même endroit.
(Par contre si même les modérateurs préférent que je créé un nouveau topic, alors je le ferai.)
Secondo, j'aurai préféré que tu lises ma question en entière :
Citation : Sidus
( je ne peux pas juste changer l'ordre )
Mais je te remercie pour ta réponse quand même.
N'existe t il donc point une façon de forcer l'ordre d'apparition des images ?
De plus j'ai une autre question: Est il possible d'enregistrer plusieurs images en une. Je m'explique: durant l'execution de mon code, je blite 2 images sur mon ecran, par exmple surface1 et surface2. Ce que je voudrai c'est une fonction qui renverai une seul image dans laquel il y aurai mes 2 surfaces.
Pourquoi il ne faut pas déterrer de vieux topic ? Parce que ceux qui vont te lire vont lire depuis le début et perdre leur temps. En plus si tu crées un nouveau topic la recherche pour les _autres_ est plus facile. (Dans le sens : y a pas que toi qui te pose cette question ci, ou celle là, ...)
Tu peux après (pour l'ordre d'affichage) créer une classe qui s'occupe de gérer la profondeur. (Du style un conteneur trié en fonction de Z et qui s'affiche dans l'ordre.)
Pour ta dernière question, j'ai pas bien compris, tu veux les superposer, les mettre à côté de l'autre, dans un fichier, ... ?
Bon OK je créé un nouveau topic
Pourrais tu m'expliquer un peu plus ta technique pour blitter dans l'ordre que je veux s'il te plaît? Voici le lien du nouveau topic: Questions sur la SDL
Conseils en tout genre
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
La maîtrise des fondamentaux est le fondamental de la Maîtrise.