JeuWeb - Crée ton jeu par navigateur
[Carte] Système et galaxie - 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 : [Carte] Système et galaxie (/showthread.php?tid=29)

Pages : 1 2 3 4 5 6 7 8


[Carte] Système et galaxie - orditeck - 14-08-2006

Carlou a écrit :Suite a une demande d'une map dans le genre, je vous mets ce petit tuto.

Donc a la clé, une map basée sur un système de Galaxie, système et position bien sûr.
Pas de déplacement dessus, juste de l'affichage.

creer une table table_carte avec 4 colones :
pseudo, Galaxie, systeme, position

<?$pseudo_membre = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM table_membre WHERE `pseudo`='$pseudo_membre'") or die(mysql_error());
$var = mysql_fetch_array ($requete);

$id = $var['id'];
$pseudo = $var['pseudo'];

// jusqu'ici, c'est comme d'hab, on viens chercher les
// informations du joueur.

// recuperation des positions sur la carte du joueur
$requete2 = mysql_query("SELECT * FROM table_carte WHERE `pseudo`='$pseudo_membre'") or die(mysql_error());
$var2 = mysql_fetch_array ($requete2);
$galaxie = $var2['galaxie'];
$systeme = $var2['systeme'];
$position = $var2['position'];

//Changement de vue
if (isset($_POST['galaxie_select']) and isset($_POST['systeme_select'])) // Si changement de vue
{
// si on a changé de vue, les coordonnées changent
$galaxie = $galaxie_select;
$systeme = $systeme_select;

}
else {
//sinon on garde les coordonnées du joueur
$galaxie = $galaxie;
$systeme = $systeme;
}

// Affichage de la barre de changement de galaxie et systeme
echo '<form action="carte.php" method="post">';
echo 'Galaxie : ';
echo '<select name="galaxie_select">';
// on affiche la sélection du système, ici 10 pour le test
for($galaxie_select=1;$galaxie_select<=10;$galaxie_select++){
if ($galaxie_select == $galaxie){
$selected = 'selected';
}
else {
$selected = '';
}

echo '<option value="'.$galaxie_select.'"'.$selected.'>'.$galaxie_select.'</option>';
}
echo '</select>';

echo ' - Systeme : ';
echo '<select name="systeme_select">';
// on affiche la selection du systeme, ici 200
for($systeme_select=1;$systeme_select<=200;$systeme_select++){
if ($systeme_select == $systeme){
$selected = 'selected';
}
else {
$selected = '';
}
echo '<option value="'.$systeme_select.'"'.$selected.'>'.$systeme_select.'</option>';
}
echo '</select>';
echo '<br><br>';
echo '<input type="submit" value="Changer de carte"></form>';
// fin de l'affichage de la barre de changement de galaxie et système

//depart de la carte
echo '<br><br><table width="300" border="1" cellspacing="0" cellpadding="0" align="center" height="300">';
echo '<tr align="center" valign="middle" height="60">';//première ligne de la table

//on va chercher les autres joueurs présents sur cette galaxie et ce systeme
$sql = mysql_query(
'SELECT pseudo, galaxie, systeme, position
FROM table_carte
WHERE galaxie='.$galaxie.' AND systeme='.$systeme.'
ORDER BY position DESC'
) or die(mysql_error());
while ($data = mysql_fetch_array($sql)) {
if (empty($TabMAP[$data['position']]))
$TabMAP[$data['position']] = $data['position']; //je cree un tableau avec les positions
$TabMAP2[$data['position']] = $data['pseudo']; //je cree un tableau avec les pseudos
}
mysql_free_result($sql);

for($pos=1;$pos<=25;$pos++){ // on définit la taille de la carte - ici 25 cases

//*****Gestion des fins de lignes*****
if ($pos == 5 or $pos == 10 or $pos == 15 or $pos == 20){
// si on arrive en fin de ligne
//on ferme la ligne et on va a la ligne suivante
$finligne = '</tr><tr align="center" valign="middle" height="60">';
}
elseif ($pos == 25){
// si on arrive en fin de tableau
//on ferme le tableau
$finligne = '</tr>';
}
//sinon
else
{
//on reste sur la même ligne
$finligne = '';
}
//*****fin de la Gestion des fins de lignes*****

// si case 13 (centre de la carte), on affiche le soleil
if ($pos == 13){
echo '<th align="center" valign="middle" width="60" height="60"><img src="soleil.gif" alt="soleil" height="60" width="60"></th>'.$finligne;
}
else
// si un autre joueur existe sur une position de la carte
if(!empty($TabMAP[$pos])){
//on affiche sa flotte
echo '<th align="center" valign="middle" width="60" height="60"><img src="planete.gif" alt='.$TabMAP2[$pos].' height="60" width="60"></th>'.$finligne;
}
else //sinon
{
// on affiche rien (moi j'ai mis les autres positions pour le test. suffit de faire ctrl+a pour voir apparaitre les positions
echo '<th align="center" valign="middle" width="60" height="60">'.$pos.'</th>'.$finligne;
}
}
echo '</table>'; // on ferme le tableau


?>

voila, pas le temps de détailler, si vous avez des questions, n'hésitez pas Smile
@+
Carlou



RE: Une map 5*5 : methode avec systeme et galaxie - pyromaster - 18-08-2006

Pouvez vous mettre un script qu'on peut copier/coller dans la base de donée pour 'creer une table table_carte avec 4 colones :
pseudo, Galaxie, systeme, position
'


