Méthodes d'affichage : question - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Méthodes d'affichage : question (/showthread.php?tid=2715) Pages :
1
2
|
RE: Méthodes d'affichage : question - Ruz - 05-07-2008 voilà ton problème: Citation :il y a une liste (écrit en texte qui ne sort pas de la base de donnée) avec des unités qu'il peut créer. Bref: 1) pas évolutif: le jour où tu rajoutes une unité/batiment, tu dois corriger ta liste sur chaque page qui utilise ces données ===>>> mets ca en bdd, ou en fichier quelque part, mais facilement récupérable 2) t'as réglé ton problème suivant par la meme occasion ^^ a) boucle sur tous les batiments existants (ta liste) b) chargement des batiments crées par le joueur ===> le tout dans un tableau unique (suffit de mettre par exemple un champ "construit' à 0 ou 1) affichage: tu prends tes conditions, et t'affiches ce que tu veux. j'espère que tu comprends l'idée... les trucs en DUR dnas le code, c'est pas terrible, sauf si tu es CERTAIN que ca changera jamais. RE: Méthodes d'affichage : question - manip - 05-07-2008 ok admettons que je stocke ma liste dans un array pour avoir plus facile comme tu dis. Ensuite je fais une boucle comme celle de emaia, mais apres je fais comment pour ajouter mes conditions pour chaque batiment dans ma boucle ? RE: Méthodes d'affichage : question - Ruz - 06-07-2008 foreach($array as $cle => $data) { if($data["construit"]==1) { traitement batiment construit} else{traitement batiment NON construit} } au hasard... maintenant, ben, a toi de faire tes conditions... me semble tellement basique cette question, que je me demande si je l'ai bien comprise??? RE: Méthodes d'affichage : question - manip - 06-07-2008 bof Je suis plutot parti avec $data = mysql_query("SELECT * FROM batiment") $batiment = "0"; for ( $comptage = 1 ; $comptage <= 10 && $batiment != null ; $comptage ++ ) { $batiment = mysql_fetch_array($data); if (($comptage % 10) === 1 && $comptage >= 1 ) {affichage du batiment + conditions pour le lien pour construire} if (($comptage % 10) === 2 && $comptage >= 1 ) {affichage du batiment + conditions pour le lien pour construire} if (($comptage % 10) === 3 && $comptage >= 1 ) {affichage du batiment + conditions pour le lien pour construire} etc } (Cette méthode me permet de mettre des conditions différentes pour chaque bâtiment dans le if ....) Que penses-tu de cette méthode ? RE: Méthodes d'affichage : question - chobedo - 06-07-2008 Pourquoi ne tu fais pas comme ça ? $data = mysql_query("SELECT * FROM batiment"); while($batiment = mysql_fetch_array($data)) { if($batiment['nom'] = 'machin') { ... } elseif($batiment['nom'] = 'truc') { ... } } RE: Méthodes d'affichage : question - Cartman34 - 06-07-2008 Je vais commencer fort mais je déconseille les requête pour querir de telles données...tout simplement car elles ne varient pas. Le mieux est qu'elles soient attribuées dans un tableau dans un fichier inclus...c'est léger, propre et ordonné. En général il y a différents types de constructions (bâtiments, recherches, flottes sur l'exemple d'IGame) Les descriptions sont enregistrées dans différents tableaux: un tableau de données et un de langage. Le premier contient les caractéristiques de la construction (prix, prérequis etc...)et le second les textes d'affichages variants avec les langues (descriptions, nom affiché). Chaque construction correspond à un ID. Ensuite, pour lire les différents bâtiments... il y a 2 méthodes principales: La première(y'a pas vraiment d'ordre...) est de classer les types de constructions en fonction d'une plage d'ID(de 0 à 99 pour les batiments, de 100 à 199 pour les recherches etc...) mais cette méthode est lourde et limitée. cette méthode affiche avec une boucle FOR. La seconde est celle que je préfère...on a un tableau répertoriant les différents types de constructions contenant chacun un tableau des ID lui appartenant. Cela n'exécute du coup que le nécessaire, une construction peut etre dés/activée facilement etc... Cela est à afficher avec un FOREACH. Après vérifier les constructions en cours est une autre histoire, c'est inclut dans els données de la bdd qu'on enregistre, suffit de vérifier que le champs correspondant à l'ID du batiment ou celui du temps vaut 0(ou est vide, ce qui est pareil avec empty()). PS: je n'ai cité aucun code car ce n'est qu'une section de conception, le code est inutile. RE: Méthodes d'affichage : question - Ruz - 06-07-2008 manip a écrit :bof euh... 1) "$comptage <= 10" ==> le "10" vient d'où? (ma grosse question, en fait... tout le reste en découle) "$batiment != null" ==> intéret? le "10" serait-il arbitraire? "$comptage <=mysql_num_rows($data)" à la place? (ce qui serait encore mieux : while($batiment=mysql_fetch_assoc($data)){} ) 2) pour chaque batiment, tu vas sortir une ligne de ce type????? "if (($comptage % 10) === 1 && $comptage >= 1 ) {affichage du batiment + conditions pour le lien pour construire}" replacement de if (($comptage % 10) === 1 && $comptage >= 1 ) par if($comptage===1) serait pas plus court??? (seule possibilité, puisque max 10 batiments) d'autre part... des if à la chaine, ca peut s'unir dans un if/elseif/elseif/.../else ou mieux, un switch pour un truc aussi simple... 3) petit truc aussi: (que je commence à appliquer, et ca aide, au final!!!) => sépare ton code de ton affichage là, tu prends, et tu affiches... ah, zut, un peu plus bas, j'ai besoin d'un résumé de ce que j'ai affiché au-dessus.. bon, pas grave, je vais refaire une nouvelle requete, et retraiter tout une 2e fois autrement... bref: requete => stockage en array (ou autre) ... traitements divers ... Affichage enfin, bref... j'aime pas du tout ton code (que j'espère volontairement éclairci... il en manque des trucs). J'ai aussi l'impression que tu captes pas tout ce que t'écris... je me trompe? y a de l'idée, mais pas de structure RE: Méthodes d'affichage : question - manip - 06-07-2008 @chobedo : pas bête du tout, je cherche trop à me compliquer la vie =D @Ruz : le 10 c'est parce que il y avait 10 bâtiments en base de donnée. Oui je l'ai éclairci, car normalement il y a un if par bâtiment... Par contre javais tiré ça d'un totu je crois il y a a bien longtemps...., je ne l'avais pas commenter, donc j'ai des difficultés a relire =) Bon je vais essayer de prendre en compte vos conseils... Je vais donc enregistrer tous les bâtiments du joueur en base de donnée. Faire un while parce que c'est - du moins je pense - le plus simple... Malgrés ce qu'a dit Igstaff je vais opter pour cette méthode car je ne compte pas changer les bâtiments. Je stockerais les descriptions et nom et autres informations des bâtiments dans des array (ainsi je peux calculer le coût en fonction du cout de base et du prochain niveau, vive les maths...) et je ferais appel a une fonction pour afficher le tout, ce qui me permettra de séparer le code de l'affichage (et par la même occasion éviter de faire 50x le même code). Je n'aurais plus qu'a rajouter des conditions dans le if / elseif du while ... Humm voilà qui me semble plus claire et réalisable :good: A moins que je me plante complètement :heuuu: ?! RE: Méthodes d'affichage : question - Eluox - 06-07-2008 Les arrays c'est bon, mangez en Je te conseille la même chose qu'IGstaff, pour avoir travailler avec ce système, et avec Igstaff d'ailleur , et je trouve ce système rapide, simple de modification et pas mal en gros |