Mais pour moi d'un côté si c'est normal vu que j'affiche sans cesse une partie de 800x600 de la carte. C'est qu'à mon avis on ne dois pas faire comme ça. J'ai aussi pensé à n'afficher la carte que lorsque le perso se déplace mais il n'irait pas bien vite vu que on retournera pendant le déplacement à 4 FPS...
C'est justement ça ma question : comment faire ....
plus loins dans le tutoriel tu apprendra a ne calculer que les tile qui seront afficher sur ton écran (donc les tile qui dépasse seront ignorer en quelque sorte)
Sa devrais déjà te faire gagniez quelque frame(se serait déjà bien plus fluide) , mais bon moi ma premier carte fessais quelque chose comme 150tile sur 50 ,et même la je nais aperçu aucun lag , je tu devrais peut-être poster ton soucis sur le forum avec ton code complet.
C'est la méthode que j'utilise actuellement. Seulement, j'utilise une fenetre en 800x600 et non en 400x300 comme dans le tuto.
Et c'est bien normal que tu n'a apercu aucun lag vu que tu n'affiche qu'une seule et unique fois alors que moi je l'affiche sans cesse.
tu veu dire qeu tu affiche plusieurs fois ta map entière dans une seul boucle?
Mais si tu parle d'afficher une fois a chaque boucle , c'est se que je fait.
totorigolo > Meme si SDL est lente, il est anormal d'avoir un framerate aussi bas.
Tu utilises SFML qui normalement est tres rapide, il faudrait voir si tu ne flip pas trop par exemple : une erreur classique est de flipper apres chaque blit.
Il doit y avoir une coquille, a toi de la trouver
Bonjour !
Tout d'abord, félicitations pour cet excellent tuto !
J'ai juste une question, pourriez vous m'éclairer ?
char** res;
res = malloc(schema->w * sizeof(char*));
res[i] = malloc(schema->h * sizeof(char));
Voilà, serais t il possible que l'on m'explique pour quoi on passe par char**, puis char*, puis char ? Merci^^
PS : Si on me renvoie au cours sur les pointeurs, sachez que j'y suis déjà allé et que je n'ai pas compris quand même.
Actuellement, je n'ai pas encore eu le temps de trop continuer, beaucoup de boulot et de choses à faire, un vrai emploi du temps de ministre !
Mais bientot la suite !
@Fvirtman: j'ai crée un petit editeur de niveau pour ton tuto :
(cliquer pour agrandir)
il génére le tableau des nombres dans un fichier *.txt (ou autre).
Si ça t'intéresse, envoie moi un mp et je te donnerai le programme (et les sources si tu veux(c'est du java))
Je pense que ce programme pourra intéresser des personnes ici ! Apres il ne reste plus qu'a faire une fonction ChargerMap qui reprend ton format et on peut l'intégrer directement dans le tuto.
Je ne comprend pas très bien le principe ici du tableau : comment fonctionne-t-il et pourquoi passe-t-on d'un tableau à une entrée à un tableau à double entrée ? Est-il possible de créer un fichier dans lequel entrer les données du tableau et de lire la carte à partir de celui-ci ? J'ai déjà réalisé des petits programmes en utilisant cette méthode mais j'ai remarqué que je ne pouvais ouvrir que des fenêtres carrées. Apparement avec ta méthode on peut ouvrir des fenêtres rectangulaires mais je ne comprend pas comment tu as fais, peux-tu m'expliquer ?
Le tableau a une entrée est un tableau de chaine, une chaine étant un tableau, on a bien un tableau a double entrée de char
Oui, sinon, il est possible de passer par un fichier texte. Je pense qu'un jour je modifierai le premier chapitre, en rajoutant cette option. Actuellement, je propose la méthode "en dur dans le fichier C", puis directement la méthode par paint. Je mettrais une méthode par fichier texte externe.
Si tu ne peux ouvrir que des fenetres carrées, et que le rectangulaire ne marche pas chez toi, ça veut tres certainement dire que tu t'es emmêlé entre les x et les y, et que donc ça ne marche que si x = y (donc carré).
C'est une erreur classique.
Salut.
Je n'ai pas lu le tutoriel de fond en comble, il a l'air très intéressant, mais quelque chose me déçoit un peu : l'indentation de tes codes.
Peu d'espaces, peu de sauts de lignes - provoque des gros pâtés assez rebondants à lire, des tabulations de 8 (?) espaces. De plus je ne suis pas fan des fonctions à >= 8 paramètres, mais cet avis n'engage que moi et ton organisation est surement meilleure que la mienne.
Autre point : pourquoi les noms de fonctions sont en français ?
Je sais que je m'attarde plus sur la forme que sur le fond, mais ça me semble être un point important à améliorer.
quelque chose me déçoit un peu : l'indentation de tes codes.
Peu d'espaces, peu de sauts de lignes - provoque des gros pâtés assez rebondants à lire,
Personnellement, je déteste les sauts de ligne en plein milieu de fonction.
Pour moi, un saut de ligne au milieu d'une fonction, ça veut dire "la fonction fait 2 choses distinctes, mais j'avais pas envie d'en faire deux".
Je préfère une fonction compacte (mais courte), sans exagérer bien sur (par plusieurs commandes sur la meme ligne) plutot qu'une fonction de 200 lignes avec des sauts de ligne a tout va.
Pour moi, une fonction doit avoir une seule tâche, donc un seul "paragraphe", sinon je découpe.
C'est pour cela que mes fonctions sont compactes, mais restent petites. Je comprends qu'on n'aie pas le meme point de vue.
Tu me parles d'espaces, a quel endroit fais tu allusion a propos des espaces manquants ?
Citation : Monsieur_JaKy
des tabulations de 8 (?) espaces.
En effet, certains alinéas sont peut etre un peu trop grands, j'ai copié collé ce code depuis visual C++ 2005 (qui pourtant ne fait pas des alinéas si grands), et ça s'est traduit comme ça. Peut être avais je mal indenté à la source.
Je ferai attention la prochaine fois a cela.
Citation : Monsieur_JaKy
De plus je ne suis pas fan des fonctions à >= 8 paramètres, mais cet avis n'engage que moi et ton organisation est surement meilleure que la mienne.
En effet, j'ai fait des fonctions avec beaucoup de paramètres et c'est en général à éviter. Je pense en particulier à la fonction "ChargerMap" qui s'étoffe sur les 3 premiers chapitres, en s'assouplissant au fur et à mesure, et donc en prenant davantage de paramètres.
C'est à éviter car ça peut ralentir dans une zone critique. Cependant, cette fonction étant appelée qu'une fois, cela n'a aucune impacte. Mais peut être verrais je a factoriser un peu les paramètres à terme.
Quoiqu'il en soit, personnellement, je n'aime pas trop remplir des structures pour les passer aux fonctions (comme SDL_Rect ou beaucoup de fonctions de l'API Windows), mais c'est personnel.
Quant a mon organisation de code meilleure que la tienne, je dirais que pas forcément Chacun a sa façon de coder, et j'accepte qu'on me dise qu'on ferait autrement. Ce que je fais n'est pas parfait, et est critiquable !
Citation : Monsieur_JaKy
Autre point : pourquoi les noms de fonctions sont en français ?
Euh... Parce que j'habite en France, que je parle mieux le français que l'anglais, et que le tuto est rédigé en Français par un français (moi) et pour des français (mes lecteurs)
Il est vrai que ça fait "in" de mettre des noms de fonctions en anglais (je le fais pas mal pour mon boulot), mais pour un tuto comme celui ci, je me dis qu'un nom français explicite peut être très parlant !
Merci pour ton post et ta franchise Je tiendrai compte de cela pour la suite !
L'intérêt principal de ton tuto n'est pas (que)dans les codes...
La manière que tu as de présenter les concepts, trucs et astuces propres à la création de ce genre de jeux, permettent déjà à ton tuto de se poser en référence.
Il y a 2 manières de le prendre
On prend les sources, et ça marche.
On comprend le concept, on fait ce qu'on souhaite avec.
Pour ma part, les sources ne sont pas ce qui m'intéresse le plus, mais j'avoue que je suis bien fan de ce tuto.
Juste, vivement que tu aies le temps de rédiger la suite, c'est un plaisir à lire.
Merci !
C'est en effet comme ça que je veux le structure : problématique, solutions possibles (dont des "mauvaises"), une solution retenue, théorie dessus appuyée par des schémas, puis code pour illustrer.
J'ai déja bien entamé le chapitre suivant sur l'animation du perso, mais pas encore fini, et pour le moment hélas, très peu de temps dispo
Personnellement, je déteste les sauts de ligne en plein milieu de fonction.
Pour moi, un saut de ligne au milieu d'une fonction, ça veut dire "la fonction fait 2 choses distinctes, mais j'avais pas envie d'en faire deux".
Certes, les changements ne sont pas extraordinaires, mais je préfère autant ce code-la que le pâté ci-dessus.
Citation : Fvirtman
Je préfère une fonction compacte (mais courte), sans exagérer bien sur (par plusieurs commandes sur la meme ligne) plutot qu'une fonction de 200 lignes avec des sauts de ligne a tout va.
Je suis d'accord la-dessus, mais ne tombe pas trop dans l'excès, ne compacte pas trop ta fonction afin qu'elle ne soit pas illisible
Citation : Fvirtman
Pour moi, une fonction doit avoir une seule tâche, donc un seul "paragraphe", sinon je découpe.
C'est pour cela que mes fonctions sont compactes, mais restent petites. Je comprends qu'on n'aie pas le meme point de vue.
OK, c'est un autre point de vue en effet
Citation : Fvirtman
Tu me parles d'espaces, a quel endroit fais tu allusion a propos des espaces manquants ?
Dans la fonction MoveMap du chapitre Scrolling :
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;
Afin de faciliter la relecture, je mettrais des espaces entre chaque opérateur :
Je pense que cela permet clairement, dans les situations où les conditions sont assez longues, d'y améliorer la lisibilité et la maintenance
Egalement : je mets toujours un espace après une virgule
Citation : Fvirtman
En effet, j'ai fait des fonctions avec beaucoup de paramètres et c'est en général à éviter. Je pense en particulier à la fonction "ChargerMap" qui s'étoffe sur les 3 premiers chapitres, en s'assouplissant au fur et à mesure, et donc en prenant davantage de paramètres.
C'est à éviter car ça peut ralentir dans une zone critique. Cependant, cette fonction étant appelée qu'une fois, cela n'a aucune impacte. Mais peut être verrais je a factoriser un peu les paramètres à terme.
Quoiqu'il en soit, personnellement, je n'aime pas trop remplir des structures pour les passer aux fonctions (comme SDL_Rect ou beaucoup de fonctions de l'API Windows), mais c'est personnel.
OK je comprends.
Citation : Fvirtman
Euh... Parce que j'habite en France, que je parle mieux le français que l'anglais, et que le tuto est rédigé en Français par un français (moi) et pour des français (mes lecteurs)
Il est vrai que ça fait "in" de mettre des noms de fonctions en anglais (je le fais pas mal pour mon boulot), mais pour un tuto comme celui ci, je me dis qu'un nom français explicite peut être très parlant !
Cela me fait penser à un lien que Myphis avait posté.
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)
C'est un choix comme un autre.
Les gens de Linux sont très catégorique sur ce point, et pour eux les gens qui veulent rendre l'indentation à 4 sont un fléau pour la société (bon c'est vrai, ils exagèrent un peu).
Pour eux vu que la tabulation standard est de 8, alors l'indentation devrait être de 8 également.
En voici un extrait :
Citation : Linux Kernel Coding Style, Chapitre 1
Tabs are 8 characters, and thus indentations are also 8 characters.
There are heretic movements that try to make indentations 4 (or even 2!)
characters deep, and that is akin to trying to define the value of PI to
be 3.
× 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