添加圖片的一些例子:
// 創建一個二維數組,用來管理數據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();}}
按下上下左右就可以看出編號