Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Drawing;
- using GDIDrawer;
- namespace Lab4
- {
- class Program
- {
- static void Main(string[] args)
- {
- CDrawer Canvas = new CDrawer();
- do
- {
- char guess;
- char[] charArray = null;
- char[] word = null;
- int correct;
- int failure = 0;
- bool win;
- int letter = 0;
- bool gameLost = false;
- Console.Clear();
- Canvas.Clear();
- //title
- Console.WriteLine("\t\t\tLab 4 Dale Chen-Song\n");
- DrawScreen(Canvas);
- GetWord(ref word, out charArray);
- do
- {
- //user input letter to guess
- GetGuess("Enter a letter to guess: ", charArray, out guess);
- //check guessed letter
- CheckGuess(guess, ref charArray, ref word, out correct, out win, ref letter);
- DrawScreen(Canvas, guess, charArray, correct, ref failure, ref gameLost);
- } while (!gameLost || !win);
- Console.Write("Do you want to play again? ");
- } while (Console.ReadLine().ToLower() == "yes");
- }
- static private void DrawScreen(CDrawer Canvas)
- {
- //draw gallows
- Canvas.AddLine(350, 100, 350, 450, Color.SandyBrown, 3);
- Canvas.AddLine(350, 120, 450, 120, Color.SandyBrown, 3);
- Canvas.AddLine(350, 400, 500, 400, Color.SandyBrown, 3);
- Canvas.AddLine(350, 410, 475, 445, Color.SandyBrown, 3);
- Canvas.AddLine(350, 445, 475, 410, Color.SandyBrown, 3);
- Canvas.AddLine(475, 400, 475, 450, Color.SandyBrown, 3);
- Canvas.AddLine(350, 140, 370, 120, Color.SandyBrown, 3);
- Canvas.AddLine(420, 120, 420, 150, Color.Red, 1);
- Canvas.AddText("Letters used: ", 20, 200, 25, 180, 50, Color.Blue);
- }
- static private void GetWord(ref char[] array, out char[] newArray)
- {
- string secretWord = "kitten";
- array = secretWord.ToCharArray();
- newArray = new char[array.Length];
- for (int i = 0; i < newArray.Length; i++)
- {
- newArray[i] = '-';
- }
- }
- static private void DrawScreen(CDrawer Canvas, char input, char[] newArray, int success, ref int fail, ref bool lose)
- {
- string correctGuess = new string(newArray);
- Canvas.AddText($"Letters used: {input}", 20, 200, 25, 180, 50, Color.Blue);
- Canvas.AddText(correctGuess, 20, 200, 600, 200, 50, Color.Purple);
- if (success <= 0)
- {
- fail++;
- if (fail == 1)
- {
- Canvas.AddCenteredEllipse(420, 155, 35, 35, Color.Beige);
- }
- if (fail == 2)
- {
- Canvas.AddCenteredEllipse(420, 200, 35, 60, Color.Beige);
- }
- if (fail == 3)
- {
- Canvas.AddLine(420, 170, 380, 210, Color.Beige, 3);
- }
- if (fail == 4)
- {
- Canvas.AddLine(420, 170, 460, 210, Color.Beige, 3);
- }
- if (fail == 5)
- {
- Canvas.AddLine(420, 220, 400, 270, Color.Beige, 3);
- }
- if (fail == 6)
- {
- Canvas.AddLine(420, 220, 440, 270, Color.Beige, 3);
- Canvas.AddText("You lose!", 80, Color.Purple);
- lose = true;
- }
- }
- }
- static private void GetGuess(string prompt, char[] array, out char input)
- {
- string guess; //input guess string from user
- input = ' ';
- bool error = false;
- //repeat until input is right
- do
- {
- //might throw an exception
- try
- {
- //set error to be false
- error = false;
- //user input value for letter
- Console.Write(prompt);
- guess = Console.ReadLine();
- input = Convert.ToChar(guess);
- //check if the input is valid
- if (!Char.IsLetter(input))
- {
- //display error message if invalid input, prompt user to try again
- Console.WriteLine("An invalid character was entered, please try again.");
- error = true;
- }
- for (int i = 0; i < array.Length; i++)
- {
- if (input == array[i])
- {
- //display error message if repeat input, prompt user to try again
- Console.WriteLine("You have already entered that letter, please try again.");
- error = true;
- }
- }
- }
- //catch any exception thrown
- catch (Exception ex)
- {
- //display error message, set error condition to true
- Console.WriteLine(ex.Message);
- error = true;
- }
- }//continue looping until the input is correct
- while (error);
- }
- static private void CheckGuess(char input, ref char[] newArray, ref char[] answer, out int success, out bool gameWon, ref int letterGuessed)
- {
- success = 0;
- for (int i = 0; i < answer.Length; i++)
- {
- if (input == answer[i])
- {
- newArray[i] = input;
- success++;
- letterGuessed++;
- }
- }
- Console.WriteLine(newArray);
- if (letterGuessed == answer.Length)
- {
- gameWon = true;
- }
- else
- {
- gameWon = false;
- }
- Console.WriteLine(gameWon);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement