2012-03-04 3 views
-1

Je cherche plus d'aide avec mon programme de recherche de mots si possible. Cela fait partie d'un devoir. La méthode doit insérer une chaîne horizontalement dans un tableau 2d (letterGrid) à des positions de lignes et de colonnes générées aléatoirement. .Méthode de recherche de mots 2

Dans une boucle qui boucle 10 fois ou jusqu'à ce que l'argument de la méthode ait été entré dans letterGrid. La méthode 1st envoie deux messages randomPosition() au récepteur pour obtenir des valeurs pour targetRow et targetCol.

Puis il envoie isHorizontalSpaceFree (targetRow, targetCol, mot) pour vérifier l'espace. S'il n'y a pas d'espace, retournez au début de la boucle et essayez de nouvelles positions aléatoires - s'il y a de l'espace, passez en revue le mot et assignez chaque caractère au composant approprié dans letterGrid et renvoyez true.

Si après 10 tentatives, des positions de départ appropriées ne peuvent être trouvées, retournez false.

Voici mon code jusqu'à présent ...

{ 
    int targetRow = this.randomPosition(NUMBER_ROWS); 
    int targetCol = this.randomPosition(WordSearchMaker.NUMBER_COLS - word.length() + 1); 
    boolean result = true; 
    for (int i = 0; i < word.length(); i++) 
    { 
    if (this.isHorizontalSpaceFree(targetRow, targetCol, word)) 
    { 
     letterGrid[targetRow][targetCol] = word.charAt(i); 
    } 
    } 
    return result; 
} 

Mes problèmes sont les boucles et comment insérer chaque caractère du mot. Les pointeurs sont des gens très appréciés;)

Merci d'avance.

+0

duplication possible de [Méthode de puzzle de recherche de mots] (http://stackoverflow.com/questions/9531944/wordsearch-puzzle-method) par le même utilisateur. –

Répondre

0

Vous vous dirigez dans la bonne direction, mais votre code ne correspond pas tout à fait à votre description (correcte) de l'algorithme.

Vous devez vérifier isHorizontalSpaceFree()avant en bouclant sur chaque lettre du mot pour l'insérer.

également vous écrivez chaque lettre du mot à:

letterGrid[targetRow][targetCol] 

Notez que les indices de tableau (targetRow, targetCol) ne changent pas - donc vous allez écrire des lettres à plusieurs reprises dans la même place.

+0

Merci pour la réponse @DNA. J'ai réussi à obtenir le mot dans la grille maintenant complètement et au hasard. J'ai juste besoin de finir les conditions booléennes. Je ne peux pas comprendre comment répondre aux réponses et mettre mon code révisé dans la réponse ou je l'aurais mis dedans. Vraiment grand merci cependant;) – lannie1980