2015-11-11 3 views
0

Я пишу головоломку для поиска слов в C#, и я почти закончен, но не хватает одной вещи. У меня есть матрица char [,], которую я заполняю словами, которые я читаю из txt-файла, и, если нет доступных мест для оставшегося слова, я заполняю оставшиеся пятна случайными буквами. Моя проблема в том, что я не знаю, как делать слова, содержащие несколько букв, пересекающих друг друга. Вот мой код для размещения слова:Генератор поиска слов

private bool PlaceWord(string word, int _row, int _col, int x, int y) 
    { 
     if(x > 0) 
     { 
      if (_row + word.Length > row) 
       return false; 
     } 
     if(x < 0) 
     { 
      if (_row - word.Length < 0) 
       return false; 
     } 
     if(y > 0) 
     { 
      if (_col + word.Length > col) 
       return false; 
     } 
     if(y < 0) 
     { 
      if (_col - word.Length < 0) 
       return false; 
     } 

     for(int i = 0; i < word.Length; i++) 
     { 
      if (matrix[(i * x) + _row, (i * y) + _col] != ' ') 
       return false; 
     } 

     for (int i = 0; i < word.Length; i++) 
     { 
      matrix[(i * x) + _row, (i * y) + _col] = word[i]; 
      answers[(i * x) + _row, (i * y) + _col] = word[i]; 
     } 

     return true; 
    } 

ответ

0

В вашей первой для цикла

if ((matrix[i*x+_row, i*y+_col] != ' ') && (matrix[i*x+_row, i*y+_col] != word[i])) 
    return false 
+0

Это не похоже на работу – fviktor99

+0

я только собираюсь на код, который вы представили, что, кажется, return 'false', если слово не подходит в запрошенном месте и направлении. Каким образом это должно работать? – Graham

+0

Я хочу, чтобы он перекрестил слово, когда он пытается поместить новое слово. Например: 'PALE' ' # # # O '' # # V # '' # # E # ' Теперь это работает так: ' PALE' '# # # #' ' LOVE' '# # # #' Он просто помещает новое слово в доступное пустое пространство и заполняет остальные (#) случайными буквами. – fviktor99

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