private void createCheck() { List<Check> list = getEmptyChecks(); if (!list.isEmpty() && isadd) { Random random = new Random(); int index = random.nextInt(list.size()); Check check = list.get(index); // 2, 4出现概率3:1 int randomValue = random.nextInt(4); check.value = ( randomValue % 3 == 0 || randomValue % 3 == 1) ? 2 : 4;//只有[0,4)中的2才能生成4 isadd = false;//isadd被设置为false,表示不允许生成4。因为只有在初始值为2的方块合并成4的时候,才会允许生成4,否则只能生成2 } } // 获取空白方格 private List<Check> getEmptyChecks() { List<Check> checkList = new ArrayList<>(); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (checks[i][j].value == 0) { checkList.add(checks[i][j]); } } } return checkList; }
时间: 2024-02-10 11:33:02 浏览: 127
这段代码是游戏中生成新方块的函数createCheck(),其中包括以下几个步骤:
1. 调用getEmptyChecks()函数获取当前空白的方块列表;
2. 如果空白方块列表非空,且标志位isadd为true,表示可以继续生成新方块;
3. 使用Java中的Random类生成一个随机数,用于在空白方块列表中随机选择一个位置生成新的方块;
4. 再次使用Random类生成一个随机数,用于确定新方块的值,其中2和4的出现概率为3:1;
5. 将新方块的值赋给随机选择的空白方块,并将标志位isadd设置为false,表示不允许生成值为4的方块,只有在两个值为2的方块合并成4时才允许生成值为4的方块。
除此之外,还有一个函数getEmptyChecks(),用于获取当前空白的方块列表,它遍历整个二维数组,将值为0的方块加入到一个List中并返回。
阅读全文
相关推荐

















