4 Utilisateur(s) en ligne

Oltana.net 02 Décembre 2023 à 19:38:42 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.


Connexion avec identifiant et mot de passe
Nouvelles:
Bascule sur SMF faite!
 
 
Accueil Aide Rechercher
Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: [PHP] Générer une grille de coordonnées  (Lu 21870 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Norore
Animateurs
****
Hors ligne Hors ligne

Sexe: Femme
Messages: 369



Voir le profil WWW
« le: 06 Février 2008 à 22:30:53 »

Bonsoir.

J'aurais une question à poser aux pros du PHP ^^ ! Un ami à moi a un projet de carte pour un jeu. Sur cette carte, il veut pouvoir y afficher différentes choses (villes, ressources...), pour l'instant, il affiche ces images via le css. Il a déjà entré 100 villes rien qu'en css... Autant vous laisser deviner le boulot colossal rien que pour ça, ça donne le vertige Clin d'oeil !
Journalisée

Citation de: Secondat de Montesquieu
Je me croirais le plus heureux des mortels si je pouvais faire que les hommes puissent se passer de leur préjugé.
Marmotte
Modérateur Global
*****
Hors ligne Hors ligne

Sexe: Homme
Messages: 554



Voir le profil WWW
« Répondre #1 le: 07 Février 2008 à 14:37:57 »

Euh... j'ai pas trop compris...

Les villes sont ou ? juste dans sa tête, dans une base de données ?
Ca doit pouvoir changer (carte dynamique) ou ca ne changera jamais ?
Et a l'affichage ca donne quoi ?

Il y a des tas de façons de représenter une carte...
Journalisée

Norore
Animateurs
****
Hors ligne Hors ligne

Sexe: Femme
Messages: 369



Voir le profil WWW
« Répondre #2 le: 07 Février 2008 à 14:57:53 »

Citation de: "Marmotte"
Euh... j'ai pas trop compris...

Les villes sont ou ? juste dans sa tête, dans une base de données ?
Ca doit pouvoir changer (carte dynamique) ou ca ne changera jamais ?
Et a l'affichage ca donne quoi ?

Il y a des tas de façons de représenter une carte...

1) les villes sont sur une carte, mais elles sont susceptibles de ne pas être au même endroit lors de la sortie du jeu (nous nous référons actuellement à des cartes de fans Clin d'oeil ?
Journalisée

Citation de: Secondat de Montesquieu
Je me croirais le plus heureux des mortels si je pouvais faire que les hommes puissent se passer de leur préjugé.
superjun
Posteur assidu
****
Hors ligne Hors ligne

Messages: 137



Voir le profil
« Répondre #3 le: 08 Février 2008 à 16:38:21 »

Si j'ai bien compris le truc, actuellement il définit la position des villes (ou n'importe quoi d'autre qui doit se trouver sur la carte) avec un CSS en indiquant la position en pixel (ou n'importe quelle autre unité). Je suppose que s'il utilise un CSS, l'affichage des différentes images se fait au niveau du navigateur (ce n'est pas une image unique générée par PHP)

Le système d'affichage et de mesure de la 'distance' des pixels étant déjà une sorte de système de coordonnées (tu peux définir un point sur une image grâce aux coordonnées X et Y du pixel), pourquoi vouloir changer ?
Après, pour automatiser, il pourrait bien entendu créer un modèle unique à toutes les images, dont les données (nom, lien, type, coordX, coordY, dimmensions, etc) se trouvent dans la base de donnée, et de générer le CSS avec PHP.
Ainsi, un seul bloc contenant toutes les données nécessaires à l'affichage d'une image pourra être réutilisé à l'intérieur d'une boucle (en remplaçant lesdites données par des variables, dont le contenu est fourni par la BDD).

Avec ce système, il faudra bien entendu entrer chaque données de chaque images à la main, mais d'une manière beaucoup plus succinte et donc beaucoup plus efficace. En outre, la manipulation (ajout, modification, mise à jour, etc) de ces données sera beaucoup plus simple.

Je ne sais pas si ça a éclairci un peu le sujet, ne voyant pas exactement ce que tu veux faire, mais j'espère que ça t'as quand même un peu aidé ;)
Journalisée


What isn't remembered never happened...
Norore
Animateurs
****
Hors ligne Hors ligne

Sexe: Femme
Messages: 369



Voir le profil WWW
« Répondre #4 le: 08 Février 2008 à 18:03:01 »

Citation de: "superjun"
Le système d'affichage et de mesure de la 'distance' des pixels étant déjà une sorte de système de coordonnées (tu peux définir un point sur une image grâce aux coordonnées X et Y du pixel), pourquoi vouloir changer ?

