Admin/Dev

17
Avril
2020

Programmation : Créer un dé, à lancer sur son Mac

Publié par sky

En cette période de confinement et de vacances, les jeux vidéos, ainsi que les jeux de société occupent souvent une bonne partie de nos journées.

En proposant un jeu, à faire, à un ami, la seule réponse obtenue fut : "Je n'ai pas de dé".

Voici donc comment un créer un dé, informatiquement, et le lancer.

 

1/ Version simplifiée

Ma solution ici, est faite avec PHP, mais peut être faite avec n'importe quel language de programmation.

Ouvrez un fichier texte brut vierge, et insérez les balises PHP

 <?php

au début, laissez quelques lignes vides, puis

?>

à la fin du fichier.

Au milieu, insérez le code suivant :

echo rand(1,6);
echo "n";

Enregistrez votre fichier à l'endroit ou vous le souhaitez, avec l'extension .php.

Pour ma part, je l'ai appelé simplement de.php dans un dossier Scripts de mon compte utilisateur. Pensez ensuite à remplacer les chemins et noms de fichier pour correspondre aux vôtres.

Puis dans un terminal, écrivez php, suivi d'un espace, suivi du chemin complet vers votre fichier

php Scripts/de.php

validez, avec entrée.

Votre petit script va vous afficher un nombre entre 1 et 6, puis quitter.

Note, avec flêche-haut, vous pouvez récupérer la dernière commande envoyée dans le terminal, pour la relancer.

Vous pouvez désormais lancer vos dés avec votre Mac.

 

2/ Version évoluée 1 : plusieurs dés à la fois

Si la solution au dessus vous convient, inutile d'aller plus loin. Pour les curieux, qui voudrait par exemple lancer plusieurs dés à la fois, voici une version plus évoluée, à mettre dans votre fichier, en remplaçant le contenu situé entre les balises

/* On teste les arguments */
if (count($argv) == 1) {
    echo "Indiquez le nombre de dé à lancer.n";
    exit;
}
$cnt = (int)$argv[1];
if ($cnt == 0) {
    echo "Indiquez un nombre valide de dé à lancer.n";
    exit;
}

/* On calcule tous les dés */
$rolls = array();
for($i=0; $i<$cnt; $i++) {
    $rolls[] = rand(1,6);
}

/* On affiche les résultats */
echo implode(' - ', $rolls)."n";

Désormais, pour lancer votre script, il faudra penser à ajouter le nombre de dés que vous souhaitez, par exemple 5

php Scripts/de.php 5

le résultat sera quelque chose comme

5 - 3 - 1 - 6 - 6

 

3/ Version évoluée 2 : lancer un dé disposant d'un nombre de facettes variable

Amis joueur de jeux de rôle, je ne vous oublie pas. Vous avez oublié votre dé 12 chez un ami, ou votre dé 20 est en panne, pas de soucis. Voici une solution adaptée.

/* On teste les arguments */
if (count($argv) == 1) {
    echo "Indiquez le nombre de facettes de votre dé.n";
    exit;
}
$cnt = (int)$argv[1];
if ($cnt == 0) {
    echo "Indiquez un nombre valide de facettes pour votre dé.n";
    exit;
}

/* On affiche le résultat */
echo rand(1,$cnt)."n";

Désormais au lieu d'indiquer le nombre de dés à lancer, vous indiquez en paramètre le nombre de facette de votre dé.

php Scripts/de.php 20

avec un résultat qui ira de 1 à 20.

 

4/ Version évoluée 3 : lancer plusieurs dés avec un nombre de facettes variable

Toujours pas rassasiés ? Bien, voici une autre version, qui vous permettra de lancer plusieurs dés, ayant un nombre de facettes différent.

if (count($argv) == 1) {
    echo "Indiquez les dés que vous souhaitez lancer.n";
    exit;
}

for ($i=1; $i<count($argv); $i++) {
    $max = (int)$argv[$i];

    echo 'Dé '.$i;

    if ($max == 0) {
        echo ' : erreur';
    } else {
        echo ' ('.$max.') : ';
        echo rand(1,$max);
    }

    echo "n";
}

Désormais, je peux lancer autant de dés que je souhaite, je dois juste indiquer le nombre de facettes pour chaque dé. Ainsi pour lancer un dé 12, suivi d'un dé 20, suivi d'un dé 8, suivi de 3 dés 6, je tape

php Scripts/de.php 12 20 8 6 6 6

avec le résultat, pour exemple

Dé 1 (12) : 7
Dé 2 (20) : 14
Dé 3 (8) : 1
Dé 4 (6) : 2
Dé 5 (6) : 6
Dé 6 (6) : 3

A vous de choisir quel application vous préférez, et vous pouvez aussi partager vos évolutions dans les commentaires.

 
 
Commentaires
Aucun commentaire pour le moment.

 

Poster un commentaire
En postant sur skymac.org, je m'engage à être courtois et à ce que mon message soit pertinent avec le sujet de l'article.
En outre, j'accepte, sans condition, que mon message soit refusé et supprimé si ces règles ne sont pas appliquées.
Les cookies assurent le bon fonctionnement de nos services. En continuant, vous acceptez leur utilisation sur notre site internet.
Accepter En savoir plus