JeuWeb - Crée ton jeu par navigateur
[Test] Calculer les bonus d'un équipement - 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 : [Test] Calculer les bonus d'un équipement (/showthread.php?tid=1380)

Pages : 1 2


[Test] Calculer les bonus d'un équipement - Sephi-Chan - 17-12-2007

Salut à tous,

Après avoir proposé à quelqu'un un test pour voir sa manière de traiter le problème, j'ai pensé qu'il pouvait être sympa de le proposer ici.

Le but est de calculer de manière détailler une fiche de personnage à partir des caractéristique d'un personnage et du matériel qu'il porte.

Le tout avec cette base de données :
Code :
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

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

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

--
-- Structure de la table `equipements`
--

CREATE TABLE `equipements` (
  `equ_id` smallint(5) unsigned NOT NULL auto_increment,
  `equ_force` tinyint(4) NOT NULL,
  `equ_endurance` tinyint(4) NOT NULL,
  `equ_place` enum('Tête','Torse','Mains') NOT NULL,
  PRIMARY KEY  (`equ_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Contenu de la table `equipements`
--

INSERT INTO `equipements` VALUES (1, -3, 4, 'Tête');
INSERT INTO `equipements` VALUES (2, 6, 2, 'Torse');
INSERT INTO `equipements` VALUES (3, 2, 1, 'Mains');

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

--
-- Structure de la table `seelies`
--

CREATE TABLE `seelies` (
  `see_id` smallint(5) unsigned NOT NULL auto_increment,
  `see_force` tinyint(4) NOT NULL,
  `see_endurance` tinyint(4) NOT NULL,
  PRIMARY KEY  (`see_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Contenu de la table `seelies`
--

INSERT INTO `seelies` VALUES (1, 34, 32);

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

--
-- Structure de la table `Seelie_has_equipement`
--

CREATE TABLE `Seelie_has_equipement` (
  `see_id` smallint(5) unsigned NOT NULL,
  `equ_id` smallint(5) unsigned NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Contenu de la table `Seelie_has_equipement`
--

INSERT INTO `Seelie_has_equipement` VALUES (1, 1);
INSERT INTO `Seelie_has_equipement` VALUES (1, 2);
INSERT INTO `Seelie_has_equipement` VALUES (1, 3);

Je donne ici les statistiques force et endurance, mais il faut que ça marche aussi bien avec 100 caractéristiques sans allonger le code source.

Si possible en n'utilisant qu'une seule requête SQL dans le script de calcul.

Voilà. À vos claviers, pour le codage ou les questions. Smile


Sephi-Chan


RE: [Test] Calculer les bonus d'un équipement - Plume - 17-12-2007

Précisons tout de même que nous n'avons pas besoin que vous réalisiez de scripts pour nous Smile
Déjà, les tables ne correspondent pas. Ensuite, nous avons déjà notre idée sur la question.

Lex.


RE: [Test] Calculer les bonus d'un équipement - lanoix - 17-12-2007

Code :
SELECT seelies.see_id,
    (SUM(equ_force) + see_force) AS see_force, (SUM(equ_endurance) + see_endurance) AS see_endurance
    FROM seelies
    LEFT JOIN Seelie_has_equipement ON seelies.see_id = Seelie_has_equipement.see_id
    LEFT JOIN equipements ON Seelie_has_equipement.equ_id = equipements.equ_id
    WHERE seelies.see_id = 1
    GROUP BY seelies.see_id

Et voila le travail... 39/39
(Pas de script en fait...)
Bon tu dois modifier la requete a chaque fois que tu veux rajouter une caractéristique mais il n'y a pas de miracle non plus... Là ca peut se travailler programmatiquement.


RE: [Test] Calculer les bonus d'un équipement - Plume - 17-12-2007

Yes ! La même ID que moi Tongue

T'es un bon Big Grin

Lex.


RE: [Test] Calculer les bonus d'un équipement - Sephi-Chan - 17-12-2007

C'est assez intéressant.
Le problème de cette méthode, c'est qu'elle ne permet pas de détailler.

On ne peut pas avoir un Force 39, avec le détail (34 + 6 - 3 + 2) en rollover par exemple.
Ceci est à mon sens très important d'un point de vue présentation : imaginons un cas où l'interface doit permettre d'afficher les caractéristiques sur lesquels on perd en rouge et sur lesquels on gagne en vert quand on survole une pièce d'équipement. Ce système (très utile) permettrait de comparer d'un coup d'oeil deux pièces d'équipement.

J'ai effacé les sources du script que j'avais fais pour Exotech... Je l'aurais volontiers présenté pour montrer ma propre manière de faire. Je ne prétends pas qu'elle était bonne, mais elle permettait cela. :triste:


Sephi-Chan


RE: [Test] Calculer les bonus d'un équipement - Plume - 17-12-2007

Dans le SELECT, on peut ajouter les caracs, non ? Pour avoir le détail.


RE: [Test] Calculer les bonus d'un équipement - Sephi-Chan - 17-12-2007

On ne peut pas faire ce que j'expliquais plus haut avec cette technique.
Je pense que la solution full SQL n'est pas adaptée à ce genre de problème.

Je suis quand même content de voir ce que vous proposez. Smile


Sephi-Chan


RE: [Test] Calculer les bonus d'un équipement - Sephi-Chan - 17-12-2007

Oui j'ai testé te requête.

Et toi, tu as regardé ce que je demandais ?
Tu sais, les comparaisons avec les couleurs.


Sephi-Chan


RE: [Test] Calculer les bonus d'un équipement - Sephi-Chan - 17-12-2007

Mets-y du tiens un peu pour comprendre l'ennoncé. :triste:
Le but est de faire quelque chose de flexible. Faire du tout en une requête ne permet pas ce que j'énonce. Ou pas clairement du tout. De plus, l'idée était de permettre de ne pas allonger le code (ou très peu) malgré l'ajout de nombreuses caractéristiques. Un peu de défi que diable. Smile


Sephi-Chan


RE: [Test] Calculer les bonus d'un équipement - Sephi-Chan - 17-12-2007

Donc elle ne répond finalement qu'au comptage. Mais à quoi servait la variable que tu as déclaré en début de requête ?


Sephi-Chan