Certes, les changements ne sont pas extraordinaires, mais je préfère autant ce code-la que le pâté ci-dessus.
Ah la c'est une question de point de vue. Personnellement, je n'aime pas ta fonction (modifiée), je la trouve "gruyère". Mais je comprends ce que tu veux faire.
A la rigueur, quelque chose qui me choque moins est la fonction suivante :
if (m->xscroll>m->nbtiles_largeur_monde*m->LARGEUR_TILE-m->largeur_fenetre-1)
m->xscroll=m->nbtiles_largeur_monde*m->LARGEUR_TILE-m->largeur_fenetre-1;
if (m->yscroll>m->nbtiles_hauteur_monde*m->HAUTEUR_TILE-m->hauteur_fenetre-1)
m->yscroll=m->nbtiles_hauteur_monde*m->HAUTEUR_TILE-m->hauteur_fenetre-1;
Ok, je t'accorde que j'aurais du mettre des espaces ici entre les signes
Citation : Monsieur_JaKy
Si tu te tiens au français, le mélange avec le nom des fonctions propres à la SDL est assez inélégant. De plus, certaines de tes fonctions ont soit un nom français soit anglais (LoadImage32, MoveMap / ChargerMap, LibererMap)
Il est vrai qu'il y a du franglais la dedans
Citation
int main(void) /* Code pour illustrer */
{
if (1)
{
if (2)
{
if (3)
{
if (4)
{
int i;
for (i = 0; i < 5; ++i)
{
printf("OK !");
}
}
}
}
}
return 0;
}
Pour moi, ce genre de code est tellement sale que ce ne sont pas la longueur des tab qui me fait mal, mais l'imbrication elle même. Beaucoup trop d'imbrication, c'est affreux. Quand je vois ça, j'ai envie de dire "mais faites des fonctions !"
C'est comme les switchs imbriqués ça, quelle horreur...
Bref, tout ça pour dire que pour moi, 8 ou 4 c'est seulement un choix, y'a pas à blamer Fvirtman pour ça
Ah non, je ne veux en aucun cas le blâmer. Je pense que juste que ces manières de coder, qui ont dû faire ces preuves dans le monde professionnel, peuvent gêner un débutant.
Citation : Fvirtman
Pour moi, ce genre de code est tellement sale que ce ne sont pas la longueur des tab qui me fait mal, mais l'imbrication elle même. Beaucoup trop d'imbrication, c'est affreux. Quand je vois ça, j'ai envie de dire "mais faites des fonctions !"
C'est comme les switchs imbriqués ça, quelle horreur..
En effet, c'était un mauvais exemple. Je pense que la TAB à 8 peut nuire à la lisibilité du code.
Après, si mes remarques ne sont approuvées que par moi, c'est inutile que l'on s'attarde sur celles-ci ! Je veux juste améliorer le tutoriel, mais si Fvirtman et les lecteurs ne sont pas gênés par les codes, alors laissez béton §
Je pense que pour la suite, je verrai pour faire des tabs moins grands
Citation : Monsieur_JaKy
Je pense que juste que ces manières de coder, qui ont dû faire ces preuves dans le monde professionnel, peuvent gêner un débutant.
Ouhouh ! Si tu savais comme le monde professionnel peut etre dégueulasse au niveau code
Tu vois des trucs complètement crades qui auraient valu moins de la moyenne en 1ere année, mais... qui marchent alors on garde.
Tu vois des rustines faites vite fait pour que ça marche rapidement pour le client, tu vois des fonctions de 1000 lignes, tu vois du copier/coller a tout va... De la grosse dégueulasserie...
Et tous mes potes qui bossent en prog me disent pareil. Au début on essaie de faire propre, mais au moindre truc a changer (et il y en a toujours), ça casse, ça rustine, ça scotche dans la hâte (parce que le client attend), et ça devient crado...
Pour ma part, j'essaie de faire pas trop sale, mais je ne suis pas forcément une référence non plus.
Les pixels ici sont codés sous 4 octets donc tu peux les stockers dans un Uint32
image->pixels renvoie un pointeur, mais un pointeur de type void* (un pointeur pur)
Si je veux accéder a ce qu'il y a dessous (donc le pixel) je suis obligé de la caster (=convertir) en un autre type de pointeur (Uint32*) dans ce cas
Bonjour ^^. Je voudrais savoir comment faire pour que mario (ou le carré vert) meurt quand il tombe dans le vide (ou plus précisément passe sur le vide) dans un niveau, mon mario ne peut pas mourir car il vole .
Merci
Je dit simplement que lorsque tu as un probleme, tu recherche dabord la solution par toi meme, soit en reflechissant, soit en cherchant (google + SDZ + developpez + ...)
Puis, si vraiment t'as pas trouver de solution, alors tu creer un nouveau sujet, tu squatte pas ceux des autre.
Merci (c'est dans les regles du forum quand meme).
Je dit simplement que lorsque tu as un probleme, tu recherche dabord la solution par toi meme, soit en reflechissant, soit en cherchant (google + SDZ + developpez + ...)
Puis, si vraiment t'as pas trouver de solution, alors tu creer un nouveau sujet, tu squatte pas ceux des autre.
Merci (c'est dans les regles du forum quand meme).
Sauf que tu remarqueras que ce topic a été spécialement créer pour que les membres ayant un problème avec le tutoriel de fvirtman puisse poste ici. Donc il ne "squatte" pas un topic.
oui je sait que c'est de la logique et de l'algorithme mais je suis en iut génie electrique et informatique industrielle mais les cours que l'on a eu été baser sur le "while", le "do", et le "if" c'est tout. J'ai réussi a faire le programme et comprendre le principal mais le faire tomber dans un trou je ne sait pas faire
En fait je voudrais juste savoir comment mettre la gravité dans un jeu vidéos.
La gravité, j'en parlerai dans la suite du tuto, ce qui permettra de faire tomber les persos.
Tout se base sur F = mA (Newton). Elle jouera sur les vecteurs (rouges) que je présente dans le tuto.
Pour voir si Mario est tombé, si suffira de regarder si sa position y a dépassé une certaine valeur que l'on fixera
A chaque frame, on blit 15*13 = 195 tiles.
On tapisse tout l'écran. Et quand je dis "tapisse", je parlerais plutot de carrelage.
On pose un carrelage à chaque affichage, en prenant le carreau qui va bien suivant le schéma.
Bonjour. Super tutoriel Fvirtman^^
Je veut mettre la variable "mort" sur un tile, comme mur ou vide, et pour l'instant j'ai fait en sorte qu'il soit comme un mur (voir en dessous)
char buf[500];
FILE* F;
int i;
int useless;
TileProp* res = calloc(nombre_props,sizeof(TileProp)); // alloue et met tout a 0.
F = fopen(tileprop,"r");
if (F==NULL)
{
printf("fichier %s introuvable !!\n",tileprop);
exit(-1);
}
for(i=0;i<nombre_props;i++)
{
fscanf(F,"%d %s",&useless,buf);
if (strcmp(buf,"mur")==0)
res[i].mur = 1;
if (strcmp(buf,"mort")==0)
res[i].mort = 1;
}
fclose(F);
return res;
}
int CollisionDecor(Map* carte,SDL_Rect* perso)
{
{
mais j'aimerai que quand on touche ce tile mon personnage meurent et reviennent au début, j'imagine que l'on doit changer quelque chose dans affiche pers mais je ne sait pas quoi. J'ai déjà créer un petit programme avec la mort dedans (voir en dessous) mais je sait pas comment faire pour inclure la mort du perso en touchant le tile.
Tout d'abord, indente ton code avec les balises la prochaine fois.
Ensuite, pour ta demande, il faut modifier la fonction de collision, et lui faire renvoyer une autre valeur si on touche un bloc mortel.
Hey donc déja je félicite fvirtman pour ce tuto super bien rédigé et qui permet a pas mal d'entre nous d'avoir des idées pour pas mal de jeux en 2D !! Par contre un truc que je comprends pas ce topic est bien fait pour poser des questions a l'auteur du tuto pour essayer d'avancer sur son tuto dans le bon sens alors pourquoi vous crieez sur les gens qui posent des questions??
Ils ne crient pas, c'est juste une remarque, car lire un code non indenté et qui est en plus hors les balises spécialement fait pour augmenter la lisibilité.
P.S : j'ai moi même posé une question et ils m'ont rependu le plus gentille-ment possible
alors pourquoi vous crieez sur les gens qui posent des questions??
Pourquoi la terre est ronde?
Pourquoi, j'ai faim?
Pourquoi je ne met pas mon code entre des balises?
Bref, on ne gueule pas sur les gens qui posent des questions! Seulement, un minimum d'efforts est demandé! On est méchant?
Le Terre s'est formée en 50 à 100 millions d'années, il y a de cela 4,565 milliards d'années par accretion. C'est-à-dire qu'il y a eu agglomération de grains de poussière et de débris divers en planétoïdes qui eux-mêmes se sont associés en planète.
La loi de la gravitation découverte par Newton montre que la force gravitationnelle induit une distance minimale entre deux corps. Les débris doivent donc être au plus près du centre du planétoïde pour être suffisament attirés et enfin soudés.
Et le volume satisfaisant au mieux ces conditions est la sphère.
Et d'ailleurs, pour être exact, la Terre n'est pas ronde mais plutôt ''patatoïdale''.
En effet, étant en rotation, la Terre subit la force centrifuge qui tend à élargir le globe au niveau de l'équateur. De plus, elle possède des crevasses (canyons) et des protubérances (montagnes) et le manteau terrestre n'est pas homogène (les matériaux le composant n'ont pas tous la même densité).
terre est ronde
Citation : GurneyH
Pourquoi, j'ai faim?
Parce que il faut manger à diner.
Citation : GurneyH
Pourquoi je ne met pas mon code entre des balises?
Parce que je ne sait pas comment faire et je vais pas passer 100 ans à chercher sa
× 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.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html