https://github.com/tom60-schoolprojects/csharp-battleship
Battleship game on .NET core
https://github.com/tom60-schoolprojects/csharp-battleship
battleship battleship-game console console-game dotnet dotnet-core dotnet-maui maui school-assignment school-project terminal-game
Last synced: 9 months ago
JSON representation
Battleship game on .NET core
- Host: GitHub
- URL: https://github.com/tom60-schoolprojects/csharp-battleship
- Owner: Tom60-SchoolProjects
- Archived: true
- Created: 2024-08-01T22:08:49.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-01T22:11:50.000Z (almost 2 years ago)
- Last Synced: 2024-09-30T11:02:14.647Z (over 1 year ago)
- Topics: battleship, battleship-game, console, console-game, dotnet, dotnet-core, dotnet-maui, maui, school-assignment, school-project, terminal-game
- Language: C#
- Homepage:
- Size: 9.93 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Sujet
Le projet sera un projet **console**, de préférence, sous **.NET 6**, ou **.NET Core 3.1** développé en utilisant le langage **C#**.
Le but de ce projet est de réaliser un jeu de société, [la bataille navale](https://fr.wikipedia.org/wiki/Bataille_navale_\(jeu\)), qui permettra de jouer à 2 joueurs. Les règles à implémenter sont les suivantes :
- Chaque joueur dispose de deux grilles carrées de coté N (N étant un entier donné lors de l'appel à une API). Chaque ligne est numérotée de 1 à N et les colonnes de A à Alphabet[N] (Ex. pour N=10, Alphabet[9] -> "J")
- Les joueur dispose d'une flotte composée de bateaux qui vous seront également donnés suite à l'appel à la même API
- Une grille sera la grille de la flotte du joueur, sur laquelle il placera ses bateaux en début de partie
- L'autre grille représentera la grille de l'adverse, où le joueur pourra marquer les "touchés" et les "ratés" à chaque tour de jeu
- Les joueurs jouent chacun leur tour, lors du tour d'un joueur celui-ci annonce une case de la grille (Ex. B5), l'adversaire doit répondre soit "raté" si la case est vide, soit "touché" si le joueur a touché un bateau et enfin "touché coulé" si le joueur a touché la totalité des cases d'un bateau.
**Techniquement**, votre solution utilisera une **API**, créé pour cette occasion, qui vous donnera la taille N de la grille ainsi qu'une liste de bateaux avec leurs tailles et leurs noms. L'URL de cette API est la suivant https://REDACTED/api/GetConfig, cette API est protégée par une clé d'API qui est la suivante **REDACTED**. La clé d'API est à passer en **header** lors de votre requête avec comme nom **x-functions- key**.
Vous organiserez votre solution en plusieurs projets, **au minimum** vous devrez produire :
- Bibliothèque gérant les interactions avec votre API
- Bibliothèque de logique du jeu
- Application console gérant l'affichage du déroulé de la partie.
Vos différents projets devront être le plus modulable possible pour pouvoir fonctionner indépendamment. Exemple :
- Pouvoir utiliser un autre système de récupération des infos de base
- Pouvoir utiliser une autre application que l'application console.
Vous veillerez également à organiser correctement la structure interne de chaque projet (utilisation de différents dossiers/namespaces).
# Bonus
Des points bonus vous seront accordés, si vous n'avez pas la note maximale. Pour obtenir ces points bonus, vous devrez effectuer :
- les tests unitaire des différentes bibliothèques et de l'application
- Ajouter la possibilité d'utiliser une interface graphique (avec **MAUI** ou WPF), **en plus** de la console.