JeuWeb - Crée ton jeu par navigateur
Affichage map - 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 : Affichage map (/showthread.php?tid=5051)

Pages : 1 2 3


RE: Affichage map - niahoo - 04-08-2010

(04-08-2010, 09:15 AM)christouphe a écrit : je n'ai pas dit de terminer le script comme un bourrin, mais d'ailleurs, utiliser le try catch ne bloque pas le script, alors que exit() (ou die() ) si. Ou alors j'ai pas compris ton intervention Wink

oui oui, je parlais des "or die()" qu'on voit trainer sur tous les tutos du web, et qui sont copiés collés tel quels sans gestion de l'erreur. C'est ça qui est bourrin, PDO permet les exceptions.


RE: Affichage map - syslog - 04-08-2010

Effectivement au sujet du or die() c'est un bête copié collé de la source sans modification, j'ai honte et je m'occupe de ça, merci!

Je regarde aussi la façon d'adapter le div, maintenant que vous m'avez indiqué d'où cela provient.

Merci à tous, je tiens au courant.


RE: Affichage map - niahoo - 04-08-2010

Autre idée, au lieu de mettre rien dans ta div, tu peux mettre un png transparent. Jusqu'au jour où tu voudras mettre un png qui contient quelque chose, te permettant de "poser" un objet sur ton sprite au sol


RE: Affichage map - syslog - 04-08-2010

J'ai modifié quelques petites choses dont l'ajout du CSS que voici (il était dans le wiki aussi):

Code PHP :
<?php 
.case{
/* position:absolute;*/
width: 30px;
height: 30px;
text-align: center;
background-position: bottom;
background-repeat: no-repeat;
margin-left:0px;
margin-top:0px;
}
Et quelques modif du code dont la requête à qui il manquait une condition..
Code PHP :
<?php 
$curent_y
= -5000;


$query = $bdd->query("SELECT * FROM carte,terrain WHERE x BETWEEN ".$x_min." AND ".$x_max." AND y BETWEEN ".$y_min." AND ".$y_max." AND carte.id_terrain = terrain.id_terrain ORDER BY y,x");

$y=0;
// On génére la map
while($carte = $query->fetch(PDO::FETCH_ASSOC)) {
if (
$curent_y!=$carte['y']) { // Nouvelle ligne
$x=0;
$y++;
$curent_y = $carte['y'];
}
$x++;


$decalageX = $x*30;
$decalageY= $y*30;
$var_carte .= '<div class="case" style="top:'.$decalageY.';left:'.$decalageX.';';
$var_carte .= 'background-image: url(\'images/'.$carte['ref_terrain'].'.png\');">';


Mon soucis là c'est que lorsque je laisse le position:absolute; dans le CSS, toutes les images se superposent. Et quand je le commente, toutes les images sont alignées sur la même colonne (une image par ligne).

J'ai essayé de gérer ça avec des $decalageY= $y*30; mais ça ne change rien (le code source à l'air correct encore une fois). Est-ce mon CSS qui pose souci ou la génération?

J'aime pas trop me faire assister mais certaines parties de code sont assez floues malgré la bonne volonté.
Merci.


RE: Affichage map - christouphe - 04-08-2010

(04-08-2010, 11:21 AM)Anthor a écrit : @Christouphe: Ce que niahoo veux dire c'est que tu peux tout à fait utiliser un :

or throw new Exception(mysql_error());

Mais il n'en reste pas moins, qu'il est fortement déconseillé d'utiliser les fonctions mysql_

Ah tiens, j'ai appris quelque chose :p

Mais bon c'est pas pour autant que je vais remplacer tous mes try / catch


RE: Affichage map - popayan - 04-08-2010

Es-tu sur de ta carte dans la base de données? Est-ce qu'elle serait pas tout simplement sur une seule colonne?
Du coup, ton $carte['y'] serait toujours identique et tu ne ferais jamais le $y++ qui crée le décalage?


RE: Affichage map - Anthor - 04-08-2010

(04-08-2010, 03:16 PM)christouphe a écrit :
(04-08-2010, 11:21 AM)Anthor a écrit : @Christouphe: Ce que niahoo veux dire c'est que tu peux tout à fait utiliser un :

or throw new Exception(mysql_error());

Mais il n'en reste pas moins, qu'il est fortement déconseillé d'utiliser les fonctions mysql_

Ah tiens, j'ai appris quelque chose :p

Mais bon c'est pas pour autant que je vais remplacer tous mes try / catch

Aucun rapport, on ne met pas forcement un try/catch a chaque exception ^^
Tant que l'exception est jeté dans un try "global", il n'y a rien a modifier.


RE: Affichage map - syslog - 04-08-2010

(04-08-2010, 03:23 PM)popayan a écrit : Es-tu sur de ta carte dans la base de données? Est-ce qu'elle serait pas tout simplement sur une seule colonne?
Du coup, ton $carte['y'] serait toujours identique et tu ne ferais jamais le $y++ qui crée le décalage?

