From 18404e9a5e647fde52c232cd593cb2daf4015916 Mon Sep 17 00:00:00 2001 From: ZacharyPatten Date: Mon, 11 Dec 2023 14:47:59 -0600 Subject: [PATCH 1/2] tug of war raw string literal --- Projects/Tug Of War/Program.cs | 31 ++++++++++--------- .../Website/Games/Tug Of War/Tug Of War.cs | 31 ++++++++++--------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/Projects/Tug Of War/Program.cs b/Projects/Tug Of War/Program.cs index ebc4efa7..c5800102 100644 --- a/Projects/Tug Of War/Program.cs +++ b/Projects/Tug Of War/Program.cs @@ -19,21 +19,22 @@ new string(' ', 2); bool frame_a = false; Console.Clear(); - Console.WriteLine(@" - Tug Of War - - Out pull your opponent in a rope pulling - competition. Mash the [left]+[right] arrow - keys and/or the [A]+[D] keys to pull on the - rope. First player to pull the center of the - rope into their boundary wins. - - Choose Your Opponent: - [1] Easy.......2 mashes per second - [2] Medium.....4 mashes per second - [3] Hard.......8 mashes per second - [4] Harder....16 mashes per second - [escape] give up"); + Console.Write(""" + Tug Of War + + Out pull your opponent in a rope pulling + competition. Mash the [left]+[right] arrow + keys and/or the [A]+[D] keys to pull on the + rope. First player to pull the center of the + rope into their boundary wins. + + Choose Your Opponent: + [1] Easy.......2 mashes per second + [2] Medium.....4 mashes per second + [3] Hard.......8 mashes per second + [4] Harder....16 mashes per second + [escape] give up + """); int? requiredMash = null; while (requiredMash is null) { diff --git a/Projects/Website/Games/Tug Of War/Tug Of War.cs b/Projects/Website/Games/Tug Of War/Tug Of War.cs index 233afe93..286cd009 100644 --- a/Projects/Website/Games/Tug Of War/Tug Of War.cs +++ b/Projects/Website/Games/Tug Of War/Tug Of War.cs @@ -27,21 +27,22 @@ public async Task Run() new string(' ', 2); bool frame_a = false; await Console.Clear(); - await Console.WriteLine(@" - Tug Of War - - Out pull your opponent in a rope pulling - competition. Mash the [left]+[right] arrow - keys and/or the [A]+[D] keys to pull on the - rope. First player to pull the center of the - rope into their boundary wins. - - Choose Your Opponent: - [1] Easy.......2 mashes per second - [2] Medium.....4 mashes per second - [3] Hard.......8 mashes per second - [4] Harder....16 mashes per second - [escape] give up"); + await Console.Write(""" + Tug Of War + + Out pull your opponent in a rope pulling + competition. Mash the [left]+[right] arrow + keys and/or the [A]+[D] keys to pull on the + rope. First player to pull the center of the + rope into their boundary wins. + + Choose Your Opponent: + [1] Easy.......2 mashes per second + [2] Medium.....4 mashes per second + [3] Hard.......8 mashes per second + [4] Harder....16 mashes per second + [escape] give up + """); int? requiredMash = null; while (requiredMash is null) { From cfc78d111e543bf22af9f34e15d3f3c6e41c8907 Mon Sep 17 00:00:00 2001 From: ZacharyPatten Date: Tue, 12 Dec 2023 09:24:43 -0600 Subject: [PATCH 2/2] word search --- .github/workflows/Word Search Build.yml | 20 + .vscode/launch.json | 10 + .vscode/tasks.json | 13 + .../Website/Games/Word Search/Word Search.cs | 225 ++++++++ Projects/Website/Pages/Word Search.razor | 55 ++ Projects/Website/Shared/NavMenu.razor | 523 +++++++++--------- Projects/Word Search/Program.cs | 229 ++++++++ Projects/Word Search/README.md | 66 +++ Projects/Word Search/Word Search.csproj | 12 + README.md | 1 + dotnet-console-games.sln | 6 + dotnet-console-games.slnf | 1 + 12 files changed, 902 insertions(+), 259 deletions(-) create mode 100644 .github/workflows/Word Search Build.yml create mode 100644 Projects/Website/Games/Word Search/Word Search.cs create mode 100644 Projects/Website/Pages/Word Search.razor create mode 100644 Projects/Word Search/Program.cs create mode 100644 Projects/Word Search/README.md create mode 100644 Projects/Word Search/Word Search.csproj diff --git a/.github/workflows/Word Search Build.yml b/.github/workflows/Word Search Build.yml new file mode 100644 index 00000000..b9e83d58 --- /dev/null +++ b/.github/workflows/Word Search Build.yml @@ -0,0 +1,20 @@ +name: Word Search Build +on: + push: + paths: + - 'Projects/Word Search/**' + - '!**.md' + pull_request: + paths: + - 'Projects/Word Search/**' + - '!**.md' + workflow_dispatch: +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-dotnet@v3 + with: + dotnet-version: 8.0.x + - run: dotnet build "Projects\Word Search\Word Search.csproj" --configuration Release diff --git a/.vscode/launch.json b/.vscode/launch.json index f22e1c47..5112fcc3 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -262,6 +262,16 @@ "console": "externalTerminal", "stopAtEntry": false, }, + { + "name": "Word Search", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "Build Word Search", + "program": "${workspaceFolder}/Projects/Word Search/bin/Debug/Word Search.dll", + "cwd": "${workspaceFolder}/Projects/Word Search/bin/Debug", + "console": "externalTerminal", + "stopAtEntry": false, + }, { "name": "Pong", "type": "coreclr", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index f66b39b7..deddea10 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -652,6 +652,19 @@ ], "problemMatcher": "$msCompile", }, + { + "label": "Build Word Search", + "command": "dotnet", + "type": "process", + "args": + [ + "build", + "${workspaceFolder}/Projects/Word Search/Word Search.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary", + ], + "problemMatcher": "$msCompile", + }, { "label": "Build Solution", "command": "dotnet", diff --git a/Projects/Website/Games/Word Search/Word Search.cs b/Projects/Website/Games/Word Search/Word Search.cs new file mode 100644 index 00000000..52099bc8 --- /dev/null +++ b/Projects/Website/Games/Word Search/Word Search.cs @@ -0,0 +1,225 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Website.Games.Word_Search; + +public class Word_Search +{ + public readonly BlazorConsole Console = new(); + + public async Task Run() + { + char[,] board = new char[20, 20]; + List<(int Left, int Top)> showWordSelections = []; + List<(int Left, int Top)> selections = []; + + string[] wordArray = default!; + string currentWord = default!; + (int Left, int Top) cursor = (0, 0); + + InitializeWords(); + PlayAgain: + InitializeBoard(); + await Console.Clear(); + while (true) + { + await RenderBoard(); + await Console.Write($""" + + Highlight the word "{currentWord}" above. + + Controls: + - arrow keys: move cursor + - enter: highlight characters + - backspace: clear highlighted characters + - home: new word search + - end: give up and show word + - escape: close game + """); + await Console.SetCursorPosition(2 * cursor.Left, cursor.Top); + Console.CursorVisible = true; + switch ((await Console.ReadKey(true)).Key) + { + case ConsoleKey.LeftArrow: cursor.Left = cursor.Left <= 0 ? board.GetLength(0) - 1 : cursor.Left - 1; break; + case ConsoleKey.RightArrow: cursor.Left = cursor.Left >= board.GetLength(0) - 1 ? 0 : cursor.Left + 1; break; + case ConsoleKey.UpArrow: cursor.Top = cursor.Top <= 0 ? board.GetLength(1) - 1 : cursor.Top - 1; break; + case ConsoleKey.DownArrow: cursor.Top = cursor.Top >= board.GetLength(1) - 1 ? 0 : cursor.Top + 1; break; + case ConsoleKey.Backspace: selections.Clear(); break; + case ConsoleKey.Home: goto PlayAgain; + case ConsoleKey.End: + selections.Clear(); + selections.AddRange(showWordSelections); + await Console.Clear(); + await RenderBoard(); + await Console.Write($""" + + Here is where "{currentWord}" was hiding. + + Controls: + - enter/home: play again + - escape: close game + """); + while (true) + { + switch ((await Console.ReadKey(true)).Key) + { + case ConsoleKey.Enter or ConsoleKey.Home: goto PlayAgain; + case ConsoleKey.Escape: goto Close; + } + } + case ConsoleKey.Escape: goto Close; + case ConsoleKey.Enter: + if (!selections.Remove(cursor)) + { + selections.Add(cursor); + selections.Sort(); + if (UserFoundTheWord()) + { + await Console.Clear(); + await RenderBoard(); + await Console.Write($""" + + You found "{currentWord}"! You win! + + Controls: + - enter/home: play again + - escape: close game + """); + while (true) + { + switch ((await Console.ReadKey(true)).Key) + { + case ConsoleKey.Enter or ConsoleKey.Home: goto PlayAgain; + case ConsoleKey.Escape: goto Close; + } + } + } + } + break; + } + } + Close: + await Console.Clear(); + await Console.WriteLine("Word Search was closed."); + await Console.Refresh(); + + void InitializeWords() + { + wordArray = Resources.Words!.Select(word => word.ToUpper()).ToArray(); + } + + void InitializeBoard() + { + selections.Clear(); + + for (int i = 0; i < board.GetLength(1); i++) + { + for (int j = 0; j < board.GetLength(0); j++) + { + board[j, i] = (char)('A' + Random.Shared.Next(26)); + } + } + + currentWord = wordArray[Random.Shared.Next(wordArray.Length)]; + + // choose a random orientation for the word (down, right, left, up, down-right, down-left, up-right, or up-left) + bool r((int Left, int Top) location) => location.Left + currentWord.Length < board.GetLength(0); + bool d((int Left, int Top) location) => location.Top + currentWord.Length < board.GetLength(1); + bool l((int Left, int Top) location) => location.Left - currentWord.Length >= 0; + bool u((int Left, int Top) location) => location.Top - currentWord.Length >= 0; + bool dr((int Left, int Top) location) => d(location) && r(location); + bool dl((int Left, int Top) location) => d(location) && l(location); + bool ur((int Left, int Top) location) => u(location) && r(location); + bool ul((int Left, int Top) location) => u(location) && l(location); + (Func<(int Left, int Top), bool> Validator, (int Left, int Top) Adjustment) orientation = Random.Shared.Next(8) switch + { + 0 => (d, (0, 1)), + 1 => (r, (1, 0)), + 2 => (u, (0, -1)), + 3 => (l, (-1, 0)), + 4 => (dr, (1, 1)), + 5 => (dl, (-1, 1)), + 6 => (ur, (1, -1)), + 7 => (ul, (-1, -1)), + _ => throw new NotImplementedException(), + }; + + // choose a random starting location that is valid for the orientation + List<(int Left, int Top)> possibleLocations = []; + for (int i = 0; i < board.GetLength(1); i++) + { + for (int j = 0; j < board.GetLength(0); j++) + { + if (orientation.Validator((j, i))) + { + possibleLocations.Add((j, i)); + } + } + } + (int Left, int Top) randomLocation = possibleLocations[Random.Shared.Next(possibleLocations.Count)]; + + showWordSelections.Clear(); + for (int i = 0; i < currentWord.Length; i++) + { + showWordSelections.Add(randomLocation); + board[randomLocation.Left, randomLocation.Top] = currentWord[i]; + randomLocation = (randomLocation.Left + orientation.Adjustment.Left, randomLocation.Top + orientation.Adjustment.Top); + } + } + + async Task RenderBoard() + { + Console.CursorVisible = false; + await Console.SetCursorPosition(0, 0); + for (int i = 0; i < board.GetLength(1); i++) + { + for (int j = 0; j < board.GetLength(0); j++) + { + if (selections.Contains((j, i))) + { + (Console.ForegroundColor, Console.BackgroundColor) = (Console.BackgroundColor, Console.ForegroundColor); + } + await Console.Write(board[j, i]); + if (selections.Contains((j, i))) + { + (Console.ForegroundColor, Console.BackgroundColor) = (Console.BackgroundColor, Console.ForegroundColor); + } + if (j < board.GetLength(1) - 1) + { + await Console.Write(' '); + } + } + await Console.WriteLine(); + } + } + + bool UserFoundTheWord() + { + // make sure all the selections are in a straight line + if (selections.Count > 1) + { + (int Left, int Top) adjustment = (selections[1].Left - selections[0].Left, selections[1].Top - selections[0].Top); + if (adjustment.Left > 1 || adjustment.Left < -1 || adjustment.Top > 1 || adjustment.Top < -1) + { + return false; + } + for (int i = 2; i < selections.Count; i++) + { + if ((selections[i].Left - selections[i - 1].Left, selections[i].Top - selections[i - 1].Top) != adjustment) + { + return false; + } + } + } + + char[] chars = selections.Select(location => board[location.Left, location.Top]).ToArray(); + string charsString = new(chars); + Array.Reverse(chars); + string charsStringReverse = new(chars); + return charsString == currentWord || charsStringReverse == currentWord; + } + + } +} diff --git a/Projects/Website/Pages/Word Search.razor b/Projects/Website/Pages/Word Search.razor new file mode 100644 index 00000000..9b4854df --- /dev/null +++ b/Projects/Website/Pages/Word Search.razor @@ -0,0 +1,55 @@ +@using System + +@page "/Word Search" + +Word Search + +

Wumpus World

+ + + Go To Readme + + +
+
+
+			@Console.State
+		
+
+
+ + + + + + + + + +
+
+ + + + + +@code +{ + Games.Word_Search.Word_Search Game; + BlazorConsole Console; + + public Word_Search() + { + Game = new(); + Console = Game.Console; + Console.WindowWidth = 60; + Console.WindowHeight = 31; + Console.TriggerRefresh = StateHasChanged; + } + + protected override void OnInitialized() => InvokeAsync(Game.Run); +} diff --git a/Projects/Website/Shared/NavMenu.razor b/Projects/Website/Shared/NavMenu.razor index db4f7628..f6fa5c5f 100644 --- a/Projects/Website/Shared/NavMenu.razor +++ b/Projects/Website/Shared/NavMenu.razor @@ -1,269 +1,274 @@ 
- +
@code { - private bool collapseNavMenu = true; + private bool collapseNavMenu = true; - private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null; + private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null; - private void ToggleNavMenu() - { - collapseNavMenu = !collapseNavMenu; - } + private void ToggleNavMenu() + { + collapseNavMenu = !collapseNavMenu; + } } diff --git a/Projects/Word Search/Program.cs b/Projects/Word Search/Program.cs new file mode 100644 index 00000000..906cc246 --- /dev/null +++ b/Projects/Word Search/Program.cs @@ -0,0 +1,229 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; + +char[,] board = new char[20, 20]; +List<(int Left, int Top)> showWordSelections = []; +List<(int Left, int Top)> selections = []; + +string[] wordArray = default!; +string currentWord = default!; +(int Left, int Top) cursor = (0, 0); + +InitializeWords(); +PlayAgain: +InitializeBoard(); +Console.Clear(); +while (true) +{ + RenderBoard(); + Console.Write($""" + + Highlight the word "{currentWord}" above. + + Controls: + - arrow keys: move cursor + - enter: highlight characters + - backspace: clear highlighted characters + - home: new word search + - end: give up and show word + - escape: close game + """); + Console.SetCursorPosition(2 * cursor.Left, cursor.Top); + Console.CursorVisible = true; + switch (Console.ReadKey(true).Key) + { + case ConsoleKey.LeftArrow: cursor.Left = cursor.Left <= 0 ? board.GetLength(0) - 1 : cursor.Left - 1; break; + case ConsoleKey.RightArrow: cursor.Left = cursor.Left >= board.GetLength(0) - 1 ? 0 : cursor.Left + 1; break; + case ConsoleKey.UpArrow: cursor.Top = cursor.Top <= 0 ? board.GetLength(1) - 1 : cursor.Top - 1; break; + case ConsoleKey.DownArrow: cursor.Top = cursor.Top >= board.GetLength(1) - 1 ? 0 : cursor.Top + 1; break; + case ConsoleKey.Backspace: selections.Clear(); break; + case ConsoleKey.Home: goto PlayAgain; + case ConsoleKey.End: + selections.Clear(); + selections.AddRange(showWordSelections); + Console.Clear(); + RenderBoard(); + Console.Write($""" + + Here is where "{currentWord}" was hiding. + + Controls: + - enter/home: play again + - escape: close game + """); + while (true) + { + switch (Console.ReadKey(true).Key) + { + case ConsoleKey.Enter or ConsoleKey.Home: goto PlayAgain; + case ConsoleKey.Escape: goto Close; + } + } + case ConsoleKey.Escape: goto Close; + case ConsoleKey.Enter: + if (!selections.Remove(cursor)) + { + selections.Add(cursor); + selections.Sort(); + if (UserFoundTheWord()) + { + Console.Clear(); + RenderBoard(); + Console.Write($""" + + You found "{currentWord}"! You win! + + Controls: + - enter/home: play again + - escape: close game + """); + while (true) + { + switch (Console.ReadKey(true).Key) + { + case ConsoleKey.Enter or ConsoleKey.Home: goto PlayAgain; + case ConsoleKey.Escape: goto Close; + } + } + } + } + break; + } +} +Close: +Console.Clear(); +Console.WriteLine("Word Search was closed."); + +void InitializeWords() +{ + const string wordsResource = "Word_Search.Words.txt"; + Assembly assembly = Assembly.GetExecutingAssembly(); + using Stream? stream = assembly.GetManifestResourceStream(wordsResource); + using StreamReader streamReader = new(stream!); + List words = []; + while (!streamReader.EndOfStream) + { + string? word = streamReader.ReadLine(); + if (!string.IsNullOrWhiteSpace(word) && + word.Length < board.GetLength(0) && + word.Length < board.GetLength(1)) + { + words.Add(word.ToUpper()); + } + } + wordArray = [.. words]; +} + +void InitializeBoard() +{ + selections.Clear(); + + for (int i = 0; i < board.GetLength(1); i++) + { + for (int j = 0; j < board.GetLength(0); j++) + { + board[j, i] = (char)('A' + Random.Shared.Next(26)); + } + } + + currentWord = wordArray[Random.Shared.Next(wordArray.Length)]; + + // choose a random orientation for the word (down, right, left, up, down-right, down-left, up-right, or up-left) + bool r((int Left, int Top) location) => location.Left + currentWord.Length < board.GetLength(0); + bool d((int Left, int Top) location) => location.Top + currentWord.Length < board.GetLength(1); + bool l((int Left, int Top) location) => location.Left - currentWord.Length >= 0; + bool u((int Left, int Top) location) => location.Top - currentWord.Length >= 0; + bool dr((int Left, int Top) location) => d(location) && r(location); + bool dl((int Left, int Top) location) => d(location) && l(location); + bool ur((int Left, int Top) location) => u(location) && r(location); + bool ul((int Left, int Top) location) => u(location) && l(location); + (Func<(int Left, int Top), bool> Validator, (int Left, int Top) Adjustment) orientation = Random.Shared.Next(8) switch + { + 0 => (d, ( 0, 1)), + 1 => (r, ( 1, 0)), + 2 => (u, ( 0, -1)), + 3 => (l, (-1, 0)), + 4 => (dr, ( 1, 1)), + 5 => (dl, (-1, 1)), + 6 => (ur, ( 1, -1)), + 7 => (ul, (-1, -1)), + _ => throw new NotImplementedException(), + }; + + // choose a random starting location that is valid for the orientation + List<(int Left, int Top)> possibleLocations = []; + for (int i = 0; i < board.GetLength(1); i++) + { + for (int j = 0; j < board.GetLength(0); j++) + { + if (orientation.Validator((j, i))) + { + possibleLocations.Add((j, i)); + } + } + } + (int Left, int Top) randomLocation = possibleLocations[Random.Shared.Next(possibleLocations.Count)]; + + showWordSelections.Clear(); + for (int i = 0; i < currentWord.Length; i++) + { + showWordSelections.Add(randomLocation); + board[randomLocation.Left, randomLocation.Top] = currentWord[i]; + randomLocation = (randomLocation.Left + orientation.Adjustment.Left, randomLocation.Top + orientation.Adjustment.Top); + } +} + +void RenderBoard() +{ + Console.CursorVisible = false; + Console.SetCursorPosition(0, 0); + for (int i = 0; i < board.GetLength(1); i++) + { + for (int j = 0; j < board.GetLength(0); j++) + { + if (selections.Contains((j, i))) + { + (Console.ForegroundColor, Console.BackgroundColor) = (Console.BackgroundColor, Console.ForegroundColor); + } + Console.Write(board[j, i]); + if (selections.Contains((j, i))) + { + (Console.ForegroundColor, Console.BackgroundColor) = (Console.BackgroundColor, Console.ForegroundColor); + } + if (j < board.GetLength(1) - 1) + { + Console.Write(' '); + } + } + Console.WriteLine(); + } +} + +bool UserFoundTheWord() +{ + // make sure all the selections are in a straight line + if (selections.Count > 1) + { + (int Left, int Top) adjustment = (selections[1].Left - selections[0].Left, selections[1].Top - selections[0].Top); + if (adjustment.Left > 1 || adjustment.Left < -1 || adjustment.Top > 1 || adjustment.Top < -1) + { + return false; + } + for (int i = 2; i < selections.Count; i++) + { + if ((selections[i].Left - selections[i - 1].Left, selections[i].Top - selections[i - 1].Top) != adjustment) + { + return false; + } + } + } + + char[] chars = selections.Select(location => board[location.Left, location.Top]).ToArray(); + string charsString = new(chars); + Array.Reverse(chars); + string charsStringReverse = new(chars); + return charsString == currentWord || charsStringReverse == currentWord; +} diff --git a/Projects/Word Search/README.md b/Projects/Word Search/README.md new file mode 100644 index 00000000..3fc2e9d7 --- /dev/null +++ b/Projects/Word Search/README.md @@ -0,0 +1,66 @@ +

+ Word Search +

+ +

+ GitHub repo + Language C# + Target Framework + Build + Discord + License +

+ +

+ You can play this game in your browser: +
+ + Play Now + +
+ Hosted On GitHub Pages +

+ +In `Word Search` you try to find a word among a board of letters. + +```cs +C Y B N R Q A M C Q C H L C U N Y O M L +L H B R U D A C Y M L H W J S F E O N D +K O K L P X O C S T V V T D C E H U Y Z +N C N K Q P Q A N D B X P N I Z B C Y A +K N I D F T K B H L X Y P M G I K Y S T +E Y K K K J W W W M U C W P Y N M B V G +H I X Y J O N M U E L K F F M E L A Z S +D J S W N O H X W L X Z M O E G Q X F G +R K E M K M J O W F I C D A B Y R E Y N +P C C Y M I S L P S B Y S R B X W A P M +V V N I Z H D I J N Y Q O B W O J T N F +F P O V L E T K N E E W I B Y E N X O H +K S Y E W Q C W G V T Y G E W R A B J A +M F B F K C W R U O H L G I N L X V N I +B I Z K U X U N D D D F P O J C L C C L +U C K D C Z T N D P O S O F B T S R O J +Y Y J S A S E V B D B X W C B Q S S M G +I X J A H J D E T N Z I K C A A B I H L +N A K A C V N S J M K F B K A P W Y B V +C H P J K Z Z L Q N W G M X Q I T U A Y + +Highlight the word "REOXYGENIZE" above. +``` + +## Input + +- `↑`, `↓`, `←`, `→`: move cursor +- `enter`: highlight the character at the cursor +- `backspace`: clear highlighted characters +- `home`: new word search +- `end`: give up and show word +- `escape`: exit game + +## Downloads + +[win-x64](https://github.com/dotnet/dotnet-console-games/raw/binaries/win-x64/Word%20Search.exe) + +[linux-x64](https://github.com/dotnet/dotnet-console-games/raw/binaries/linux-x64/Word%20Search) + +[osx-x64](https://github.com/dotnet/dotnet-console-games/raw/binaries/osx-x64/Word%20Search) diff --git a/Projects/Word Search/Word Search.csproj b/Projects/Word Search/Word Search.csproj new file mode 100644 index 00000000..043c689f --- /dev/null +++ b/Projects/Word Search/Word Search.csproj @@ -0,0 +1,12 @@ + + + Exe + net8.0 + Word_Search + disable + enable + + + + + diff --git a/README.md b/README.md index 99ed6844..1a391df0 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ |[Drive](Projects/Drive)|2|[![Play Now](.github/resources/play-badge.svg)](https://dotnet.github.io/dotnet-console-games/Drive) [![Status](https://github.com/dotnet/dotnet-console-games/workflows/Drive%20Build/badge.svg)](https://github.com/dotnet/dotnet-console-games/actions)| |[Sliding Puzzle](Projects/Sliding%20Puzzle)|2|[![Play Now](.github/resources/play-badge.svg)](https://dotnet.github.io/dotnet-console-games/Sliding%20Puzzle) [![Status](https://github.com/dotnet/dotnet-console-games/workflows/Sliding%20Puzzle%20Build/badge.svg)](https://github.com/dotnet/dotnet-console-games/actions)| |[Snake](Projects/Snake)|3|[![Play Now](.github/resources/play-badge.svg)](https://dotnet.github.io/dotnet-console-games/Snake) [![Status](https://github.com/dotnet/dotnet-console-games/workflows/Snake%20Build/badge.svg)](https://github.com/dotnet/dotnet-console-games/actions)| +|[Word Search](Projects/Word%20Search)|3|[![Play Now](.github/resources/play-badge.svg)](https://dotnet.github.io/dotnet-console-games/Word%20Search) [![Status](https://github.com/dotnet/dotnet-console-games/workflows/Word%20Search%20Build/badge.svg)](https://github.com/dotnet/dotnet-console-games/actions)| |[Hurdles](Projects/Hurdles)|3|[![Play Now](.github/resources/play-badge.svg)](https://dotnet.github.io/dotnet-console-games/Hurdles) [![Status](https://github.com/dotnet/dotnet-console-games/workflows/Hurdles%20Build/badge.svg)](https://github.com/dotnet/dotnet-console-games/actions)| |[Pong](Projects/Pong)|3|[![Play Now](.github/resources/play-badge.svg)](https://dotnet.github.io/dotnet-console-games/Pong) [![Status](https://github.com/dotnet/dotnet-console-games/workflows/Pong%20Build/badge.svg)](https://github.com/dotnet/dotnet-console-games/actions)| |[Flappy Bird](Projects/Flappy%20Bird)|3|[![Play Now](.github/resources/play-badge.svg)](https://dotnet.github.io/dotnet-console-games/Flappy%20Bird) [![Status](https://github.com/dotnet/dotnet-console-games/workflows/Flappy%20Bird%20Build/badge.svg)](https://github.com/dotnet/dotnet-console-games/actions)| diff --git a/dotnet-console-games.sln b/dotnet-console-games.sln index 92b38d84..44d7a1b5 100644 --- a/dotnet-console-games.sln +++ b/dotnet-console-games.sln @@ -105,6 +105,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Clicker", "Projects\Clicker EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tetris", "Projects\Tetris\Tetris.csproj", "{4E9F6AA3-7E12-4555-95C2-6D90C8CD3DBB}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Word Search", "Projects\Word Search\Word Search.csproj", "{A1536214-8984-4528-90DF-F465EB491685}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -315,6 +317,10 @@ Global {4E9F6AA3-7E12-4555-95C2-6D90C8CD3DBB}.Debug|Any CPU.Build.0 = Debug|Any CPU {4E9F6AA3-7E12-4555-95C2-6D90C8CD3DBB}.Release|Any CPU.ActiveCfg = Release|Any CPU {4E9F6AA3-7E12-4555-95C2-6D90C8CD3DBB}.Release|Any CPU.Build.0 = Release|Any CPU + {A1536214-8984-4528-90DF-F465EB491685}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1536214-8984-4528-90DF-F465EB491685}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1536214-8984-4528-90DF-F465EB491685}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1536214-8984-4528-90DF-F465EB491685}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/dotnet-console-games.slnf b/dotnet-console-games.slnf index e6060bff..19f8a510 100644 --- a/dotnet-console-games.slnf +++ b/dotnet-console-games.slnf @@ -49,6 +49,7 @@ "Projects\\Tug Of War\\Tug Of War.csproj", "Projects\\Type\\Type.csproj", "Projects\\Whack A Mole\\Whack A Mole.csproj", + "Projects\\Word Search\\Word Search.csproj", "Projects\\Wordle\\Wordle.csproj", "Projects\\Wumpus World\\Wumpus World.csproj", "Projects\\Yahtzee\\Yahtzee.csproj",