void initMap() {
long time = System.nanoTime();//得到系统当前时间 作为随机数种子
java.util.Random rnd = new java.util.Random(time);
int temp, x1, y1, x2, y2;
//随机交换图片
for (int i = 0; i < 100; i++) {
x1 = rnd.nextInt(3);
x2 = rnd.nextInt(3);
y1 = rnd.nextInt(3);
y2 = rnd.nextInt(3);
temp = map[x1][y1];
map[x1][y1] = map[x2][y2];
map[x2][y2] = temp;
}
//标记8号图片(即空白图片)
outer:
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
if (map[i][j] == 8) {
point.setLocation(i, j);
break outer;
}
}
void drawScreen() {
int sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2;
int t1, t2;
gb.setColor(Color.white);
gb.clearRect(0, 0, sx * 3, sy * 3);//清空整个缓冲去图片
for (int x = 0; x < 3; x++)
for (int y = 0; y < 3; y++)
if(map[x][y] != 8) {
// 目的地址
dx1 = x * sx; dy1 = y * sy; // 移动的左上角坐标
dx2 = dx1 + sx - 1; dy2 = dy1 + sy - 1; // 移动的右下角坐标
// 源地址
t1 = map[x][y] % 3 ; t2 = map[x][y] / 3 ;
sx1 = t1 * sx; sy1 = t2 * sy; // 移动的左上角图标
sx2 = sx1 + sx - 1; sy2 = sy1 + sy - 1; // 移动的右下角坐标
gb.drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, Color.white, canvas);//绘制缓冲区图片
}
gs.drawImage(buff, 0, 0, canvas);//将缓冲区图片绘制到 canvas 上
}
public static void main(String[] args) {
Pintu pintu = new Pintu("拼图");
new Thread(pintu).start();
pintu.setVisible(true);
}
}