日期:2014-05-20 浏览次数:20866 次
// 蛇头与障碍物相撞
ArrayList<Node> barriers = SnakeMap.getBarriers();
for (int j = 0; j < barriers.size(); j++) {
int bx = barriers.get(j).x;
int by = barriers.get(j).y;
//
}
private static Image[] imgs = new Image[9]; // 保存9个蛇身图像
int i = 0;
for (i = 0; i < imgs.length; i++) {
imgs[i] = new ImageIcon("src/res/ball/" + (i + 1) + ".png")
.getImage();
}
private static BufferedImage mapImg = null;
// 每次都要重绘地图,这里为优化可以考虑把地图存为BufferedImage
int i = 0;
int j = 0;
if (mapImg == null) { // 第一次绘制的时候没有地图缓存,所以直接绘制
// System.out.println("直接通过贴片绘制地图");
mapImg = new BufferedImage(this.getWidth(), this.getHeight(),
BufferedImage.TYPE_INT_ARGB);
Graphics2D g3 = mapImg.createGraphics();
for (i = 0; i < 30; i++) {
for (j = 0; j < 30; j++) {
g2d.drawImage(tm.getTile(i, j), 20 * i, 20 * j, 20, 20,
this);
g3.drawImage(tm.getTile(i, j), 20 * i, 20 * j, 20, 20,
this);
}
}
g3.dispose();
}
else { //已经有地图缓存,则直接从缓存图像绘制地图就好了
// System.out.println("通过地图缓存绘制地图!");
g2d.drawImage(mapImg, 0, 0, 600, 600, this);
}
//这里采用了一个算术优化,即用x&1代替x%2,因为位运算远比模运算快
if ((direction&1) != (newDer&1)) // 如果与原来方向相同或相反,则无法改变
direction = newDer;
for(int i=0;i<array.length;i++) {
array[i] = x*i;
}
//如果x为5,则结果为0,5,10,15...,则可以优化如下
int value = 0;
for(int i=0;i<array.length;i++) {
array[i] = value;
value += x;
}
for(int i=0;i<array.length;i++) {
array[i] = (int) Math.pow(x, i);
}
//如果x为5,则结果为1, 5, 25, ..,则可以优化为如下
int value = 1;
for(int i=0;i<array.length;i++) {
array[i] = value;
value *= x;
}