博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高效掌握C#第五回---猜单词游戏
阅读量:4316 次
发布时间:2019-06-06

本文共 5027 字,大约阅读时间需要 16 分钟。

  前四回介绍了c#常用的数据类型,数组,字符串的常用操作,本回书进入实践环节,综合运用前面讲到的这些知识,实践一个控制台小游戏。

  以下是需求说明:

 /*

Playing a console-based game

To solve the problem, your program must be able to:

Choose a random word to use as the secret word. That word is chosen from a word list, as described in the following paragraph.

Keep track of the user’s partially guessed word, which begins as a series of dashes and then updated as correct letters are guessed.
Implement the basic control structure and manage the details (ask the user to guess a letter, keep track of the number of guesses remaining, print out the various messages, detect the end of the game, and so forth)
*/

  简单说需求就是从一个单词集合中随机选取一个单词, 假设猜想单词school, 就在控制台上输出 _ _ _ _ _ _,根据英语普遍规律,绝大部分的单词都有元音字母,所以从元音字母开始猜比较容易。假设用户猜字母O,单词school中出现了,就在单词上预留的位置中填写此字母,_ _ _ o o _ 当用户们猜测的单词为school中并未出现的字母,则将在控制台中输出最近一次单词的状态。若给定猜测次数内,单词仍未猜出,则系统获胜,若猜出此单词,则为用户获胜。

java版本实现

 

public class Main {    //1一个单词数组(字符串数组)    //2随机获取一个单词,随机一个下标(下标值在0到单词数组长度之间)    //3得到单词长度len,创建一个长度为len的字符数组word,数组元素初值均为-    //4循环以下步骤(退出循环的条件为,用户允许猜错的次数<=0或word字符中数组中不再包含-字符)    //5输出word到屏幕    //6获取客户输入,判断随机选出的单词中是否包含用户输入的字符    //7若包含,得到字符在单词中出现的位置,并将该位置的字符替换成用户输入的字符,返回到4    //8若不包含,用户可以猜错的次数减一,返回到4    //9.得出最后结论:判断用户允许猜错的次数是否大于0,如果大于0,输出用户胜利,否则输出用户失败       public static boolean isContaisChar(char[] array, char c)    {        boolean bFind = false;        for(int i = 0; i
0 && isContaisChar(wordShow,'-')) { //5输出word到屏幕 System.out.println(wordShow); //6获取客户输入,判断随机选出的单词中是否包含用户输入的字符 Scanner sc = new Scanner(System.in); String c = sc.nextLine(); //7若包含,得到字符在单词中出现的位置,并将该位置的字符替换成用户输入的字符,返回到4 boolean bFind = false; for(int i = 0; i < wordShow.length; i++) { if(strWordChoose.charAt(i) == c.toCharArray()[0]) { wordShow[i] = c.toCharArray()[0]; bFind = true; } } //8若不包含,用户可以猜错的次数减一,返回到4 if(!bFind) { nGuessTimes--; System.out.println("您还有"+nGuessTimes+"次机会"); } } //9.得出最后结论:判断用户允许猜错的次数是否大于0,如果大于0,输出用户胜利,否则输出用户失败 if(nGuessTimes > 0) { System.out.println("you win"); } else { System.out.println("you lose"); } }}

 

 

  

以下给出代码实现(C#):

  

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 Program11     {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);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             else85             {86                 wrongGuess--;87             }88 89             return characters;90         }91     }92 }

 

 

转载于:https://www.cnblogs.com/ice-river/archive/2013/01/30/2883819.html

你可能感兴趣的文章
Stax解析XML示例代码
查看>>
cookie
查看>>
二级图片导航菜单
查看>>
<Using parquet with impala>
查看>>
07-Java 中的IO操作
查看>>
uclibc,eglibc,glibc之间的区别和联系【转】
查看>>
Java魔法堂:找外援的利器——Runtime.exec详解
查看>>
mysql数据库存放路径
查看>>
TestNG(五)常用元素的操作
查看>>
解决 Visual Studio 点击添加引用无反应的问题
查看>>
通过镜像下载Android系统源码
查看>>
python字符串格式化 %操作符 {}操作符---总结
查看>>
windows 不能在 本地计算机 启动 Apache
查看>>
iOS开发报duplicate symbols for architecture x86_64错误的问题
查看>>
Chap-6 6.4.2 堆和栈
查看>>
【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
查看>>
C# MySql 连接
查看>>
sk_buff Structure
查看>>
oracle的级联更新、删除
查看>>
多浏览器开发需要注意的问题之一
查看>>