{"id":26463961,"url":"https://github.com/baptiste-may/python-battleship","last_synced_at":"2025-06-24T07:07:50.550Z","repository":{"id":232662970,"uuid":"709795942","full_name":"baptiste-may/python-battleship","owner":"baptiste-may","description":"A battleship in python","archived":false,"fork":false,"pushed_at":"2023-10-25T12:35:59.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-19T07:43:17.854Z","etag":null,"topics":["ascii","game","input-output","python","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/baptiste-may.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-10-25T12:18:58.000Z","updated_at":"2023-10-25T12:46:24.000Z","dependencies_parsed_at":"2024-04-10T22:11:30.976Z","dependency_job_id":"b38cad45-ea21-4de6-8162-91313fd7e61a","html_url":"https://github.com/baptiste-may/python-battleship","commit_stats":null,"previous_names":["djredstone/python-battleship","baptiste-may/python-battleship"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/baptiste-may/python-battleship","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baptiste-may%2Fpython-battleship","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baptiste-may%2Fpython-battleship/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baptiste-may%2Fpython-battleship/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baptiste-may%2Fpython-battleship/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baptiste-may","download_url":"https://codeload.github.com/baptiste-may/python-battleship/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baptiste-may%2Fpython-battleship/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261624959,"owners_count":23186118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ascii","game","input-output","python","python3"],"created_at":"2025-03-19T07:39:09.904Z","updated_at":"2025-06-24T07:07:50.530Z","avatar_url":"https://github.com/baptiste-may.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚢 Python Battleship\n***\n\nCe projet 100% Python vous permet de jouer au mythique [jeu de la bataille navale](https://fr.wikipedia.org/wiki/Bataille_navale_(jeu)) en faisant affronter ce que vous voulez (utilisateur ou robot). Le jeu tourne avec une interface en ASCII en E/S (entrée/sortie).\n\n## Jouer normalement\n\nPour jouer normalement, il vous suffit de télécharger le code source du projet et d'exécuter le programme `main.py`. Une partie va débuter contre un robot.\n\n## Modifier les joueurs\n\nVous pouvez facilement modifier les joueurs qui se disputent. Par exemple, vous pouvez faire affronter deux robots de difficulté différente l'un contre l'autre :\n\n```py\nfrom game import Game\nfrom players import Bot\n\n# Création d'un robot appelé \"bot 1\" dont la difficulté est de 0\nbot1 = Bot(\"bot 1\", 0)\n# Création d'un robot appelé \"bot 2\" dont la difficulté est de 1\nbot2 = Bot(\"bot 2\", 1)\n\n# Creation de la partie avec les deux robots\ngame = Game(bot1, bot2)\ngame.start()\n```\n\nou encore jouer à deux sur le même écran :\n\n```py\nfrom game import Game\nfrom players import Player\n\n# Création d'un joueur appelé \"alice\"\nplayer1 = Player(\"alice\")\n# Création d'un joueur appelé \"bob\"\nplayer2 = Player(\"bob\")\n\n# Creation de la partie avec les deux joueurs\ngame = Game(player1, player2)\ngame.start()\n```\n\n## Analiser les données des jeux\n\nLa fonction `start` de `Game` retourne les résultats de la partie à la fin de celle-ci. Elles sont disponibles sous forme d'un `dict` tel que :\n\n```py\ngame_results = game.start()\nprint(game_results)\n# {\n#     \"nb_rounds\": nb_rounds,\n#     \"player1_rounds\": player1_rounds,\n#     \"player2_rounds\": player2_rounds,\n#     \"winner\": winner\n# }\n```\n\n## Développer un robot / une IA\n\nIl est tout à faire possible de créer un robot ou une IA pour jouer au jeu de manière automatisée. Pour ce faire, il vous suffit simplement de modifier le code fourni dans `main.py`.\n\nPour créer un joueur automatique, il faudra fournir à la class `Game` de `game.py` un objet remplissant les conditions suivantes :\n- L'objet vient d'une classe comportant au moins :\n  - Un nom (`str`)\n  - Une fonction `ask_ship` qui, grâce à une liste de bateaux dispobiles par identifiant (`list[int]`), retourne un `tuple[int, bool, int, int]` d'informations permettant de placer un bateau. (Réspectivement : l'identifiant du bateau, l'orientation du bateau [`False`: Horizontal / `True`: Vertical], les coordonnées x et y du début du bateau)\n  - Une fonction `ask_code` sans arguments qui retourne un code valable à tirer sur un grille (un `str` sous la forme `\u003clettre\u003e\u003cnombre\u003e` *Exemples : `B4`, `E10`*)\n\nD'autres fonctions sont également possible d'ajouter :\n- Une fonction `update_data` permettant de mettre à jour les informations de jeu avec deux paramètres :\n  - Une `list[list[str]]` correspondant à une grille de caractères (la grille de tirs du joueur)\n  - Une `list[Ship]` correspondant aux bateaux encore vivant\n- Une fonction `update_last_res` permettant de mettre à jour les informations du dernier tir avec deux paramètres :\n  - Un code (`str`) correspondant au code cible\n  - Un `str` correspondant au résultat du tir. Cette variable peut avoir plusieurs formes :\n    - `\"hit\"`: Le tir a touché un bateau\n    - `\"hit-\u003cn\u003e-sink\"` : Le tir a touché un bateau et a fait coulé n bateaux\n    - `\"miss\"` : Le tir a loupé un bateau\n\n\u003e Notes : Ces deux dernières fonctions ne retournent rien\n\n## Dépendances\n\n- Python 3","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaptiste-may%2Fpython-battleship","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaptiste-may%2Fpython-battleship","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaptiste-may%2Fpython-battleship/lists"}