Si un jour il doit rentrer, je ne sais pas, disons... 1.000 nouvelles coordonnées de gisement d'or, s'il doit tout se taper à la main, j'espère qu'il aime le café Sourire ?

Citation
Avec ce système, il faudra bien entendu entrer chaque données de chaque images à la main, mais d'une manière beaucoup plus succinte et donc beaucoup plus efficace. En outre, la manipulation (ajout, modification, mise à jour, etc) de ces données sera beaucoup plus simple.

C'est exactement ce que je cherche en fait Clin d'oeil[/quote]

Oui, un peu, merci Très souriant !
Journalisée

Citation de: Secondat de Montesquieu
Je me croirais le plus heureux des mortels si je pouvais faire que les hommes puissent se passer de leur préjugé.
superjun
Posteur assidu
****
Hors ligne Hors ligne

Messages: 137



Voir le profil
« Répondre #5 le: 08 Février 2008 à 19:39:06 »

Citation
Si un jour il doit rentrer, je ne sais pas, disons... 1.000 nouvelles coordonnées de gisement d'or, s'il doit tout se taper à la main, j'espère qu'il aime le café Clin d'oeil

Citation
Ah tiens, je ne savais pas qu'on pouvais générer le CSS avec PHP, comment peut-on faire ça :) ?
Le CSS est un fichier texte tout simple, au même titre qu'un fichier HTML. Il est reconnaissable au fait qu'il a une syntaxe particulière qui peut être interprétée par les navigateur afin de mettre les pages en forme. Au même titre qu'un fichier HTML ou qu'un fichier PHP.
Maintenant, ce que fait le PHP, c'est (si on abrège) envoyer des données texte, généralement HTML, à un navigateur. Ca c'est l'usage basique. Mais il peut aussi manipuler des bases de données, ou traiter de véritables fichiers (images, textes, etc). Bon ça c'est la théorie. En application pratique ça donne ça : Le PHP fait ce que tu lui demande et l'envoie au navigateur.
Si tu lui donnes les instructions nécessaires, il va te créer une page HTML. Mais pour ça, tu dois entrer les balises HTML, le code HTML, et tout ce qui va avec le HTML. En gros, le PHP te permet de traiter le contenu des fichiers HTML que tu envoies à l'internaute.
Mais il permet en fait de traiter n'importe quel fichier texte, y compris CSS.

Dans un fichier HTML, tu appelles une CSS par
Code:
<link rel="stylesheet" type="text/css" href="feuille_de_style.css" />
Mais si tu remplace feuille_de_style.css par CSS_dynamique.php ça marche aussi, vu que la balise <link> avec l'attribut rel="stylesheet" indique au navigateur qu'il s'agit en fait d'une CSS.

