2010-01-06 5 views
0

J'essaye de créer un jeu de recherche de mot. le problème est que je suis incapable d'insérer des mots dans un TableLayoutPanel. Quand je l'ai écrit, je suis une erreur de compilation qui dit « pas de surcharge pour la méthode « placewords » prend des arguments « 5 ».jeu de puzzle de recherche de mots

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

Eh bien, il semble y avoir une surcharge de PlaceWords manque ici . –

+0

Travail à domicile? Si oui, utilisez l'étiquette de devoirs. –

+2

"Quand j'ai écrit ceci ..." Avez-vous réellement écrit ce code? –

Répondre

4

Votre PlaceWords méthode n'accepte pas que de nombreux paramètres, en fait, il accepte pas paramètres.

de plus, la façon dont il semble, votre PlaceWords est une fonction récursive qui ne quittera pas, ce qui conduit à un débordement de pile.

pour résoudre ce problème, vous devez créer une deuxième fonction PlaceWords qui accepte tous les 5 paramètres, et fait ce que fait PlaceWords, et renvoie un booléen

0

Il semble que vos boucles for imbriquées dans Form1_Load doivent placer des caractères aléatoires dans tableLayoutPanel1. Vous devez ensuite appeler PlaceWords() qui déterminera l'emplacement et la direction pour placer chaque mot dans la liste de mots. Près de la fin de PlaceWords, vous appelez PlaceWords (s.ToUpper(), nRow, nCol, nDirX, nDirY) qui est censé placer le mot dans tableLayoutPanel1. Cette deuxième PlaceWords avec 5 paramètres devrait avoir un nom différent (je suggère PlaceString); il devrait pas essayer d'appeler la même méthode Placewords qu'il est en Vous devez alors écrire la méthode PlaceString qui ressemblera.

public bool PlaceString(string s, int nRow, int nCol, int nDirX, int nDirY) 
{ 
/* whatever code you need to put the string into tableLayoutPanel1 */ 
} 
Questions connexes