JeuWeb - Crée ton jeu par navigateur
Je cherche un tuto sur les cartes - 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 : Je cherche un tuto sur les cartes (/showthread.php?tid=3619)

Pages : 1 2 3 4


RE: Je cherche un tuto sur les cartes - Argorate - 12-02-2009

Salut,
je ne sais pas si on t'as deja fait la remarque, mais combien de cases comportera ton jeu?
Car un smallint, c'est assez limité selon se que tu fais...


RE: Je cherche un tuto sur les cartes - wild-D - 12-02-2009

un SMALLINT c'est pas sur 65535 ? c'est loin d'être si limité.
une carte de 65535 * 65535; je trouve que ça fait déjà une jolie carte


RE: Je cherche un tuto sur les cartes - Mycroft - 12-02-2009

Il est bien ce tableau :

http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html

Mais je sais jamais quel nom fait quelle taille, impossible de me le rentrer dans le crâne. Si vous avez des memo techniques je suis preneur Smile.


RE: Je cherche un tuto sur les cartes - Krak40 - 12-02-2009

ça m'apprendra à poser des questions aussi tardivement tout en n'étant pas très frais :fete:,
confondu code et tableau de bord phpmyadmin pour mettre en place une table de bdd


RE: Je cherche un tuto sur les cartes - keke - 12-02-2009

65535 * 65535

Si c'est des cases ... ça fais un monde où personne ne risque de se retrouver.

J'ai un simple 128*128 cases, dont la moitié est sous l'eau (donc infranchissable), mais quelques 35 joueurs réguliers ne se rencontrent quasiment jamais...

Après, comme tout, ça dépend du jeu ;-)

Kéké


RE: Je cherche un tuto sur les cartes - Krak40 - 12-02-2009

bon j'ai jeté un oeil,
et je ne comprends pas les parties en gras:

quelqu'un pourrait me dire en français ce que cela veut dire svp ?
pour comprendre la logique, j'ai du mal à visualiser.



Citation :$sql = mysql_query('SELECT batiment, posx, posy, case FROM batiments WHERE posx='.$dirx.' AND posy='.$diry.' ') or die(mysql_error());
while ($data = mysql_fetch_array($sql)) {
if (empty($TabMAP[$data['posx']][$data['posy']]))
{ $TabMAP[$data['posx']][$data['posy']] = $data['batiment']; }
}

mysql_free_result($sql);

et ceci :

Citation :$i=6;//6 cases avant debordement en haut et a gauche
$j=1;
$k=245;//6 cases avant debordement en bas et a droite
while ($i >=1 and $j<=6 and $k<=250){
if ($posx == $i) {$x_debut = $posx-$taille+$j;$x_fin = $x_fin+$j;}
if ($posy == $i) {$y_debut = $posy-$taille+$j;$y_fin = $y_fin+$j;}
if ($posx == $k) {$x_fin = $x_fin-$j;$x_debut = $x_debut-$j;}
if ($posy == $k) {$y_fin = $y_fin-$j;$y_debut = $y_debut-$j;}
$j++;
$i--;
$k++;

}

merci


RE: Je cherche un tuto sur les cartes - Blarg - 12-02-2009

J'ai un peu de difficulté avec la première partie - je ne connais pas la fonction empty(), mais la seconde est très simple à comprendre:
$j++;
$i--;
$k++;

est équivalent à
$j = $j + 1;
$i = $i - 1;
$k = $k + 1;

(bref, à chaques passages de boucles, les valeurs de «j» et «k» sont augmentés, et «i» est diminué de 1)


RE: Je cherche un tuto sur les cartes - Plume - 12-02-2009

Vous ne connaissez pas la fonction empty() ? Elle me semble pourtant assez parlante...

Mais bon, ça ne peut pas vous faire de mal de faire un tour par [ ]


RE: Je cherche un tuto sur les cartes - Krak40 - 12-02-2009

l'incrémentation et empty je sais ce que sais.

mais je ne comprends pas l'action de l'incrémentation ici, qu'est ce qu'elle réalise comme action par rapport à la carte ?

et idem, je n'arrive pas à lire la ligne empty, je n'arrive pas à la traduire du php au français, ce qui fait que je ne comprends pas ce qu'elle fait dans le code exactement.


RE: Je cherche un tuto sur les cartes - Mycroft - 13-02-2009

(12-02-2009, 07:32 PM)Krak40 a écrit : bon j'ai jeté un oeil,
et je ne comprends pas les parties en gras:

quelqu'un pourrait me dire en français ce que cela veut dire svp ?
pour comprendre la logique, j'ai du mal à visualiser.



Citation :$sql = mysql_query('SELECT batiment, posx, posy, case FROM batiments WHERE posx='.$dirx.' AND posy='.$diry.' ') or die(mysql_error());
while ($data = mysql_fetch_array($sql)) {
if (empty($TabMAP[$data['posx']][$data['posy']]))
{ $TabMAP[$data['posx']][$data['posy']] = $data['batiment']; }
}

mysql_free_result($sql);

On part de deux coordonnées $dirX et $dirY.

La requête dans la table 'batiments' cherche si il y a un ou plusieurs bâtiment en $dirX, $dirY.

Le résultat va être accessible sous forme de tableau, ligne de résultat par ligne de résultat (mysql_fetch_array).

Si il y a un résultat on aura quelque chose comme :
$data = array( batiment => "chateau", posx=>3, posy=>5);

Le but de la petite boucle c'est juste de réordonner les données dans le tableau $tabMAP de façon à avoir.

$TabMAP[3][5] = "chateau";

Mais on fait cette opération uniquement si $TabMAP[3][5] est préalablement vide.

Par exemple si on a plusieurs résultat, avec dans l'ordre:
"chateau", 3, 5
"auberge", 3, 5

On assignera $tabMAP[3][5] = "chateau"; mais audeuxième passage on n'assignera pas la valeur "auberge" parce que le tabMAP[3][5] ne sera pas vide.

C'est peut être aussi pour éviter si on a déjà fait une opération similaire sur les unités, d'afficher un bâtiment par dessus une unité.
Si $tabMAP[3][5]= "unitéX"; on va pas réécraser par le nom du bâtiment.