Donc tu peux générer ta feuille de style grâce à PHP comme si tu générait n'importe quel texte, avec des variables et tout.
Exemple (le code n'est pas forcément correct) :
Code:
<?php foreach($villes_BDD as $ville)&#58; ?>

img#ville_<?php echo $ville['id'&#93;;?> {
width:<?php echo $ville['width'&#93;; ?>px;
height:<?php echo $ville['height'&#93;&#58;?>px;
position: relative;
right: <?php echo $ville['coordX'&#93;; ?>px;
bottom: <?php echo $ville['coordY'&#93;; ?>px;
}

<?php endfor; ?>

Ce qui pourrait donner, avec des valeurs fictives :

Code:
img#ville_1 {
width: 155px;
height: 120px;
position: relative;
right: 200px;
bottom: 650px;
}

img#ville_2 {
width: 50px;
height: 50px;
position: relative;
right: 680px;
bottom: 253px;
}

img#ville_3 {
width: 85px;
height: 50px;
position: relative;
right: 120px;
bottom: 100px;
}

...

Et tu peux mettre tous les attributs que tu veux, avec éventuellement une correspondance dans la base de donnée (par exemple une URL d'image).

Bon ça c'est la version basique. Le navigateur devant à chaque chargement vérifier la CSS, le serveur devra recréer sans cesse la même page. On peut optimiser en utilisant un système de cache, mais c'est déjà plus compliqué.
Tu peux aussi peaufiner en envoyant des infos supplémentaires au navigateur dans les headers avec PHP, ou créer des conditions, ou n'importe quel traitement de données avant de créer ta page CSS.

Ce premier apperçu tente simplement d'expliquer le fait que PHP ne sert pas qu'à générer du HTML.
Journalisée


What isn't remembered never happened...
Norore
Animateurs
****
Hors ligne Hors ligne

Sexe: Femme
Messages: 369



Voir le profil WWW
« Répondre #6 le: 08 Février 2008 à 23:44:14 »

Citation de: "superjun"
Si c'est le cas, s'il doit vraiment entrer 1000 coordonnées à la main, c'est qu'elles ont quelque chose de particulier qui fait qu'un script ne pourrait pas les générer automatiquement. Sinon, un script pourrait aussi très bien fonctionner (génération aléatoire de coordonnées + insertion automatique dans la base de donnée) :? ... Donc, du coup, bah il va bien falloir qu'on puisse enregistrer les nouvelles données d'une façon ou d'une autre, et plus ce sera simple, mieux ce sera je pense, non :huh: ? A moins d'utiliser les fonctions mathématiques incluses dans php et de faire faire les calculs au script à chaque fois.
L'idée de départ est tentante mais du coup, je me demande ce qui serait le mieux au final : faire un fichier php pour le css, générer une grille ou un tableau de coordonnées ?

Si je ne suis pas claire dans ce que j'essaie d'exprimer par écrit, n'hésitez pas à me le dire, je sais que je m'exprime mal à l'écrit mais j'essaie de faire des efforts :ange ...
Journalisée

Citation de: Secondat de Montesquieu
Je me croirais le plus heureux des mortels si je pouvais faire que les hommes puissent se passer de leur préjugé.
superjun
Posteur assidu
****
Hors ligne Hors ligne

Messages: 137



Voir le profil
« Répondre #7 le: 09 Février 2008 à 00:15:20 »

En fait, je crois que je comprends pas vraiment ce que tu veux faire. Je comprends pas ce que tu veux dire par "grille" et "tableau de coordonnées". Dans mon esprit, c'est trois fois la même chose, mais sous un autre angle.
Dans tous les cas, si tu dois recalculer les coordonnées ou je sais pas quoi, tu as l'ancienne méthode, éprouvée, de tout faire "à la main", et tu as celle d'utiliser un script.
La deuxième demande bien sûr une phase de configuration du script à chaque utilisation (quoique) (sans compter la programmation du script en lui-même), mais si elle est bien faite, elle permet d'économiser un temps précieux.
Il ne faut pas oublier non plus que si tu programmes un MMO, tu dois faire en sorte que l'environnement et le joueur puisse intéragir automatiquement avec les données. Donc un script est mieux indiqué.

Sinon, pour en revenir au tableau de coordonnées, c'est exactement la fonction qu'endossera la base de donnée à ce niveau. Le script qui générera le CSS sert uniquement de pont entre la base de donnée et l'affichage sur un écran. C'est ce qui permet de transformer les coordonnées en quelque chose de visible.

Si tu veux, on peut en discuter sur MSN (ce serait beaucoup plus pratique, en outre) mais il ne faut pas compter sur ma disponnibilité en semaine ^^
Journalisée


What isn't remembered never happened...
Norore
Animateurs
****
Hors ligne Hors ligne

Sexe: Femme
Messages: 369



Voir le profil WWW
« Répondre #8 le: 09 Février 2008 à 09:54:19 »

Citation de: "superjun"
Il ne faut pas oublier non plus que si tu programmes un MMO, tu dois faire en sorte que l'environnement et le joueur puisse intéragir automatiquement avec les données. Donc un script est mieux indiqué.

Mais je ne programme pas de MMO moi :ange !

Citation
Si tu veux, on peut en discuter sur MSN (ce serait beaucoup plus pratique, en outre) mais il ne faut pas compter sur ma disponnibilité en semaine ^^

Ce serait avec plaisir mais ça fait 10 jours qu'on se partage le même PC à 4 chez moi, notre ADSL a laché et Orange mais trois ans à réparer Clin d'oeil !
Journalisée

Citation de: Secondat de Montesquieu
Je me croirais le plus heureux des mortels si je pouvais faire que les hommes puissent se passer de leur préjugé.
Patami
Administrateur
*****
Hors ligne Hors ligne

Messages: 599



Voir le profil WWW
« Répondre #9 le: 09 Février 2008 à 12:52:33 »

salut norore

étant donné que les différents éléments sur la carte n'ont pas une position logique dans un MMO (ils ne sont pas alignés d'une façon précise, ils ne peuvent pas être résumés par une fonction), que tu passes par le css pur ou que tu génères ce css à partir de données inscrites dans une base de données, l'encodage de départ des coordonnées de chaque élément est obligatoire. Ca prendra des heures, oui ..
Journalisée

Votre site 100% configurable en un tour de main, c'est désormais possible avec KwsPHP
Pages: [1]   Haut de page
Imprimer
 
Aller à:  

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines