1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.IO;
6 using System.Diagnostics;
7
8 namespace GuessWord
9 {
10 class Program
11 {
12 static int wrongGuess, lettersLeft;
13
14 static void Main(string[] args)
15 {
16 string wordToGuess = GetWordToGuess();
17
18 char[] maskedWord = GetHiddenLetters(wordToGuess, '-');
19
20 lettersLeft = wordToGuess.Length;
21 char userGuess;
22
23 wrongGuess = 3;//可错误三次
24
25 while (wrongGuess > 0 && lettersLeft > 0)//错误次数没用完且还有未猜出次数
26 {
27 DisplayCharacters(maskedWord);
28
29 Console.WriteLine("Enter a letter?");
30 userGuess = char.Parse(Console.ReadLine());
31
32 maskedWord = CheckGuess(userGuess, wordToGuess, maskedWord);
33 }
34
35 Console.WriteLine("Well done! Thanks for playing.");
36 Console.ReadLine();
37 }
38
39 static string GetWordToGuess()
40 {
41 Random number = new Random();
42 int wordNumber = number.Next(0, 9);//产生0-9之间的随机数
43
44 string[] words = { "picture", "chinese", "school", "question", "include", "simple", "difficult", "understand", "necessary", "support" };
45
46 string selectWord = words[wordNumber];//被猜单词
47 return selectWord;
48 }
49
50 static char[] GetHiddenLetters(string word, char mask)
51 {
52 char[] hidden = new char[word.Length];
53
54 for (int i = 0; i < word.Length; i++)
55 {
56 hidden[i] = mask;
57 }
58
59 return hidden;
60 }
61
62 static void DisplayCharacters(char[] characters)
63 {
64 foreach (char letter in characters)
65 {
66 Console.Write(letter);
67 }
68 Console.WriteLine();
69 }
70
71 static char[] CheckGuess(char letterToCheck, string word, char[] characters)
72 {
73 if (word.Contains(letterToCheck))
74 {
75 for (int i = 0; i < word.Length; i++)
76 {
77 if (word[i] == letterToCheck)
78 {
79 characters[i] = word[i];
80 lettersLeft--;//猜对一个单词,空缺字母减一
81 }
82 }
83 }
84 else
85 {
86 wrongGuess--;//错误一次,可错误次数减一
87 }
88
89 return characters;
90 }
91 }
92 }