Oui je suis sur, je l'ai rempli à la main et j'ai vérifié pendant pas mal de temps que tout était correct.
(10x10)

Je ne sais pas si ça se fait mais voilà:
Code :
-- phpMyAdmin SQL Dump
-- version 3.2.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mer 04 Août 2010 à 16:48
-- Version du serveur: 5.1.37
-- Version de PHP: 5.2.10

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `jeuphp1`
--

-- --------------------------------------------------------

--
-- Structure de la table `carte`
--

CREATE TABLE IF NOT EXISTS `carte` (
  `id_carte` int(11) NOT NULL AUTO_INCREMENT,
  `x` int(11) DEFAULT NULL,
  `y` int(11) DEFAULT NULL,
  `id_terrain` int(11) NOT NULL,
  PRIMARY KEY (`id_carte`),
  KEY `id_terrain` (`id_terrain`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=116 ;

--
-- Contenu de la table `carte`
--

INSERT INTO `carte` (`id_carte`, `x`, `y`, `id_terrain`) VALUES
(1, 1, 1, 3),
(2, 1, 2, 3),
(3, 1, 3, 3),
(4, 1, 4, 3),
(5, 1, 5, 3),
(6, 1, 6, 3),
(7, 1, 7, 3),
(8, 1, 8, 3),
(9, 1, 9, 3),
(10, 1, 10, 3),
(11, 2, 1, 3),
(12, 3, 1, 3),
(13, 4, 1, 3),
(14, 5, 1, 3),
(15, 6, 1, 3),
(16, 7, 1, 3),
(17, 8, 1, 3),
(18, 9, 1, 3),
(19, 10, 1, 3),
(108, 3, 3, 1),
(115, 4, 9, 4),
(109, 3, 4, 1),
(104, 2, 7, 2),
(103, 2, 6, 2),
(26, 8, 2, 2),
(27, 9, 9, 2),
(28, 10, 2, 3),
(100, 2, 2, 2),
(30, 10, 3, 3),
(31, 10, 4, 3),
(32, 10, 5, 3),
(33, 10, 6, 3),
(34, 10, 7, 3),
(35, 10, 8, 3),
(36, 10, 9, 3),
(37, 10, 10, 3),
(38, 2, 3, 1),
(107, 3, 2, 1),
(110, 3, 5, 1),
(106, 2, 9, 2),
(42, 6, 3, 1),
(102, 2, 5, 2),
(101, 2, 4, 2),
(45, 9, 8, 1),
(47, 4, 2, 4),
(48, 4, 3, 4),
(49, 4, 4, 4),
(50, 4, 5, 4),
(51, 4, 6, 4),
(52, 4, 7, 4),
(53, 4, 8, 4),
(54, 9, 2, 1),
(55, 9, 3, 1),
(56, 9, 4, 1),
(57, 9, 5, 1),
(58, 9, 6, 1),
(59, 9, 7, 1),
(61, 8, 3, 2),
(62, 8, 4, 2),
(63, 8, 5, 2),
(64, 8, 6, 2),
(65, 8, 7, 2),
(66, 8, 8, 2),
(67, 8, 9, 2),
(68, 7, 2, 4),
(69, 7, 3, 4),
(70, 7, 4, 4),
(71, 7, 5, 4),
(72, 7, 6, 4),
(73, 7, 7, 4),
(74, 7, 8, 4),
(75, 7, 9, 4),
(76, 6, 2, 1),
(105, 2, 8, 2),
(78, 6, 4, 1),
(79, 6, 5, 1),
(80, 6, 6, 1),
(81, 6, 7, 1),
(82, 6, 8, 1),
(83, 6, 9, 1),
(84, 5, 2, 2),
(85, 5, 3, 2),
(86, 5, 4, 2),
(87, 5, 5, 2),
(88, 5, 6, 2),
(89, 5, 7, 2),
(90, 5, 8, 2),
(91, 5, 9, 2),
(92, 2, 10, 3),
(93, 3, 10, 3),
(94, 4, 10, 3),
(95, 5, 10, 3),
(96, 6, 10, 3),
(97, 7, 10, 3),
(98, 8, 10, 3),
(99, 9, 10, 3),
(111, 3, 6, 1),
(112, 3, 7, 1),
(113, 3, 8, 1),
(114, 3, 9, 1);

(On peut réduire les code pour que ça ne prenne pas trop de place?)


RE: Affichage map - Sh4rk - 04-08-2010

Peux tu nous mettre:
- le code source qui est affiché après le chargement du script
- un screen du résultat obtenu
- et comment devrait être le résultat


RE: Affichage map - djidi - 04-08-2010

(03-08-2010, 08:16 PM)syslog a écrit :
Code PHP :
<?php 
if ($curent_y!=$carte['y']) { // Nouvelle ligne
$x=0;
$y++;
$curent_y = $carte['y'];
}
$x++;

Pas trop de rapport avec ton dernier problème, mais à quoi te sert ce code ?
Ta map est dans la boucle while donc au lieu d'utiliser $y tu pourrais utiliser $carte['y'].