diff --git a/Battleship.Ascii/ConsoleHelper.cs b/Battleship.Ascii/ConsoleHelper.cs new file mode 100644 index 0000000..4646355 --- /dev/null +++ b/Battleship.Ascii/ConsoleHelper.cs @@ -0,0 +1,70 @@ +using System; + +namespace Battleship.Ascii +{ + static class ConsoleHelper { + public static void DrawTitle() + { + Console.Title = "Battleship"; + Console.BackgroundColor = ConsoleColor.Black; + Console.ForegroundColor = ConsoleColor.DarkGray; + Console.Clear(); + + Console.WriteLine(" |__"); + Console.WriteLine(@" |\/"); + Console.WriteLine(" ---"); + Console.WriteLine(" / | ["); + Console.WriteLine(" ! | |||"); + Console.WriteLine(" _/| _/|-++'"); + Console.WriteLine(" + +--| |--|--|_ |-"); + Console.WriteLine(@" { /|__| |/\__| |--- |||__/"); + Console.WriteLine(@" +---------------___[}-_===_.'____ /\"); + Console.WriteLine(@" ____`-' ||___-{]_| _[}- | |_[___\==-- \/ _"); + Console.WriteLine(@" __..._____--==/___]_|__|_____________________________[___\==--____,------' .7"); + Console.WriteLine(@"| Welcome to Battleship BB-61/"); + Console.WriteLine(@" \_________________________________________________________________________|"); + Console.WriteLine(); + } + + public static void DrawStartGame(){ + Console.Clear(); + Console.ForegroundColor = ConsoleColor.Gray; + Console.WriteLine(" __"); + Console.WriteLine(@" / \"); + Console.WriteLine(" .-. | |"); + Console.WriteLine(@" * _.-' \ \__/"); + Console.WriteLine(@" \.-' \"); + Console.WriteLine(" / _/"); + Console.WriteLine(@" | _ /"""); + Console.WriteLine(@" | /_\'"); + Console.WriteLine(@" \ \_/"); + Console.WriteLine(@" """""""""); + } + + public static void DrawExplode() + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(@" \ . ./"); + Console.WriteLine(@" \ .:"";'.:.."" /"); + Console.WriteLine(@" (M^^.^~~:.'"")."); + Console.WriteLine(@" - (/ . . . \ \) -"); + Console.WriteLine(@" ((| :. ~ ^ :. .|))"); + Console.WriteLine(@" - (\- | \ / | /) -"); + Console.WriteLine(@" -\ \ / /-"); + Console.WriteLine(@" \ \ / /"); + } + + public static void DrawMiss() + { + Console.ForegroundColor = ConsoleColor.Cyan; + Console.WriteLine(@" _ _ "); + Console.WriteLine(@" | | | | "); + Console.WriteLine(@" ___ _ __ | | __ _ ___| |__ "); + Console.WriteLine(@" / __| '_ \| |/ _` / __| '_ \ "); + Console.WriteLine(@" \__ \ |_) | | (_| \__ \ | | |"); + Console.WriteLine(@" |___/ .__/|_|\__,_|___/_| |_|"); + Console.WriteLine(@" | | "); + Console.WriteLine(@" |_| "); + } +} +} \ No newline at end of file diff --git a/Battleship.Ascii/Program.cs b/Battleship.Ascii/Program.cs index 755df2d..883e37d 100644 --- a/Battleship.Ascii/Program.cs +++ b/Battleship.Ascii/Program.cs @@ -30,24 +30,7 @@ static void Main() try { - Console.Title = "Battleship"; - Console.BackgroundColor = ConsoleColor.Black; - Console.Clear(); - - Console.WriteLine(" |__"); - Console.WriteLine(@" |\/"); - Console.WriteLine(" ---"); - Console.WriteLine(" / | ["); - Console.WriteLine(" ! | |||"); - Console.WriteLine(" _/| _/|-++'"); - Console.WriteLine(" + +--| |--|--|_ |-"); - Console.WriteLine(@" { /|__| |/\__| |--- |||__/"); - Console.WriteLine(@" +---------------___[}-_===_.'____ /\"); - Console.WriteLine(@" ____`-' ||___-{]_| _[}- | |_[___\==-- \/ _"); - Console.WriteLine(@" __..._____--==/___]_|__|_____________________________[___\==--____,------' .7"); - Console.WriteLine(@"| Welcome to Battleship BB-61/"); - Console.WriteLine(@" \_________________________________________________________________________|"); - Console.WriteLine(); + ConsoleHelper.DrawTitle(); InitializeGame(); @@ -66,21 +49,13 @@ static void Main() private static void StartGame() { - Console.Clear(); - Console.WriteLine(" __"); - Console.WriteLine(@" / \"); - Console.WriteLine(" .-. | |"); - Console.WriteLine(@" * _.-' \ \__/"); - Console.WriteLine(@" \.-' \"); - Console.WriteLine(" / _/"); - Console.WriteLine(@" | _ /"""); - Console.WriteLine(@" | /_\'"); - Console.WriteLine(@" \ \_/"); - Console.WriteLine(@" """""""""); + Console.Clear(); + ConsoleHelper.DrawStartGame(); GameController gc = new GameController(); do { + Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(); Console.WriteLine("Player, it's your turn"); Console.WriteLine("Enter coordinates for your shot :"); @@ -96,13 +71,16 @@ private static void StartGame() if (isHit) { Explode(); - } + } else { + ConsoleHelper.DrawMiss(); + } if (isSunk) { // TODO: add actual ship + Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($"Ship was sunk"); } - + Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(isHit ? "Yeah ! Nice hit !" : "Miss"); position = GetRandomPosition(); @@ -113,6 +91,7 @@ private static void StartGame() telemetryClient.TrackEvent("Computer_ShootPosition", new Dictionary() { { "Position", position.ToString() }, { "IsHit", isHit.ToString() } }); Console.WriteLine(); + Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Computer shot in {0}{1} and {2}", position.Column, position.Row, isHit ? "has hit your ship !" : "missed"); if (isHit) { @@ -121,24 +100,22 @@ private static void StartGame() if (isSunk) { + Console.ForegroundColor = ConsoleColor.Green; // TODO: add actual ship Console.WriteLine($"Ship was sunk"); } + Console.ForegroundColor = ConsoleColor.DarkGreen; + Console.WriteLine(); + Console.WriteLine("-------------------------------------------"); + Console.WriteLine(); } while (true); } private static void Explode() { Console.Beep(); + ConsoleHelper.DrawExplode(); - Console.WriteLine(@" \ . ./"); - Console.WriteLine(@" \ .:"";'.:.."" /"); - Console.WriteLine(@" (M^^.^~~:.'"")."); - Console.WriteLine(@" - (/ . . . \ \) -"); - Console.WriteLine(@" ((| :. ~ ^ :. .|))"); - Console.WriteLine(@" - (\- | \ / | /) -"); - Console.WriteLine(@" -\ \ / /-"); - Console.WriteLine(@" \ \ / /"); } public static Position ParsePosition(string input) { @@ -169,6 +146,7 @@ private static void InitializeGame() private static void InitializeBoard() { + Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Please enter a height and width for the board :"); int height = 0; @@ -203,8 +181,9 @@ private static void InitializeBoard() } private static void InitializeMyFleet() { + Console.Clear(); myFleet = GameController.InitializeShips().ToList(); - + Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(String.Format("Please position your fleet (Game board size is from A to {0} and 1 to {1}) :", (Letters)myBoard.Height, myBoard.Width)); foreach (var ship in myFleet)