-1

ランダムな単語を生成し、ユーザーに単語を推測させるゲームを作成しています。ユーザーが単語を入力すると、ゲームはそれらを比較し、どの文字が正しかったか、正しい位置にあるかどうかを返します。現在、同じ単語を入力すると、異なる結果が返されます。

これは私がこれまでに持っているものです:

class Game
{
    public string CorrectPlace;
    public string WrongPlace;
    public string NoneExist;
    public string CorrectWord;
    public string InputWord; // the word the uis
    public int points;

    public string[] Wordarray = new string[] { "radar", "andar", "raggar", "rapar", "raser", "rastar", "rikas" };

    public string getRandomWord(string names)
    {   
        Random ran = new Random();
        return Wordarray[(ran.Next(0,Wordarray.Length-1))];
    }

    public void CheckWords(string name)
    {
        InputWord.ToCharArray(); 

        CorrectWord = getRandomWord(CorrectWord); // store the random word in a string

        for (int i = 0; i < CorrectWord.Length; i++)
        {
            if (InputWord[i] == CorrectWord[i])
                MessageBox.Show("Letter #" + (i + 1).ToString() + " was correct!");
            else
                break;
        }  
    }
}

私のフォームでメソッドを呼び出しています

    private void button1_Click(object sender, EventArgs e)
    {

        Game nc = new Game();

        nc.InputWord = textBox1.Text;
        nc.CheckWords(nc.InputWord);



        }
4

3 に答える 3

0

このようにコードを変更します。何か問題があれば教えてください。

クラスゲーム{

    public string CorrectWord = null;
    public string InputWord; // the word the uis
    public int points;

    public string[] Wordarray = new string[] { "radar", "andar", "raggar", "rapar", "raser", "rastar", "rikas" };

    public string getRandomWord()
    {
        Random ran = new Random();
        return Wordarray[(ran.Next(0, Wordarray.Length - 1))];
    }

    public void Newgame()
    {
    }

    public void CheckWords(string name)
    {

        char[] charInputWord = name.ToCharArray();


        CorrectWord = getRandomWord(); // store the random word in a string

        Console.WriteLine("Random Word " + CorrectWord);
        Console.WriteLine("User Word " + name);

        char[] charCorrectWord = CorrectWord.ToCharArray();

        for (int i = 0; i < charInputWord.Length; i++)
        {
            if (charInputWord[i] == charCorrectWord[i])
                Console.WriteLine("Letter #" + (i + 1).ToString() + " was correct!");
            else
                break;
        }
    }
}



class Program
    {
        static void Main(string[] args)
        {
            Game ab = new Game();
            ab.CheckWords("raser");

            Console.ReadLine();
        }
    }
于 2012-11-29T06:28:34.707 に答える
0

このようにしてみてください:

class Game
{
    public string CorrectPlace;
    public string WrongPlace;
    public string NoneExist;
    public string CorrectWord;
    public string InputWord;  
    public int points;

    public string[] Wordarray = null;

    public string getRandomWord(string names)
    {   
        Random ran = new Random();
        return Wordarray[(ran.Next(0,Wordarray.Length-1))];
    }

    public void Game()
    {
        Wordarray = new string[] { "radar", "andar", "raggar", "rapar", "raser", "rastar", "rikas" }
        CorrectWord = getRandomWord(); // store the random word in a string
    }

    public void CheckWords(string name)
    {
        for (int i = 0; i < CorrectWord.Length; i++)
        {
            if (InputWord[i] == CorrectWord[i])
                MessageBox.Show("Letter #" + (i + 1).ToString() + " was correct!");
            else
                break;
        }  
    }
}

舞台裏のアイデアは、ゲームの開始時にランダムな単語 (インスタンス化されたクラスのGameインスタンス) を取得し、それをメソッドのユーザー入力と比較することCheckWordsです。

ループで呼び出さないことをお勧めしますMessageBox.show。一致が存在するたびにポップアップします。発生する

于 2012-11-29T06:43:45.543 に答える
0

namesとはどちらnameも使用されることはなく、不要なようです。

このようなものが必要なようです (UI ソースがないため、コンソール印刷に変換されます)。

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

namespace WordGame
{
    class Game
    {
        static void Main(string[] args)
        {
            Game g = new Game();
            bool gameOver = false;

            while (!gameOver)
            {
                Console.WriteLine("Enter a guess (or type 'exit' to exit):");
                string answer = Console.ReadLine();
                if (answer.ToLower() == "exit")
                    break;

                if (g.CheckWord(answer))
                {
                    Console.WriteLine("You win!");
                    while (true)
                    {
                        Console.WriteLine("Play Again (y/n)?");
                        answer = Console.ReadLine().ToLower();
                        if (answer == "n")
                        {
                            gameOver = true;
                            break;
                        }
                        else if (answer == "y")
                        {
                            g.ChooseRandomWord();
                            break;
                        }
                    }
                }
            }
        }

        public string CorrectWord;

        public string[] Wordarray = new string[] { "radar", "andar", "raggar", "rapar", "raser", "rastar", "rikas" };
        private Random ran = new Random();

        public Game()
        {
            ChooseRandomWord();
        }

        public void ChooseRandomWord()
        {
            CorrectWord = Wordarray[(ran.Next(0, Wordarray.Length - 1))];
        }

        public bool CheckWord(string guess)
        {
            if (guess.Trim() == CorrectWord)
            {
                return true;
            }

            string guessLower = guess.Trim().ToLower();
            string correctLower = CorrectWord.ToLower();

            for (int i = 0; i < correctLower.Length; i++)
            {
                if (guessLower[i] == correctLower[i])
                    Console.Write(guess[i]);
                else
                    Console.Write("#");
            }
            Console.WriteLine();

            return false;
        }

    }
}
于 2012-11-29T06:34:36.553 に答える