RE: Une map 5*5 : methode avec systeme et galaxie - Plume - 18-08-2006

Bonjour à toi aussi.

Je suis dans un bon jour ...

Code :
CREATE TABLE table_carte (
pseudo VARCHAR(40) NOT NULL,
galaxie VARCHAR(40) NOT NULL,
systeme VARCHAR(40) NOT NULL,
position VARCHAR(40) NOT NULL
)

Voilà GROSSIEREMENT la structure mais pas de clé primaire, les attributs ne sont pas forcément corrects, les types ne sont pas sûrs notamment pour 'position' dont je ne sais pas quel contenu il est destiné à contenir, et d'autres propriétés diverses.

Maintenant passons au détail.
Des formules de politesses sont toujours bienvenue quand on demande de faire quelque chose pour soi, il serait plus facile pour nous si tu etoffais ta demande, car je ne suis pas du tout sûr sur ce coup de satisfaire ta demande entre autre parce que ce ne sera pas suffisant de copier/coller, et pour le plus grand bonheur des débutants quand on ne sait pas faire phpMyAdmin est un outil formidable pour créer ses tables, en plus de nous fournir le code correspondant ce qui nous permet de l'étudier.

En te demandant de m'excuser pour le désagrément que ma maigre contribution pourrait te créer, je te souhaite une bonne fin de journée.


RE: Une map 5*5 : methode avec systeme et galaxie - pyromaster - 19-08-2006

Merci et cetait juste pour avoir une idee de la table!!!
Je ne ferai pas que copier/coller!


RE: Une map 5*5 : methode avec systeme et galaxie - Plume - 19-08-2006

Autant pour moi alors, c'est l'impression que j'ai eu en lisant ton post...


RE: Une map 5*5 : methode avec systeme et galaxie - jo_link_noir - 02-09-2006

bonjours,
avec un ami je me suis lancé dans la création d'un jeu php et en copiant le code, cela indique une erreur :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and systeme= ORDER BY position DESC' at line 1

en gros ça dit "Vous avez une erreur en votre syntaxe de SQL"

alors en dernier recourt, je vient vous demandez de l'aide.
Pourquoi et comment remedier à cette erreur ? (chez pas pourquoi m'ai j'ai l'impression que c'est tout con :heuuu: )

Merci d'éssayer de m'aider, j'suis en phase de déprésion... :malheureux:

il se fait tard ^^
bonne nuit tout le monde

EDIT : la parti de code lol
$sql = mysql_query('SELECT pseudo, galaxie, systeme, position FROM table_carte WHERE galaxie='.$galaxie.' and systeme='.$systeme.' ORDER BY position DESC') or die(mysql_error());

$sql = mysql_query("SELECT pseudo, galaxie, systeme, position FROM table_carte WHERE galaxie='.$galaxie.' and systeme='.$systeme.' ORDER BY position DESC") or die(mysql_error());

avec les guillemet ça n'affiche pas d'erreur mais ça marche toujours pas... de même si je les met à $galaxie et $système...

cette fois bonne nuit ^^ ce fait tard


RE: Une map 5*5 : methode avec systeme et galaxie - Ssin - 02-09-2006

Essaye cela :

Code PHP :
<?php 
$sql
= mysql_query("SELECT `pseudo`,` galaxie`,` systeme`,` position` FROM table_carte WHERE `galaxie`='$galaxie' and `systeme`='$systeme' ORDER BY `position` DESC") or die(mysql_error());

Ca, c'est une monumentale bétise ( a moins que ce soit moi qui en face une Big Grin )

Code PHP :
<?php 
galaxie
='.$galaxie.'

Si tu concatène ca donne ca :

Code PHP :
<?php 
`galaxie`=''.$galaxie.''

Sans concaténé, c'est ca:

Code PHP :
<?php 
`galaxie`='$galaxie'

Et si je peut te donner un conseil, entoure tes champs de `` Wink


RE: Une map 5*5 : methode avec systeme et galaxie - Mensik - 02-09-2006

Salut !

Ou encore, essaies ça :

Code :
$sql = mysql_query("SELECT 'pseudo', 'galaxie', 'systeme', 'position' FROM table_carte WHERE galaxie ='".$galaxie."' and systeme ='".$systeme."' ORDER BY position DESC") or die(mysql_error());

Au fait, si tu choisi tous les champs de ta table, tu n'as qu'à utiliser l'astérisque Wink

Donc :

Code :
$sql = mysql_query("SELECT * FROM table_carte WHERE galaxie ='".$galaxie."' and systeme ='".$systeme."' ORDER BY position DESC") or die(mysql_error());

Donnes des nouvelles ! (h)


RE: Une map 5*5 : methode avec systeme et galaxie - Ssin - 02-09-2006

L'erreur vient pas de la séléction mais du WHERE, certainement à cause de son mauvais concaténage, que je trouve fort inutile, car ca ralenti la requète et ca ne sert a rien Big Grin


RE: Une map 5*5 : methode avec systeme et galaxie - Mensik - 02-09-2006

Ssin a écrit :L'erreur vient pas de la séléction mais du WHERE, certainement à cause de son mauvais concaténage, que je trouve fort inutile, car ca ralenti la requète et ca ne sert a rien Big Grin

Je suis d'accord avec toi qu'un * ralentit la requête en général, mais si la table ne contient que 4 champs et que l'on souhaite choisir les 4 champs, le * est aussi approprié que l'énumération des champs un après l'autre non ?

Mensik