(我是Java的新手(或者一般的编程),我正在试图弄清楚这个游戏的运作方式。 我知道游戏领域分为3个区域:颜色选择区域,得分区域和绘制区域。但是哪个变量决定了哪个范围? - 颜色选择区域和游戏控制区域的相对和绝对尺寸组件是什么?它有什么作用? - 为什么程序员将TILE_SIZE分成再次乘以它? - 他们如何以及在public static void initColorGame()方法中如何初始化2D数组myTiles?)
答案 0 :(得分:0)
但是哪个变量决定了哪个范围?
我真的不明白你在这里问的是什么。
颜色选择区域和游戏控制区域的相对和绝对尺寸组件是什么?它有什么作用?
相对大小?相对于什么?当你问“它做了什么?”时,我不明白“它”是什么。
代码看起来像是这样创建一个布局:
每个元素周围似乎有5个像素的填充。
我不觉得我可以告诉你确切的数字,因为布局往往基于首选尺寸。很多时候,Swing布局管理器会将您的高度/宽度值作为建议以允许优雅的大小调整。最简单的方法是运行程序。
为什么程序员将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()
因为我认为它在语义上更正确且更容易阅读,但这只是我的意见。