添加图片的一些例子:
// 创建一个二维数组,用来管理数据int[][] data = new int[4][4];
// 记录空白方块的位置int x=0;int y=0;
// 定义一个变量,记录当前展示图片的路径String path="E:\\java\\jigsawgame\\路飞\\路飞";
// 加载图片细节:
// 先加载的图片在上面,后加载的图片在下面for(int i = 0; i < 4; i++){for(int j = 0; j < 4; j++){
// 创建一个JLabel的对象(管理容器)JLabel jLabel=new JLabel(new ImageIcon(path+data[i][j]+".png"));
// 指定图片位置jLabel.setBounds(180*j+18,180*i+45,180,180);
// 给图片添加边框jLabel.setBorder(new BevelBorder(1));
// 把管理容器添加到界面中this.getContentPane().add(jLabel);}}// 添加背景图片ImageIcon icon = new ImageIcon("E:\\java\\jigsawgame\\背景.png");JLabel background = new JLabel(icon);background.setBounds(0, 0, 770, 830);
// 把背景图片添加到界面当中this.getContentPane().add(background);
// 刷新一下界面this.getContentPane().repaint();
加载图片细节:先加载的图片在上面,后加载的图片在下面
代码运行是这样的
还有按键的一些操作:
基于完整的图片为0;以它为基准开始移动
public void keyReleased(KeyEvent e) {
// 对上下左右进行判断
// 左:37 上:38 右:39 下:40int keyCode=e.getKeyCode();
// System.out.println(keyCode);if(keyCode==37){if(y==0){return;}data[x][y]=data[x][y-1];data[x][y-1]=0;y--;initImage();} else if (keyCode==38) {if(x==0){return;}data[x][y]=data[x-1][y];data[x-1][y]=0;x--;initImage();} else if (keyCode==39) {if(y==3){return;}data[x][y]=data[x][y+1];data[x][y+1]=0;y++;initImage();} else if (keyCode==40) {if(x==3){
// 空白方块已经在最下方了,他的下面没有图片在能移动了return;}
// 逻辑:把空白方块下的数字往上移动
// x,y表示空白方块 x+1,y表示空白方块下面的数字// 把空白方块下面的数字赋值给空白方块data[x][y]=data[x+1][y];data[x+1][y]=0;x++;
// 调用方法,按照最新的数字加载图片initImage();} else if (keyCode==65) {
// 按A键查看完整图片initImage();} else if (keyCode==87) {
// 按W键为作弊器,直接通过data=new int[][]{{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,0}};initImage();}}
按下上下左右就可以看出编号