PHP комбинирует направления в переключателе, чтобы получить диагональный текст - PullRequest
0 голосов
/ 11 ноября 2009

[Отказ от ответственности: я новичок в PHP, и я только учусь, поэтому, пожалуйста, не болтайте, это действительно мешает процессу обучения, когда кто-то пытается найти решения или информацию, спасибо, и код работает нормально с точки зрения кроссворд, это просто сбивает с толку меня, как человек получает диагональную ориентацию с данной информацией, или что я делаю неправильно и не вижу?]

Учитывая переключатель:

  switch ($dir){
case "E":
  //col from 0 to board width - word width
  //row from 0 to board height
  $newCol = rand(0, $boardData["width"] - 1 - strlen($theWord)); 
  $newRow = rand(0, $boardData["height"]-1);

  for ($i = 0; $i < strlen($theWord); $i++){
    //new character same row, initial column + $i
    $boardLetter = $board[$newRow][$newCol + $i];
    $wordLetter = substr($theWord, $i, 1);

    //check for legal values in current space on board
    if (($boardLetter == $wordLetter) ||
        ($boardLetter == ".")){
      $board[$newRow][$newCol + $i] = $wordLetter;
    } else {
      $itWorked = FALSE;
    } // end if
  } // end for loop
  break;

И

case "N":
  //col from 0 to board width
  //row from word length to board height
  $newCol = rand(0, $boardData["width"] -1);
  $newRow = rand(strlen($theWord), $boardData["height"]-1);

  for ($i = 0; $i < strlen($theWord); $i++){
    //check for a legal move
    $boardLetter = $board[$newRow - $i][$newCol];
    $wordLetter = substr($theWord, $i, 1);
    if (($boardLetter == $wordLetter) ||
        ($boardLetter == ".")){
      $board[$newRow - $i][$newCol] = $wordLetter;
    } else {
     $itWorked = FALSE;
    } // end if
  } // end for loop
  break;

Я должен быть в состоянии объединить два, чтобы получить NE (или диагональный текст, выводимый на экран)

ОДНАКО, когда я пробую это, это не работает, и я пробовал разные комбинации N и E, чтобы получить NE или диагональную ориентацию NE без удачи, что дает?

#Tried multiple different combination's of N & E, I am out of ideas 

switch ($dir){
case "E":

  $newCol = rand(0, $boardData["width"] - 1 - strlen($theWord)); 
  $newRow = rand(strlen($theWord), $boardData["height"]-1);


  for ($i = 0; $i < strlen($theWord); $i++){
  #Combined but no luck, WTF:

    $boardLetter = $board[$newRow][$newRow - $i];
     $boardLetter  = $board[$newCol][$newCol + $i];
    $wordLetter = substr($theWord, $i, 1);

    //check for legal values in current space on board
    if (($boardLetter == $wordLetter) ||
        ($boardLetter == ".")){

      $board[$newRow][$newRow - $i] = $wordLetter;
      $board[$newCol][$newCol + $i] = $wordLetter;
    } else {
      $itWorked = FALSE;
    } // end if
  } // end for loop
  break;

1 Ответ

2 голосов
/ 11 ноября 2009

Оператор break; выйдет из предложения switch после выполнения кода для case "E". Вам нужно будет установить новые явные случаи для комбинаций, чтобы они работали таким образом.

...