From 6f3c9657914d6e2f401ed68bfa3ad94e339c6717 Mon Sep 17 00:00:00 2001 From: ahmed-mgd Date: Thu, 4 Jul 2024 23:15:15 -0400 Subject: [PATCH] Update README.md --- README.md | 18 ++++++++++++++++-- public/sc.png | Bin 0 -> 19710 bytes 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 public/sc.png diff --git a/README.md b/README.md index a3b960f..584b709 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # Battleship -Web implementation of the board game "Battleship" using vanilla Javascript. +Compete against the computer in the classic game of "Battleship." Implemented using vanilla JavaScript. + +![screenshot](public/sc.png) ## Installation and Usage @@ -10,6 +12,11 @@ Clone the repository and navigate into the directory. Run: npm install ``` +To run the game in a development environment: +```bash +npm run dev +``` + To run test fixtures: ```bash npm test @@ -18,4 +25,11 @@ npm test ## Lessons Learned - Setting up and unit-testing with Jest. -- More time should be spent in the planning stage determining how different components of the project should interact. \ No newline at end of file +- Enumerating different states makes it easier to keep track of game logic. +- More time should be spent in the planning stage determining how different components of the project should interact. + +## Future Implementations + +- Drag and drop board setup for the user +- Dashboard displaying each user's fleet and sunk ships +- Integrate AI or algorithmic logic for CPU play \ No newline at end of file diff --git a/public/sc.png b/public/sc.png new file mode 100644 index 0000000000000000000000000000000000000000..04b0a029ef5047da0a2ca2d26de40199b75f8427 GIT binary patch literal 19710 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 beU>O;!~fyChkCcbX*{Q8_+#;DyPy6KUP>%w literal 0 HcmV?d00001