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



Soucis technique - Pyl - 03-04-2007

Code PHP :
<?
include("bdd.php");
session_start();
$x=$_POST['X'];
$y=$_POST['Y'];

$arme_perso= $db->extract_one("SELECT arme FROM membres WHERE id='$id'");////Arme du joueur////
$arme=$arme_perso['arme'];
$portee_tir= $db->extract_one("SELECT distance,degats,calibre FROM armes WHERE id='$arme'");////Info sur l'arme du joueur////
$distance=$portee_tir['distance'];
$degats=$portee_tir['degats'];
$calibre=$portee_tir['calibre'];
$pos_joueur=("SELECT X,Y FROM membres WHERE perso='$id'");/////Ou est le joueur ?////
$X_joueur=$pos_joueur['X'];
$Y_joueur=$pos_joueur['Y'];
$X_max=$X_joueur+$distance; ////On calcule les positions maximum que l'arme peut atteindre en fonction de la position du joueur////
$X_min=$X_joueur-$distance;
$Y_max=$Y_joueur+$distance;
$Y_min=$Y_joueur-$distance;
if (
$x>$X_max OR $x<$X_min ) ////On verifie la distance de tir X///
{
$message1.='<center>La position X est supérieur à votre distance Maximal de Tir</center>';
}
else
{
if (
$y>$Y_max OR $y<$Y_min ) ////On verifie la distance de tir Y ////
{
$message1.='<center>La position Y est supérieur à votre distance Maximal de Tir</center>';
}
else
{
$message1.='Nous pouvons commencer le tir';
}
}


$_SESSION['message1']=$message1;
header('location: jouer.php');
?>

Voici l'explication :
Ceci est le script de tir pour les joueurs ayants un canon.
Il rentre leurs coordonnés dans une petite zone ( sur un autre formulaire ).
Ensuite on effectue une série de test. Ici j'ai deux problemes.
En premier je verifie si la zoneX visé n'est pas trop loin et ensuite je fais ça pour la zoneY.
Le probleme c'est que si je rentre 0 pour X on me dit que la zone est trop loin !
Le second probleme est que quoi qu'il se passe la zoneY visé est trop loin Undecided
Je ne vois pas d'où vient mon probleme :non:

Merci d'avance pour votre aide


RE: Soucis technique - NicoMSEvent - 03-04-2007

J'ai bien l'impression que ton champ de tir est carré... Quelque chose de plus réaliste serait un périmetre d'action +- rond autour du personnage.
Pour ça, tu va devoir utiliser des sinus et cosinus (j'ai toujours eu des difficultés avec, mais en chipotant, j'arrive a +- retrouver les formules).

En espérant que ça te donne un coup de main, ou des idées... Wink


RE: Soucis technique - littlefab - 03-04-2007

Petite question:

Est-ce que "0" est une position qui existe ?
(le positionnement ne devrait-il pas commencer à 1 ?)

Cdlt.


RE: Soucis technique - Pyl - 03-04-2007

Oui le '0' existe Smile
Mais d'uj coté ceci est pas mon principale soucis Smile
J'aimerais d'abord que quelqu'un me dise pourquoi pour 'Y' cela bug tout le temps :ninga:


RE: Soucis technique - NicoMSEvent - 03-04-2007

Essaye
Code PHP :
<?php 
echo $Y_joueur.'<br>';
echo
$pos_joueur['Y'].'<br>';
echo
$Y_max.'<br>';
echo
$Y_min.'<br>';
a la fin de ton script, tu trouveras p-e ce qui cloche...
sinon, envoie le résultat ici, on sera p-e plus a même de t'éclairer


RE: Soucis technique - Roworll - 03-04-2007

Dans le cas ou la distance entrée est de 0, les tests de type < ou > échouent automatiquement.
>= et <= seraient plus indiqués.

Pour le Y, commence par faire les echo comme conseillé par NicoMSEvent


RE: Soucis technique - Draedrus - 03-04-2007

une équation de disque plutot que des cosinus et sinus ?
x²+y²<='vue'
ici (x_joueur-x_visé)²+(y_joueur-y_visé)²<=distance ( 1 ? )


RE: Soucis technique - Pyl - 03-04-2007

C'est vite vue xD

Citation :X_max=1 X_min=-1 Y_max=1 Y_min=-1 X_joueur =S Y_joueur=S

Voila le resultat de mes echos Smile

Donc pour les X et Y max et mini ça ne bug pas vraiment tou tsimplement car la distance est de 1..
Sauf que en faite la position du joueur pour lui est X et Y = 0 Confused
Voila ou ça bug...

Je viens de trouver un endroit qui etait probablement la zone de bug, je selecionnais X et Y dans membres alors que c'est dans map que je devais selectionner >_<Mais il ne trouve tjrs pas la position du joueur


RE: Soucis technique - Pyl - 03-04-2007

J'ai trouvé :wowowow:
Code PHP :
<?php 
$pos_joueur
=("SELECT X,Y FROM map WHERE perso='$id'");/////Ou est le joueur ?////

Code PHP :
<?php 
$pos_joueur
= $db->extract_one("SELECT X,Y FROM map WHERE perso='$id'");/////Ou est le joueur ?////


J'avais oublié le $db->extract_one

Je laisse le topic ouvert car je risque d'avoir encore besoin de vous