JeuWeb - Crée ton jeu par navigateur
Vos ptites fonctions - 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 : Vos ptites fonctions (/showthread.php?tid=1995)

Pages : 1 2 3 4 5 6 7


RE: Vos ptites fonctions - Kami - 04-04-2008

Lanwin a écrit :Et j'ajouterai même que c'est sans doute ce qu'il y a de plus passionnant dans le fait de coder : le challenge.

Si, nous tous, nous codons un jeu chacun de notre côté, ou en équipe, c'est parce qu'il représente pour nous un challenge.

Il y a un concours "pour Geek" organisé chaque année dans les lycées participants. L'année dernière, lors de ma Terminale, le sujet principal était de coder une fonction pouvant indiquer si l'année était bissextile. Je n'y ai pas participé (par manque de "culture générale", surtout sur Linux), mais cela ne m'a pas empêché d'en discuter avec mon prof de maths, avec qui j'ai trouvé l'algorithme et les calculs à faire pour savoir si une année était bissextile ou non. Et pourtant, à la base sous PHP, il y a une variable (ou une fonction j'ai un doute) qui permet de savoir tout de suite si l'année est bissextile.

Une fois qu'on a trouvé ça, le challenge ne réside plus dans la manière de coder (si on supprime tous les impératifs d'optimisation, de lisibilité, on aura tous grosso-modo le même code). Dans nos jeux, ce qu'on préfère c'est établir les règles de l'évolution d'une compétence (en vérifiant que c'est bien équilibré par rapport au reste), plutôt que de la coder elle-même...

Enfin, loin du fait de vouloir me défendre quant à ma fonction inutile (d'ailleurs, preuve de son inutilité, je ne m'en suis encore jamais servi dans mon jeu ^^), ou encore de vouloir faire du HS; je trouve ce "débat" intéressant dans la mesure où on peut s'apercevoir des rapports de chacun avec le code et la manière de coder (et surtout ce qui anime cette passion du code Tongue)

Amicalement,

D'où l'intérêt de tout poser à plat et de bien schématiser (o:
Mais c'est pas le but du thread, puisqu'en surfant sur jeuphp tu verras que pas mal de threads parlent directement des méthodes plus que de la technique [aie la nuance !].


RE: Vos ptites fonctions - Psykose - 04-04-2008

Bon eh bien pour revenir au sujet voila une fonction très simple mais que j'utilise pour tout mes liens ^^
Le principe étant d'ouvrir un lien externe dans une nouvelle page, un interne dans la même page et une image dans un popup

Code PHP :
<?php 
<SCRIPT language="javascript">
function
Popup(page,taille) {
window.open(page,taille);
}
</
SCRIPT>

<?
php
function BestLinking($link, $txt){
if(
preg_match("#^http://#", $link)) {
if(!
preg_match("#(.png|.jpg|.gif|.tiff|.jpeg|.bmp)$#", $link)){
return
"<a href=\"$link\" target=\"blank\">$txt</a>";
}}
elseif(
preg_match("#(.png|.jpg|.gif|.tiff|.jpeg|.bmp)$#", $link)) {
$X = imagesx($link);
$Y = imagesy($link);
return
"<a href=\"javascript:Popup('$link', 'height=$Y, width=$X')\">$txt</a>";
}
else{
//c'est forcément un lien interne :
return "<a href=\"$link\">$txt</a>";
}
}

$lien1 = "http://mamort.ze.cx"; $txt1="Mamort";
$lien2 = "http://mamort.ze.cx/img.jpg"; $txt2="Une screen du jeu";
$lien3 = "pages.php?p=index"; $txt3="Index du site";

echo
BestLinking($lien1, $txt1); //S'ouvrira dans une nouvelle fenêtre (ou nouvel onglet)
echo BestLinking($lien2, $txt2); //S'ouvrira dans un PopUp
echo BestLinking($lien3, $txt3); //S'ouvrira dans la même fenêtre
?>



RE: Vos ptites fonctions - Anthor - 04-04-2008

...

Quelle lourdeur... C'est tellement plus simple à la main...


RE: Vos ptites fonctions - Sephi-Chan - 04-04-2008

C'est clair… Si l'idée est bonne, la réalisation ne l'est pas.

Mieux vaut encore faire un lien normal et créer une fonction Javascript qui filtre les liens de la page et s'occupe de la transformation.

Ensuite, utiliser une fenêtre surgissante pour les images est moyenâgeux ! De nos jours, on peut directement mettre l'adresse de l'image agrandie dans l'attribut href du lien, et utiliser Javascript pour obtenir un joli effet d'agrandissement, en grisant le reste de la page tout en affichant l'image, par exemple.

De même, l'attribut target est dépréciée en XHTML 1.0 Strict (et ultérieur), laissons aux utilisateur le choix d'ouvrir la page dans une nouvelle fenêtre ou un nouvel onglet. On peut simplement accoler un pictogramme qui leur fait comprendre <i>attention, en cliquant ici vous allez sortir du site</i>.

Mais on ne surcharge pas PHP pour des modifications purement formelles.


Sephi-Chan


RE: Vos ptites fonctions - Harparine - 04-04-2008

Ouais, même remarque que les camarades : ce qui concerne la forme n'a rien à faire en traitement php. D'autant qu'avec deux classes "lien_externe" et "image", et 6 lignes de jquery (couplé à lightbox) on obtient un meilleur rendu géré sur le client...


RE: Vos ptites fonctions - Psykose - 19-04-2008

Bon eh bien pour relancer un peu le sujet, une fonction simple utilisée notamment sur Youtube je crois Wink

Code PHP :
<?php 
function FormateMyDate($date){
$NuDate = time() - $date;
if(
$NuDate >= 0){$Unite = "$NuDate Seconde";}
elseif(
$NuDate >= 60){$NuDate = $NuDate / 60; $NuDate = ceil($NuDate); $Unite = "$NuDate Minute";}
elseif(
$NuDate >= 3600){$NuDate = $NuDate / 3600; $NuDate = round($NuDate); $Unite = "$NuDate Heure";}
elseif(
$NuDate >= 86400){$NuDate = $NuDate / 86400; $NuDate = round($NuDate); $Unite = "$NuDate Jour";}
elseif(
$NuDate >= 604800){$NuDate = $NuDate / 604800; $NuDate = floor($NuDate); $Unite = "$NuDate Semaine";}
if(
$NuDate > 1){$FormatedDate = $Unite . "s";}
else{
$FormatedDate = $Unite;}

return
$FormatedDate;
}



RE: Vos ptites fonctions - naholyr - 19-04-2008

Il y a une erreur dans ton script, si j'ai $date = 3700 ça affichera simplement "1 heure". Je pense qu'à l'origine tu voulais plutôt quelque chose comme "1 heure, 1 minute et 40 secondes", non ?

Si c'est le cas, ce sera plutôt :
Code PHP :
<?php 
function timeToFR($time) {
static
$units = array(
'semaine' => 604800,
'jour' => 86400,
'heure' => 3600,
'minute' => 60,
'seconde' => 1,
);

$time_elements = array();
foreach (
$units as $unit => $duration) {
if (
$time >= $duration) {
$nb_units = floor($time / $duration);
$time = $time % $duration;
if (
$nb_units >= 1) {
$time_element = $nb_units . ' ' . $unit;
if (
$nb_units > 1) {
$time_element .= 's';
}
$time_elements[] = $time_element;
}
}
}

$last_time_element = array_pop($time_elements);
$first_part = count($time_elements) ? implode(', ', $time_elements) . ' et ' : '';
return
$first_part . $last_time_element;
}



RE: Vos ptites fonctions - Eluox - 19-04-2008

C'est pour transformé des secondes en temps c'est ça ?


RE: Vos ptites fonctions - phenix - 19-04-2008

La fonction date et time de PHP font très bien toutes la gestion du temps, je voie pas pourquoi vous écrivez des fonctions bizarres...


RE: Vos ptites fonctions - naholyr - 19-04-2008

Trouve moi une fonction PHP standard qui renvoie "1 heure et 40 secondes" quand on lui passe 3640, et "2 heures, 20 minutes et 12 secondes" quand on lui passe 8412, etc... Bref, qui traduise "intelligemment" une durée en toutes lettres.

Je suis le premier à militer pour ne pas réinventer la roue, mais il ne faut tout de même pas exagérer Wink Certains besoins sont trop spécifiques pour que la librairie standard les gère, tout simplement.