2010-01-06 2 views
0

Я пытаюсь создать игру поиска слов. проблема в том, что я не могу вставить слова в TableLayoutPanel. Когда я писал это, я получил ошибку компиляции, которая говорит «нет перегрузки для метода„placewords“принимает аргументы„5“.слово поиск игра-головоломка

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     Random r = new Random(); 
     for (int a = 0; a < tableLayoutPanel1.ColumnCount; a++) 
     { 
      for (int b = 0; b < tableLayoutPanel1.RowCount; b++) 
      { 
       Label nl = new Label(); 
       int x = r.Next(65, 90); 
       char c = (char)x; 
       nl.Text = c.ToString(); 
       tableLayoutPanel1.Controls.Add(nl, a, b); 
      } 
     } 

    } 

    private void newGameToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     Application.Restart(); 
    } 



    private void PlaceWords() 
    { 


     string[] words = { "byte", "char" }; 
     Random rn = new Random(); 
     foreach (string p in words) 
     { 
      String s = p.Trim(); 
      bool placed = false;// continue trying to place the word in // the matrix until it fits 
      while (placed == false)// generate a new random row and column 
      { 
       int nRow = rn.Next(30);// generate a new random x & y direction vector 
       int nCol = rn.Next(30);// x direction: -1, 0, or 1 
       int nDirX = 0;    // y direction -1, 0, or 1 
       int nDirY = 0;    // (although direction can never be 0, 0, this is null) 
       while (nDirX == 0 && nDirY == 0) 
       { 
        nDirX = rn.Next(3) - 1; 
        nDirY = rn.Next(3) - 1; 
       } 

       placed =PlaceWords(s.ToUpper(),nRow,nCol,nDirX,nDirY); 
       } 

     } 
    } 
+3

Ну, кажется, есть перегрузка PlaceWords отсутствующих здесь , –

+0

Домашнее задание? Если это так, используйте тег домашней работы. –

+2

«Когда я написал это ...» Вы действительно написали этот код? –

ответ

4

Ваш метод PlaceWords не признает, что многие параметры, в самом деле, он принимает нет параметры.

более того, как она выглядит, ваши PlaceWords рекурсивная функция, которая не будет выхода, что приводит к переполнению стека.

чтобы это исправить, необходимо создать вторую функцию, которая принимает PlaceWords все 5 параметров и делает все, что делает PlaceWords, и возвращает логическое значение.

0

Похоже, что ваши вложенные петли в Form1_Load должны помещать случайные символы в tableLayoutPanel1. Затем вам необходимо вызвать PlaceWords(), который определит местоположение и направление размещения каждого слова в списке слов. В конце PlaceWords вы вызываете PlaceWords (s.ToUpper(), nRow, nCol, nDirX, nDirY), который должен фактически положить слово в tableLayoutPanel1. У этого второго PlaceWords с 5 параметрами должно быть другое имя (я предлагаю PlaceString); она должна не пытаться вызвать тот же самый метод Placewords, что он находится в Вы должны затем написать метод PlaceString, который будет выглядеть так:.

public bool PlaceString(string s, int nRow, int nCol, int nDirX, int nDirY) 
{ 
/* whatever code you need to put the string into tableLayoutPanel1 */ 
} 
Смежные вопросы