首页 > 解决方案 > 怎么玩刽子手?

问题描述

我需要创建一个刽子手游戏。问题是我正在努力保持猜测并消除代表尚未选择的字母的 * 字符。

在表单设计中有一个包含整个字母表的列表框可供选择,还有一个代表正在猜测的单词的标签。

public partial class Form1 : Form
    {
        string line;
        public Form1()
        {
            InitializeComponent();
        }

        private void tabPage1_Click(object sender, EventArgs e)
        {

        }

        private void lsbLetters_SelectedIndexChanged(object sender, EventArgs e)
        {
            string myString = "bash";
            int d, counter;

            char y, letter;
            letter = Convert.ToChar(lsbLetters.SelectedItem.ToString());

            for (counter = 1; counter < myString.Length; counter++)
            {
                line = "";

                for (d = 0; d < myString.Length; d++)
                {
                    y = myString[d];

                    if (letter == myString[d])
                    {
                        line += myString[d];
                        for (int j = 1; j <= myString.Length - d; j++)
                        {
                            line += "* ";
                        }
                        lblWord.Text = line;

                    }
                }
            }
        }
    }

如果猜对了,我需要替换字母,通过列表框和其他字母保留 * 字符,直到它们被选中,例如,如果为当前单词 bash 选择了 a 和 h。

*a*h

| a |
| b | 
| c |
| d |
| e |
| f | 
| g |
....

标签: c#

解决方案


试试看:

private void lsbLetters_SelectedIndexChanged(object sender, EventArgs e)
{
    string myString = "bash";
    char letter = Convert.ToChar(lsbLetters.SelectedItem.ToString());
    line = "";

    for (int counter = 0; counter < myString.Length; counter++)
    {
        if (letter == myString[counter])
            line += letter;
        else
            line += lblWord.Text[counter];
    }

    lblWord.Text = line;
}

推荐阅读