You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#开发hangman控制台游戏如何实现记录已猜测字母的功能

Hangman猜词游戏已猜字母记录实现方案

实现记录用户已猜测字母的核心是新增去重集合存储猜过的字符,同时新增数组保留历史猜词进度,避免每次刷新丢失之前猜对的内容。同时你现有代码存在变量拼写错误,InputWord被误写为InputWoord,需要先修正避免编译报错。

完整可运行代码

using System;
using System.Collections.Generic;
using System.Linq;

namespace hangman
{
    class Program
    {
        static void Main(string[] args)
        {
            string InputWord;
            char Letter;
            // 存储所有已猜测的字母,自动去重
            HashSet<char> guessedLetters = new HashSet<char>();
        
            Console.Write("give your word here: ");
            // 修正变量拼写错误
            InputWord = Console.ReadLine();
            // 存储当前猜词进度,初始全为下划线
            char[] currentGuessState = new char[InputWord.Length];
            for (int i = 0; i < InputWord.Length; i++)
            {
                currentGuessState[i] = '_';
            }
        
            Console.Clear();
        
            // 初始打印空白进度
            foreach (char c in currentGuessState)
            {
                Console.Write(c + " ");
            }
            Console.WriteLine();
        
            for (int J = 0; J < 11; J++)
            {
                Console.WriteLine("it is turn:  " + J);
                Console.Write("guess the letter: ");
                Letter = Convert.ToChar(Console.ReadLine());

                // 先判断字母是否已经猜过
                if (guessedLetters.Contains(Letter))
                {
                    Console.WriteLine($"你已经猜过字母{Letter}了,请换一个!");
                    // 不消耗猜测次数,回退循环计数
                    J--;
                    continue;
                }
                // 没猜过就加入已猜集合
                guessedLetters.Add(Letter);

                // 更新猜词进度
                for (int i = 0; i < InputWord.Length; i++)    
                {
                    if (InputWord[i] == Letter)         
                    {
                        currentGuessState[i] = Letter;
                    }
                }

                // 打印最新进度
                foreach (char c in currentGuessState)
                {
                    Console.Write(c + " ");
                }
                Console.WriteLine();

                // 可选:判断是否全部猜对,提前结束游戏
                if (!currentGuessState.Contains('_'))
                {
                    Console.WriteLine("恭喜你猜对了所有字母!游戏胜利!");
                    break;
                }
            } 
        }
    }
}

核心功能说明

  • HashSet<char>类型的guessedLetters是实现已猜字母记录的核心,它自带去重能力,调用Contains方法可以在极短时间内判断字母是否已经被猜过
  • 每次重复猜测不会消耗次数,输入合法的新字母才会被计入已猜集合
  • 新增的currentGuessState数组用来持久化保存猜词进度,不会因为新的输入覆盖之前猜对的结果

内容的提问来源于stack exchange,提问作者ThatOneGameGuy TOGG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:15:03