Нужна помощь с компом Java вопрос - PullRequest
0 голосов
/ 23 декабря 2009

Мне действительно нужна помощь с частью а этого вопроса на этом сайте http://www.edupages.com/phs/APCSAB/Curriculum/Lab3(Concentration)/APABLab1%20-%20Concentration.htm

Это то, что я имею до сих пор. Любая помощь приветствуется.

 private void fillBoard()
    {    
      int myindex = 0;
      int midsize = size/2;
      for(i = 0; i+1<size; i+=2)
        possibleTileValues = newFooList(String n, midsize);
      possibleTileValues.fillFooList();
      int j = i + 1;

      String k = possibleTileValues.get(myindex);
      gameboard[i] = k;
      gameboard[j] = k;

    }

Повторный код:

private void fillBoard() 
{ 
  if(size%2==0&&possibleTiles>=(size/2)) 
  { 
    for(int i=0, i<possibleTileValues.length,i++) 
    { 
      gameBoard.addFoo(possibleTileValues.getFoo(i));
      gameBoard.addFoo(possibleTileValues.getFoo(i)); 
    } 
    for(int i=0, i<size,i++) 
    { 
      Random gen= new Random(); 
      int randomSpot=gen.nextInt(size); 
      int temp = gameBoard[i]; 
      gameBoard[i]=gameBoard[randomSpot]; 
      gameBoard[randomSpot] = temp; 
    } 
  } 
}

1 Ответ

1 голос
/ 23 декабря 2009

Позвольте мне попробовать, чтобы вы начали. Я не думаю, что я действительно понимаю ваш код в данный момент, но давайте разберем проблему:

В функции есть пара основных элементов:

  • Назначение изображения случайным образом для каждой плитки внутри цикла
  • Отслеживать, какие изображения были назначены

Есть как минимум два способа сделать это:

  1. Переберите доску и назначьте случайное изображение для каждой плитки. Отслеживайте, сколько раз каждое изображение используется в отдельном массиве по индексу.
  2. Выполните итерацию по списку возможного значения плитки и случайным образом назначьте каждый элемент мозаике дважды. Это учитывает подсчет назначений, но вам нужно проверить каждую плитку, чтобы убедиться, что ей ранее не было назначено изображение.

В любом случае, вы, скорее всего, будете использовать java.util.Random для получения случайных целых чисел. Вы можете сделать это следующим образом:

Random randomizer = new Random();
int randomint = randomizer.nextInt(rowLength);

Очевидно, что для первого метода, описанного выше, вам нужно сгенерировать одно случайное число для каждой итерации внутреннего цикла, в то время как для второго вы будете генерировать два случайных числа для каждой итерации, чтобы получить координаты для доски.

Возьмите вышесказанное и посмотрите, где вы можете получить его Я буду рад помочь в дальнейшем.


Edit:

Хорошо, взглянем на ваш переделанный код, есть несколько проблем. Я не уверен, что такое getFoo () и addFoo (). Если вы создаете вспомогательные функции, пожалуйста, включите их в код.
Вот несколько псевдокодов для вас:

int[rowSize] timesTileUsed

for x_index = 0 to rowLength - 1
  for y_index = 0 to rowLength - 1
  {
    do
      randomNumber = generator.nextInt(rowLength)
    while timesTileUsed[randomNumber] > 1
    board[x_index][y_index] = new Tile(possibleTileValues[randomNumber])
    timesTileUsed[randomNumber]++
  }

Теперь обратите внимание, что это ужасно наивный способ сделать это, но я не думаю, что вы должны быть умны в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...