
Code Roulette est un jeu de roulette russe multijoueur en ligne basé sur une interface terminal (TUI), où le perdant exécute le fichier de payload Python du gagnant.
# Code Roulette
> Interface terminal, multijoueur en ligne, Roulette russe où le perdant exécute le fichier de payload Python du gagnant.
* [Code Roulette](#code-roulette)
* [Aperçu](#aperçu)
* [Comment le jeu fonctionne](#comment-le-jeu-fonctionne)
* [Vidéo de démonstration](#vidéo-de-démonstration)
* [Utilisation](#utilisation)
* [En tant que paquet](#en-tant-que-paquet)
* [Avec le gestionnaire de paquets UV](#avec-le-gestionnaire-de-paquets-uv)
* [Avec Pip](#avec-pip)
* [Fichiers de payload](#fichiers-de-payload)
* [Développement](#développement)
* [Licence](#licence)
* [Les composants principaux](#les-composants-principaux)
* [Le répertoire payloads](#le-répertoire-payloads)
* [Avertissement](#avertissement)
---

| | |
|:---:|:---:|
|||
|||
## Aperçu
Code Roulette est un jeu de Roulette russe multijoueur en ligne basé sur une interface utilisateur en terminal (TUI) où le perdant est contraint d'exécuter un payload Python choisi par le gagnant.
Chat inclus.
L'interface du jeu est entièrement basée sur le terminal grâce à [Textual](https://textual.textualize.io) et prend en charge les interactions au clavier et à la souris.
Ainsi, il peut être joué partout où des paquets Python peuvent être installés et un terminal ouvert.
En exécutant le payload Python d'un autre joueur sur votre ordinateur si vous perdez, l'essence du jeu original de la Roulette russe peut être adéquatement simulée dans l'espace numérique.
### Comment le jeu fonctionne
Le jeu commence lorsque tous les utilisateurs se connectent à un serveur local ou distant, et sélectionnent leur nom d'utilisateur et leurs fichiers de payload.
Une fois que suffisamment de joueurs sont dans le hall, le premier à se connecter (le « Propriétaire » du hall) peut lancer la partie.
Tous les joueurs seront appariés, côté serveur, à un autre joueur.
Ensuite, chaque joueur verra le fichier de payload Python de son adversaire et aura la possibilité de se retirer.
Une fois que tous les joueurs restants sont prêts, la partie commence.
Chaque joueur tire à tour de rôle sur la gâchette du revolver ASCII.
Les chambres sont cachées, donc n'importe laquelle pourrait être celle qui vous envoie sur l'écran du perdant.
Pour ceux qui n'ont pas tiré la dernière fois, un écran du gagnant s'affiche détaillant quel code est maintenant exécuté, un aperçu du code lui-même, et le nom du joueur qui a perdu.
Pour le perdant, le fichier de payload avec lequel ils ont accepté de parier est maintenant exécuté sur leur système.
## Vidéo de démonstration
[](https://youtu.be/Hp24UycFxFc)
## Utilisation
> [!CAUTION]
> **Ce programme peut exécuter du code arbitraire fourni par un autre joueur sur votre ordinateur si vous perdez la partie.**
>
> Veuillez examiner et vous assurer de comprendre les risques d'[exécution de code à distance](https://en.wikipedia.org/wiki/Arbitrary_code_execution), [comment le jeu fonctionne](#comment-le-jeu-fonctionne), et [lire l'avertissement](#avertissement) avant d'utiliser ce logiciel !
### En tant que paquet
> [!NOTE]
> Code Roulette n'est pas *encore* disponible en tant que paquet PyPi ou exécutable natif.
> Cependant, je prévois de l'implémenter lorsque le programme sera prêt pour une distribution plus large.
### Avec le gestionnaire de paquets UV
Ce dépôt peut être exécuté localement et facilement en utilisant le gestionnaire de paquets [UV](https://docs.astral.sh/uv/).
1. Assurez-vous d'avoir UV [installé](https://docs.astral.sh/uv/getting-started/installation/).
1. Consultez l'aide en ligne de commande en exécutant : `uv run main.py --help`
* Pour démarrer le serveur, exécutez : `uv run main.py server`
* Pour démarrer l'interface client, exécutez : `uv run main.py client`
### Avec Pip
Pour plus de commodité, un fichier `requirements.txt` est également inclus pour les utilisateurs de `pip`.
## Fichiers de payload
Avec Code Roulette, vous pouvez utiliser toutes les fonctionnalités Python 3 de la bibliothèque standard dans vos fichiers de payload.
Étant donné que le système est ouvert, vous pourriez imaginer un moyen d'importer d'autres paquets.
Cependant, cette fonctionnalité ne sera pas implémentée nativement dans le jeu.
Pour une sélection d'exemples de fichiers de payload, consultez le répertoire [payloads/](https://github.com/sorcerio/code-roulette/blob/master/payloads).
Un index au format JSON des fichiers de payload est également accessible depuis ce dépôt pour les développeurs.
La feuille de route future inclut l'intégration de la sélection des fichiers à partir de cette base de données.
## Développement
Assurez-vous que `textual-dev` est également ajouté comme dépendance.
Le client peut être ouvert en mode développeur de Textual en exécutant : `textual run --dev -c uv run main.py --log-level debug client`
## Licence
### Les composants principaux
Ce dépôt, *à l'exception du contenu du répertoire [payloads/](https://github.com/sorcerio/code-roulette/blob/master/payloads)*, est proposé sous la [GNU General Public License v3.0](https://github.com/sorcerio/code-roulette/blob/master/LICENSE).
Dans presque toutes les circonstances, je déconseille fortement l'utilisation de cette licence.
Cependant, étant donné la nature de ce projet en tant que produit final complet (un jeu), je pense qu'elle est appropriée dans ce contexte.
Si vous avez une raison impérieuse de l'ouvrir, faites-le moi savoir et nous pourrons peut-être envisager une licence pour utilisation.
### Le répertoire payloads
Le contenu du répertoire [payloads/](https://github.com/sorcerio/code-roulette/blob/master/payloads) *uniquement* est proposé sous la [licence MIT](https://github.com/sorcerio/code-roulette/blob/master/payloads/LICENSE).
## Avertissement
> [!CAUTION]
> **Ce programme peut exécuter du code arbitraire fourni par un autre joueur sur votre ordinateur si vous perdez la partie.**
Veuillez examiner et vous assurer de comprendre les risques d'[exécution de code à distance](https://en.wikipedia.org/wiki/Arbitrary_code_execution), [comment le jeu fonctionne](#comment-le-jeu-fonctionne), et [lire l'avertissement](#avertissement) avant d'utiliser ce logiciel !
*Ce logiciel est fourni « tel quel »*, sans garantie d'aucune sorte, expresse ou implicite, y compris mais sans s'y limiter les garanties de qualité marchande, d'adéquation à un usage particulier et d'absence de contrefaçon. *En aucun cas les auteurs ou détenteurs des droits d'auteur ne pourront être tenus responsables de toute réclamation, dommage ou autre responsabilité*, que ce soit dans le cadre d'une action contractuelle, délictuelle ou autre, découlant de ou en relation avec le logiciel ou son utilisation ou d'autres transactions liées au logiciel.
*Vous êtes seul responsable de toute conséquence pouvant découler de l'utilisation de ce logiciel*, y compris mais sans s'y limiter la perte de données, les dommages au système ou les problèmes juridiques résultant de l'exécution de code fourni par d'autres joueurs. *Examinez et comprenez toujours le code que vous acceptez d'exécuter avant de participer au jeu.*
*La Roulette russe est un jeu dangereux mettant la vie en danger dans la réalité.* Ce logiciel est destiné à des fins de divertissement uniquement et ne doit pas être considéré comme une approbation de telles activités. Si vous ou quelqu'un que vous connaissez rencontrez des problèmes liés au jeu ou à des comportements mettant la vie en danger, veuillez demander l'aide d'un professionnel. *Il y a toujours quelqu'un prêt à écouter et à aider.*
**Si vous choisissez d'utiliser ce logiciel, vous le faites à vos propres risques.**