需要帮助ap comp java问题

时间:2009-12-23 06:37:39

标签: java

我真的需要在此网站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 个答案:

答案 0 :(得分:1)

让我试着让你开始吧。我不认为我现在真的理解你的代码,但让我们解决问题:

该功能有几个主要元素:

  • 将图像随机分配给循环内的每个图块
  • 跟踪已分配的图像

至少有两种方法可以实现这一目标:

  1. 在棋盘上迭代,并为每个棋子分配一个随机图像。通过索引跟踪每个图像在单独数组中的使用次数。
  2. 遍历possibleTileValues列表,并将每个列表随机分配给一个tile,两次。这需要处理分配计数,但您需要测试每个图块以确保它之前没有分配过图像。
  3. 无论哪种方式,您都可能使用java.util.Random来生成随机整数。您可以按如下方式执行此操作:

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

    显然,对于上面的第一种方法,你需要在内循环的每次迭代中生成一个随机数,而在第二种方法中,每次迭代生成两个随机数,为你提供板的坐标。

    采取上述措施,看看你可以在哪里得到它。我很乐意进一步提供帮助。


    编辑:

    好的,看看你的重做代码,有一些问题。我不确定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]++
      }
    

    现在,请注意,这是一种非常天真的做法,但我不认为你应该对它很聪明。