2012-11-29 2 views
-1

임의의 단어를 생성하고 사용자가 단어를 추측하도록하는 게임을 만듭니다. 사용자가 자신의 말을 입력하면 게임은 그들을 비교하여 올바른 편지와 올바른 위치를 가지고 있는지를 반환합니다. 지금은 같은 단어를 입력하면 differents 결과를 반환합니다.문자 위치 확인 및 해당 문자가 올바른 경우

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); 



     } 
+0

'InputWord.ToCharArray();'아무 것도하지 않으면 결과가 무시됩니다. 그것은 사용되지 않고 현재 코드에서 전혀 필요하지 않습니다. – Habib

+0

당신은 어디에서 당신의 의견을 사용하고 있습니까? 아무 곳에 나 초기화되는 입력 단어가 보이지 않습니다. 그리고 무작위 값과 비교하면, 게시 한 코드에서 논리가 명확하지 않습니다. – ryadavilli

+0

당신이 말하는 동일한 단어를 비교한다면 당신의 말은 틀린 것입니까? –

답변

0

이 같은 시도 (나는 당신의 UI 소스를 가지고 있지 않기 때문에 인쇄를 콘솔로 변환) 게임이 시작될 때 임의의 단어를 얻고 (Game 인스턴스를 인스턴스화 한) CheckWords 메소드의 사용자 입력과 비교합니다.

나는 루프에서 MessageBox.show을 호출하지 말 것을 제안합니다. 일치하는 것이있을 때마다 팝업됩니다.

+0

에 대한 루프 조건을 변경하십시오. 고맙지 만 작동하지 않습니다. – user1808211

+0

당신은 무엇을 얻었습니까? – NeverHopeless

+0

그것은 널 예외 오류가 발생했습니다 ... (int i = 0; i – user1808211

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(); 
     } 
    } 
+0

이 코드에는 내 문제가 없습니다. 참고 사항 : CorrectWord = getRandomWord(); – user1808211

+0

해당 매개 변수에 대한 연산을 사용하지 않았습니다. 왜 당신은 단순히 그 함수에 문자열을 전달해야합니다. Actaull thins는이 코드를 프로젝트에 추가해야합니다. char [] charInputWord = name.ToCharArray(); 및 char [] charCorrectWord = CorrectWord.ToCharArray(); 및 (int i = 0; i

0

모두 namesname를 사용하지 않고, 불필요한 것 같습니다 않습니다.

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; 
     } 
    } 
} 

장면 뒤에 아이디어를 :

은 이 뭔가를 원하는 것 같습니다

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; 
     } 

    } 
} 
관련 문제