2013-03-13 3 views
0

Проблема заключается в том, что я обнаружил, что для моего подхода требуется создание массива char -> char [] из нескольких переменных char. может ли кто-нибудь указать мне в правильном направлении?Добавить char для проблемы с массивом char, для игры hangman

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

namespace ConsoleApplication1 
{ 
class Program 
{ 
    string[] wordList = { 
          "Baseball", "Tackle", "Dubstep", "Ignorance", "Limitation", "Sausage", 
          "Destruction", "Patriot", "Computing", "Assembly", "Coding", "Hackers", 
          "Football", "Downward" 
         }; 
    static void Main(string[] args) 
    { 
     int guessRemain = 7; 
     int wordSel = GenerateRandom(); 
     Program o = new Program(); 


     char[] wordChar = o.wordList[wordSel].ToLower().ToCharArray(); 
     int MAX_BUF = wordChar.Length; 


     Console.WriteLine("\nHANGMAN v 1.0\n\n\n\n"); 
     char[] userInput = PromptUserEntry(); 
     char[] solution = ScanForMatchingLetter(wordChar, MAX_BUF, userInput); 


     Console.Read(); 
    } 
    private static char ScanForMatchingLetter(char[] wordChar, int MAX_BUF, char[] userInput) 
    { 
     char[] solution = new char[MAX_BUF]; 
     for (int i = 0; i < MAX_BUF; ++i) 
     { 
      if (userInput[0] == wordChar[i]) 
      { 
       solution[i] = userInput[0]; 

      } 


     } 
     return solution; 
    } 
    private static char[] PromptUserEntry() 
    { 
     Console.WriteLine("Pick a letter:"); 
     char[] userInput = Console.ReadLine().ToCharArray(); 
     return userInput; 
    } 
    private static void DisplayGuessLetterLine(char[] solution) 
    { 

     Console.Write(solution); 

    } 
    private static int GenerateRandom() 
    { 
     Random randNum = new Random(); 
     int wordSel = randNum.Next(0, 13); 
     return wordSel; 
    } 

} 
} 

У меня проблема с возвратом здесь; возвращаемый тип указан как символ, но я возвращаю char [].

+4

Не используйте массив, если вам требуется хранилище переменной длины. «Список ', вероятно, будет работать лучше для вас. – Oded

+0

Почему вы возвращаете символ, когда вам действительно нужен char [], и метод ('ScanForMatchingLetter') даже имеет char []? –

+0

Все ваши функции являются статическими функциями внутри вашего класса, но ваш массив слов - это переменная экземпляра. Вы также можете применять 'static' к' wordList' и не создавать экземпляр класса Program, как вы делаете. Кроме того, удалите 'static' из всего, создайте нестатический метод' Run', а в 'Main' просто выполните' Program o = new Program(); o.Run(); ' – Steve

ответ

1

В каждом случае, когда вы используете массивы символов, заменить их с

List<char> 

Списки позволяют добавлять и удалять по желанию, reboxing основного массива для вас, так что вам не придется беспокоиться об этом.

Я обновил свой ответ с вашего разрешения. Используйте List вместо массивов char и возвращайте только отдельные символы, а не массивы, когда у вас есть только один пользовательский ввод. Я надеюсь, что это поможет и решает ваш вопрос.

class Program 
{ 
    readonly string[] wordList = { 
         "Baseball", "Tackle", "Dubstep", "Ignorance", "Limitation", "Sausage", 
         "Destruction", "Patriot", "Computing", "Assembly", "Coding", "Hackers", 
         "Football", "Downward" 
        }; 
    static void Main(string[] args) 
    { 
     int guessRemain = 7; 
     int wordSel = GenerateRandom(); 
     Program o = new Program(); 


     List<char> wordChar = o.wordList[wordSel].ToLower().ToList(); 
     int MAX_BUF = wordChar.Count; 


     Console.WriteLine("\nHANGMAN v 1.0\n\n\n\n"); 
     char userInput = PromptUserEntry(); 
     List<char> solution = ScanForMatchingLetter(wordChar, MAX_BUF, userInput); 


     Console.Read(); 
    } 
    private static List<char> ScanForMatchingLetter(List<char> wordChar, int MAX_BUF, char userInput) 
    { 
     List<char> solution = new char[MAX_BUF].ToList(); 
     for (int i = 0; i < MAX_BUF; ++i) 
     { 
      if (userInput == wordChar[i]) 
      { 
       solution[i] = userInput; 

      } 


     } 
     return solution; 
    } 
    private static char PromptUserEntry() 
    { 
     Console.WriteLine("Pick a letter:"); 
     char userInput = Console.ReadLine()[0]; 
     return userInput; 
    } 
    private static void DisplayGuessLetterLine(List<char> solution) 
    { 

     Console.Write(solution); 

    } 
    private static int GenerateRandom() 
    { 
     Random randNum = new Random(); 
     int wordSel = randNum.Next(0, 13); 
     return wordSel; 
    } 
} 
+0

Хорошо, я попробую –

+0

@UmairAslam Пожалуйста, смотрите мое обновление. Я думаю, что это поможет вам совсем немного –

+0

, но все же это дает некоторую ошибку в отношении преобразования. но на этот раз он не может преобразовать строку в символ. Что такое thay похоже на код tocharArray(); в общем? т.к. я думаю. tolist() не работает –

Смежные вопросы