


Jyaif (./29) :
Un conseil qui m'aurait été utile quand je suis passé de la TI au PC et qui pourrait peut être t'être utile, c'est de t'en foutre totalement des performances. Mais vraiment quoi. Moi, même en savant que faire des optimisations prématurément c'était mal, j'avais un pincement au coeur quand je faisais un truc pas optimisé. Peut être que toi aussi inconsciemment ça te bloque et t'empêche de prendre de la hauteur.
Jyaif (./29) :
C'est peut être ça la source du "problème", tu es trop perfectionniste?
Souane (./30) :
sauf que j'aime bien coder ce qu'il est possible de coder et ensuite aviser, histoire de repousser ces questions à plus tard
Souane (./30) :
Typiquement, j'aime bien commencer par définir puis coder les classes du "Modèle" (ie. les classes qui s'occupent des données au coeur du programme et non de l'interface graphique ou des trucs compliqués)
Sasume (./34) :
Personnellement j’ai compris depuis le début que tu avais besoin d’afficher des sprites sur un plan, mais je n’ai toujours pas compris ce que fait l’application au fond. Un jeu ? Quel jeu ? Avec des ennemis ? Qui sont capables de faire quoi ? Qui ont quelles caractéristiques ?
Folco (./40) :Pour pouvoir le découper en blocs fonctionnels pour le coder. Et tu as beau le connaître, une fois que tu mets tout au clair par écrit, tu t'aperçois souvent de petits détails que tu avais oubliés, mais qui peuvent avoir une influence importante sur la structure.
Je veux dire que c'est sûrement important, mais que je n'en vois pas l'intérêt dans l'immédiat
Folco (./45) :Ok
J'ai donc à designer pour le moment :
- un curseur qui se ballade sur la totalité de l'écran
- des icones qu'on peut cliquer et qui réagissent au passage de la souris
- des emplacements de listes déroulantes avec deux flèches pour faire défiler le contenu de la liste- un fond d'écran (une image fixe)
commençons par le curseur :Si je choisis de tout redessiner à chaque frame (je descend pas trop bas en disant ça ?), j'ai juste besoin de récupérer les coordonnées du curseur() et de l'afficher()C’est quoi exactement la fonction curseur() ?
Je vois donc une classe avec :Ok
- les coordonnées de la souris, accessibles par les autres classes pour les effets de survol par exemple (tiens, un accesseur à écrire)
- une méthode d'affichage- le sprite de la souris
Ensuite pour les icones, il faut :C’est quoi la fonction actuel() ?
- les afficher()
- les modifier au survol()
- les modifier en cas de clic()
- leur faire lancer un nouveau module en quittant l'actuel() une fois le clic releasé
- elles doivent connaitre leurs coordonnées à l'écran (qui est de taille fixe)
- elles doivent connaitre leurs dimensions- elle doivent connaitre l'adresse de leur sprite
Qu'est-ce qui va (pas) ? Je descend trop bas ? J'aborde pas bien les choses du tout ? Je suis déjà trop dans l'implémentation ?Ça me semble un bon début
Sasume (./48) :
C’est quoi exactement la fonction curseur() ?
Sasume (./48) :
Pour ce qui est de la méthode d’affichage (redessiner tout ou pas), je n’en ai aucune idée, je n’ai jamais fait ce genre de choses sur PC. Mais j’imagine que c’est ce qu’il y a de plus simple, et vu la puissance des bêtes actuelles çe ne posera pas de problème de perf.
Sasume (./48) :
C’est quoi la fonction actuel() ?
Sasume (./48) :
J’ai oublié de le dire mais je pense que dans l’ordre il faut d’abord penser à ce que permettra de faire l’objet (quelles sont ses opérations publiques) et ensuite seulement se poser la question des attributs internes privés (là les coordonnées, dimensions, etc.), qui peuvent de toute façon évoluer sans problème au fur et à mesure du développement.
Sasume (./48) :
Ça me semble un bon début
Folco (./49) :
C'est là que je commence à coincer en général...
Si je clique sur l'icone "choisir une partie", je vais passer de l'écran "introduction" à l'écran "choisir". Pour ça, je change carrément de module dans mon code : une autre boule infinie dans un autre fichier (niveau mémoire, tout ce qui est de "introduction" est déchargé, et je repars pratiquement à 0, sauf éventuellement quelques trucs communs comme le curseur).
Souane (./51) :
Model-View-Controller, ça te dit quelque chose, sinon ? (c'est encore un pattern, et il est très très très utilisé).
Folco (./52) :
- un module est un objet
- il récupère des inputs (souris, clavier) - il affiche un rendu à l'écran
Folco (./49) :Ok, ce n’est pas vraiment une opération, c’est juste un getMachin.Sasume (./48) :récupérer les coordonnées du curseur()
C’est quoi exactement la fonction curseur() ?
Souane (./55) :C’est parfois impossible de faire autrement. Genre en Web tu as vraiment la vue d’un côté (la page Web), le modèle de l’autre (la partie métier), et entre les deux des contrôleurs qui s’occupent de traiter l’action demandée par l’utilisateurs (la requête HTTP, qui contient des paramètres comme des champs de formulaires) en faisant appel au modèle puis affichent une nouvelle vue (page Web) en fonction du résultat.
Moi je ne comprends toujours pas comment ça s'implémente exactement, et je me limite à mettre le modèle d'un côté et "view-controller" de l'autre côté dans les mêmes classes, chaque classe correspondant à une fenêtre avec un contenu différent associée à une méthode qui détecte gère tous les éléments (clics, etc.) Avec des gros programmes c'est recommandé de séparer view et controller mais j'ai jamais eu le temps de me pencher sur la question
Sasume (./57) :
Quels sont les différents « modules » possibles ?