JAVA游戏 - 它是如何工作的?

时间:2013-12-05 15:38:37

标签: java

(我是Java的新手(或者一般的编程),我正在试图弄清楚这个游戏的运作方式。 我知道游戏领域分为3个区域:颜色选择区域,得分区域和绘制区域。但是哪个变量决定了哪个范围?   - 颜色选择区域和游戏控制区域的相对和绝对尺寸组件是什么?它有什么作用?   - 为什么程序员将TILE_SIZE分成再次乘以它?   - 他们如何以及在public static void initColorGame()方法中如何初始化2D数组myTiles?)

1 个答案:

答案 0 :(得分:0)

  

但是哪个变量决定了哪个范围?

我真的不明白你在这里问的是什么。


  

颜色选择区域和游戏控制区域的相对和绝对尺寸组件是什么?它有什么作用?

相对大小?相对于什么?当你问“它做了什么?”时,我不明白“它”是什么。

代码看起来像是这样创建一个布局: enter image description here

每个元素周围似乎有5个像素的填充。

我不觉得我可以告诉你确切的数字,因为布局往往基于首选尺寸。很多时候,Sw​​ing布局管理器会将您的高度/宽度值作为建议以允许优雅的大小调整。最简单的方法是运行程序。


  

为什么程序员将TILE_SIZE分成再次乘以它?

如果width - 10不能被TILE_SIZE整除,则划分 - >乘法过程会将值向下舍入为 可被TILE_SIZE整除的值。以下是一些代码来证明:

public static void main(String[] args) {
    int value = 40;
    int divisor = 5;
    int result = (value / divisor) * divisor;
    System.out.println("Exact: " + result); // outputs 40

    value = 43;
    result = (value / divisor) * divisor;
    System.out.println("Inexact: " + result); // outputs 40
}

就我个人而言,我认为这是一种hackish,很难阅读。我更喜欢使用mod运算符找到多余的东西:

int excess = (width - 10) % TILE_SIZE;
drawWidth = (width - 10) - excess;

  

他们如何以及如何在public static void initColorGame()方法中初始化2D数组myTiles?

让我们一点一点地看一下代码:

myTiles[x][y] = (int)(Math.random()*colors.length);

Math.random()生成一个随机分布在0.0和1.0之间的双精度型(您可以阅读the javadoc中的具体内容。)

colors.length是可能的颜色选择数。

通过将它们相乘,我们得到可能颜色索引范围内的随机数。唯一的问题是结果上升到了两倍。通过回退到int,小数部分被删除,我们有一个随机生成的colors数组索引。我更喜欢使用Math.round()因为我认为它在语义上更正确且更容易阅读,但这只是我的意见。