2017-01-07 2 views
-1

내 프로그램이 임의로 사전에서 단어를 선택하여 텍스트 상자/또는 레이블에 저장하는 간단한 게임을 코딩하려고합니다. (이 부분은 확실하지 않음). 그런 다음 사용자가 추측을 입력하는 또 다른 텍스트 상자가 있습니다.파일에서 읽을 때 C# 테스트 상자 조작

이제 사용자에게 몇 가지 힌트를 주려고합니다. 예 : '게임'은 '_ a m _'또는 'g _ _ e'와 유사합니다. 나는 캐릭터가 배치되는 방법을 선호하지 않는다.

랜덤 파일 처리 방법, 모든 타이머 및 카운터 등 이전 코드를 모두 프로그래밍했습니다.이 부분 만 막혔습니다.

이 프로그램은 다음 코드를 겪는다 : var lines = File.ReadAllLines(@"LOCATION");
textBox3.Text = lines[new Random().Next(lines.Length)];

파일에서 임의의 단어를 선택할 수 있습니다. 그러나 전체 단어는 텍스트 상자 3에 표시되고 일부는 표시되지 않습니다. 계속 진행하는 방법에 대한 아이디어가 완전히 없어졌습니다. 웹에서 비슷한 것을 찾을 수 없었습니다.

건배,

+0

안녕하세요, 단어 내에서 임의의 문자를 _으로 바꾸는 것은 어떨까요? –

+0

게임의 경우 단어의 글자 수보다 많은 텍스트 상자가 필요합니다. 프로그램 시작시 텍스트 상자를 동적으로 만들 수 있습니다 (텍스트 상자의 수는 파일의 가장 긴 단어의 길이와 같습니다) 목록에 넣으십시오. 새로운 단어를 만들 때 N 개의 첫 번째 상자 만 표시 (N은 선택한 단어의 길이가 됨) – Graffito

+0

안녕하세요 @Andrei, 내가해야 할 일이긴하지만 글 상자를 _ 문자로 대체하는 방법을 모르겠습니다. !이 의견을 주셔서 감사합니다 –

답변

1

R이 단어의 길이에 따라 파일에서 임의의 단어를 선택하면, 당신이 숨기고 싶어 얼마나 많은 문자를 결정하고 무작위로 그 많은 문자를 대체합니다. this-

public string GetPartialWord(string word) 
    { 
     if(string.IsNullOrEmpty(word)) 
     { 
      return string.Empty; 
     } 
     char[] partialWord = word.ToCharArray(); 
     int numberOfCharsToHide = word.Length/2; 
     Random randomNumberGenerator = new Random(); 
     HashSet<int> maskedIndices = new HashSet<int>(); 
     for(int i=0;i<numberOfCharsToHide;i++) 
     { 
      int rIndex = randomNumberGenerator.Next(0, word.Length); 
      while(!maskedIndices.Add(rIndex)) 
      { 
       rIndex = randomNumberGenerator.Next(0, word.Length); 
      } 
      partialWord[rIndex] = '_'; 
     } 
     return new string(partialWord); 
    } 
+0

이 문제에 대해 의견을 공유해 주셔서 감사합니다. 이것을 시도하고 코드에 맞게 변경하는 방법을 알아 봅니다. 매우 감사. '및 'INT rIndex = randomNumberGenerator.Next (0, word.Length),' R –

+0

당신은 'HashSet의 maskedIndices = 새로운 HashSet의 ()의 기능을 설명해주십시오 수 있을까? 감사합니다. –

+0

마스크 할 고유 인덱스를 선택해야합니다.예를 들어 처음 마스크를 생성 할 임의의 인덱스를 생성 할 때 2를 얻었고 다음에 무작위 인덱스를 생성 할 때 2를 얻으면 2가 이미 마스크되어 있기 때문에 다른 시간을 생성하려고합니다. Hashset이이를 달성하는 데 도움이됩니다. – Tulasiram

1

같은

뭔가 아래 코드는 밑줄 문자의 절반 이상을 대체합니다. 코드는 단어의 적어도 절반을 밑줄로 대체 할 때까지 단어를 취해 난수 생성을 계속합니다.

+0

당신의 제안에 감사드립니다. 난 무작위로 생성 된 단어를 사용하여 그것을 구현합니다! R –

+0

@ UnknownR 예를 들어 한 단어 만 사용하고 있습니다. 아이디어는 당신이 그것에 어떤 단어라도 전할 수 있고 그것이 당신이 요구 한 것을 할 것이라는 것입니다. – CodingYoshi

+0

@UnknownR이 코드는 항상 문자의 최소 절반이 밑줄로 표시된다는 것을 보장합니다. 당신이 그것을 "편안함"으로 보내면, 결코 "_ 불편 함"등을 반환하지 않을 것입니다. – CodingYoshi