先上效果图

可以通过AWSD进行移动和推箱子

自己弄出来的代码玩起来还是很有意思的。
代码一共是三个.java文件,代码内容如下所示
  
   - 
    
     
    
    
     
      package ss;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      import java.awt.Graphics;
     
    
- 
    
     
    
    
     
      import java.awt.Image;
     
    
- 
    
     
    
    
     
      import java.awt.Point;
     
    
- 
    
     
    
    
     
      import java.awt.event.KeyEvent;
     
    
- 
    
     
    
    
     
      import java.awt.event.KeyListener;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      import javax.swing.ImageIcon;
     
    
- 
    
     
    
    
     
      import javax.swing.JFrame;
     
    
- 
    
     
    
    
     
      import javax.swing.JOptionPane;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      /**
     
    
- 
    
     
    
    
     
       * 1.继承窗体类为当前类的父类
     
    
- 
    
     
    
    
     
       * @author lizhicheng
     
    
- 
    
     
    
    
     
       *
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     
      public 
      class PushBox extends JFrame implements KeyListener{
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     	
      /**
     
    
- 
    
     
    
    
     
       * 3.声明一个二维数组的地图
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     	
      int[][] maps= 
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     
      				{
      3,
      3,
      3,
      3,
      3,
      3,
      3,
      3},
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      0,
      0,
      0,
      0,
      3},
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      0,
      0,
      2,
      0,
      3},
      //3表示墙
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      0,
      3,
      0,
      3,
      3},
      //2表示箱子
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      1,
      0,
      0,
      0,
      3},
      //1表示人
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      3,
      0,
      2,
      0,
      0,
      3},
      //0表示空地
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      0,
      0,
      0,
      0,
      3},
     
    
- 
    
     
    
    
     
      				{
      3,
      3,
      3,
      3,
      3,
      3,
      3,
      3},
     
    
- 
    
     
    
    
     
      		};
     
    
- 
    
     
    
    
     	
     
    
- 
    
     
    
    
     	
      /**
     
    
- 
    
     
    
    
     
       * 6.声明两个变量来保存图标的起始位置
     
    
- 
    
     
    
    
     
       * 
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     	
      int top=
      10,left=
      25;
     
    
- 
    
     
    
    
     	
      int posX=
      3,posY=
      4;
      //保存大力水手的位置
     
    
- 
    
     
    
    
     	
      /**
     
    
- 
    
     
    
    
     
       * 2.构造方法添加固定的窗体设置
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     	
      public PushBox()
     
    
- 
    
     
    
    
     
      	{
     
    
- 
    
     
    
    
     		
      //设置标题
     
    
- 
    
     
    
    
     		
      this.setTitle(
      "http://ai.52learn.online");
     
    
- 
    
     
    
    
     		
      //设置窗体大小
     
    
- 
    
     
    
    
     		
      this.setSize(
      500, 
      350);
     
    
- 
    
     
    
    
     		
      //设置窗体默认关闭操作
     
    
- 
    
     
    
    
     		
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    
- 
    
     
    
    
     		
      //设置窗体可见
     
    
- 
    
     
    
    
     		
      this.setVisible(
      true);
     
    
- 
    
     
    
    
     		
      //设置窗体居中显示
     
    
- 
    
     
    
    
     		
      this.setLocationRelativeTo(
      null);
     
    
- 
    
     
    
    
     		
      //进行监听
     
    
- 
    
     
    
    
     		
      this.addKeyListener(
      this);
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
      /**
     
    
- 
    
     
    
    
     
       * 4.窗体的绘制
     
    
- 
    
     
    
    
     
       * @param args
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     	
      @Override
     
    
- 
    
     
    
    
     	
      public void paint(Graphics g) {
     
    
- 
    
     
    
    
     		
     
    
- 
    
     
    
    
     		
      super.paint(g);
     
    
- 
    
     
    
    
     
      		refresh();
      //7.调用刷新
     
    
- 
    
     
    
    
     		
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
      /**
     
    
- 
    
     
    
    
     
       * 5.重绘所有当前窗体的组件
     
    
- 
    
     
    
    
     
       * @param args
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     	
      public void refresh()
     
    
- 
    
     
    
    
     
      	{
     
    
- 
    
     
    
    
     		
      //获取当前窗体的画笔
     
    
- 
    
     
    
    
     
      		Graphics gs=
      this.getGraphics();
     
    
- 
    
     
    
    
     		
      //将图片资源引入
     
    
- 
    
     
    
    
     
      		ImageIcon wall = 
      new ImageIcon(
      "bian.png");
     
    
- 
    
     
    
    
     
      		ImageIcon area = 
      new ImageIcon(
      "kongdi.png");
     
    
- 
    
     
    
    
     
      		ImageIcon human = 
      new ImageIcon(
      "ren.png");
     
    
- 
    
     
    
    
     
      		ImageIcon box = 
      new ImageIcon(
      "xiang.png");
     
    
- 
    
     
    
    
     		
      //将资源绘制在窗体上
     
    
- 
    
     
    
    
     		
      for(
      int i = 
      0 ; i < maps.length ; i++)
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     			
      for(
      int j = 
      0 ; j < maps[i].length ; j++)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     				
      if(maps[i][j]==
      3)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     					
      //绘制墙
     
    
- 
    
     
    
    
     
      					gs.drawImage(wall.getImage(),top+j*
      40,left+i*
      40,
      40,
      40, 
      null);
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     				
      else 
      if(maps[i][j]==
      0)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     					
      //绘制空地
     
    
- 
    
     
    
    
     
      					gs.drawImage(area.getImage(),top+j*
      40,left+i*
      40,
      40,
      40, 
      null);
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     				
      else 
      if(maps[i][j]==
      1)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     					
      //绘制水手
     
    
- 
    
     
    
    
     
      					gs.drawImage(human.getImage(),top+j*
      40,left+i*
      40,
      40,
      40, 
      null);
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     				
      else 
      if(maps[i][j]==
      2)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     					
      //绘制箱子
     
    
- 
    
     
    
    
     
      					gs.drawImage(box.getImage(),top+j*
      40,left+i*
      40,
      40,
      40, 
      null);
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
      public static void main(String[] args) {
     
    
- 
    
     
    
    
     		
      new PushBox();
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
     
    
- 
    
     
    
    
     	
      @Override
     
    
- 
    
     
    
    
     	
      public void keyPressed(KeyEvent arg0) {
     
    
- 
    
     
    
    
     		
      // TODO Auto-generated method stub
     
    
- 
    
     
    
    
     		
      char ch=arg0.getKeyChar();
      //获取按键
     
    
- 
    
     
    
    
     		
      //JOptionPane.showMessageDialog(null, "你按了"+ch);
     
    
- 
    
     
    
    
     		
      if(ch==
      'w'||ch==
      'W')
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     			
      //向上走动
     
    
- 
    
     
    
    
     			
      if(maps[posY-
      1][posX]==
      0)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				maps[posY-
      1][posX]=
      1;
     
    
- 
    
     
    
    
     
      				maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      				posY--;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      else 
      if(maps[posY-
      1][posX]==
      2&&maps[posY-
      2][posX]==
      0)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				maps[posY-
      2][posX]=
      2;
     
    
- 
    
     
    
    
     
      				maps[posY-
      1][posX]=
      1;
     
    
- 
    
     
    
    
     
      				maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      				posY--;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     		
      else 
      if(ch==
      's'||ch==
      'S')
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     			
      //向下走动
     
    
- 
    
     
    
    
     			
      if(maps[posY+
      1][posX]==
      0)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				maps[posY+
      1][posX]=
      1;
     
    
- 
    
     
    
    
     
      				maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      				posY++;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      else 
      if(maps[posY+
      1][posX]==
      2&&maps[posY+
      2][posX]==
      0)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				maps[posY+
      2][posX]=
      2;
     
    
- 
    
     
    
    
     
      				maps[posY+
      1][posX]=
      1;
     
    
- 
    
     
    
    
     
      				maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      				posY++;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     		
      else 
      if(ch==
      'a'||ch==
      'A')
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     			
      //向左走
     
    
- 
    
     
    
    
     			
      if(maps[posY][posX-
      1]==
      0)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				maps[posY][posX-
      1]=
      1;
     
    
- 
    
     
    
    
     
      				maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      				posX--;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      else 
      if(maps[posY][posX-
      1]==
      2&&maps[posY][posX-
      2]==
      0)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				maps[posY][posX-
      2]=
      2;
     
    
- 
    
     
    
    
     
      				maps[posY][posX-
      1]=
      1;
     
    
- 
    
     
    
    
     
      				maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      				posX--;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     		
      else 
      if(ch==
      'd'||ch==
      'D')
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     			
      //向右走
     
    
- 
    
     
    
    
     			
      if(maps[posY][posX+
      1]==
      0)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				maps[posY][posX+
      1]=
      1;
     
    
- 
    
     
    
    
     
      				maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      				posX++;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      else 
      if(maps[posY][posX+
      1]==
      2&&maps[posY][posX+
      2]==
      0)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				maps[posY][posX+
      2]=
      2;
     
    
- 
    
     
    
    
     
      				maps[posY][posX+
      1]=
      1;
     
    
- 
    
     
    
    
     
      				maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      				posX++;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     
      		refresh();
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
      @Override
     
    
- 
    
     
    
    
     	
      public void keyReleased(KeyEvent arg0) {
     
    
- 
    
     
    
    
     		
      // TODO Auto-generated method stub
     
    
- 
    
     
    
    
     		
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
      @Override
     
    
- 
    
     
    
    
     	
      public void keyTyped(KeyEvent arg0) {
     
    
- 
    
     
    
    
     		
      // TODO Auto-generated method stub
     
    
- 
    
     
    
    
     		
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
      
     
    
  
   - 
    
     
    
    
     
      package mg;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      import java.util.Scanner;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      public 
      class migong {
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     	
      public static void main(String[] args) {
     
    
- 
    
     
    
    
     		
      int[][] maps= 
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     
      				{
      3,
      3,
      3,
      3,
      3,
      3,
      3,
      3},
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      0,
      0,
      0,
      0,
      3},
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      0,
      0,
      2,
      0,
      3},
      //3表示墙
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      0,
      3,
      0,
      3,
      3},
      //2表示箱子
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      1,
      0,
      0,
      0,
      3},
      //1表示人
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      3,
      0,
      2,
      0,
      0,
      3},
      //0表示空地
     
    
- 
    
     
    
    
     
      				{
      3,
      0,
      0,
      0,
      0,
      0,
      0,
      3},
     
    
- 
    
     
    
    
     
      				{
      3,
      3,
      3,
      3,
      3,
      3,
      3,
      3},
     
    
- 
    
     
    
    
     
      		};
     
    
- 
    
     
    
    
     		
      //打印输出地图在控制台上
     
    
- 
    
     
    
    
     		
      for(
      int i = 
      0 ; i < maps.length ; i++)
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     			
      for(
      int j = 
      0 ; j < maps[i].length ; j++)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				System.out.print(maps[i][j]);
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     
      			System.out.println();
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     		
      //声明两个变量记录人的位置 
     
    
- 
    
     
    
    
     		
      int posX=
      3,posY=
      4;
     
    
- 
    
     
    
    
     		
      //接收用户键盘的输入
     
    
- 
    
     
    
    
     
      		Scanner sc = 
      new Scanner(System.in);
     
    
- 
    
     
    
    
     
      		System.out.print(
      "请输入方向:上:w,下:s,左:a,右:d : ");
     
    
- 
    
     
    
    
     		
      //运行程序
     
    
- 
    
     
    
    
     		
      while(
      true)
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     
      			String str=sc.next();
     
    
- 
    
     
    
    
     			
      if(str.equalsIgnoreCase(
      "w"))
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     				
      //向上
     
    
- 
    
     
    
    
     				
      if(maps[posY-
      1][posX]==
      0)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     
      					maps[posY-
      1][posX]=
      1;
     
    
- 
    
     
    
    
     
      					maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      					posY--;
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     				
      else 
      if(maps[posY-
      1][posX]==
      2&&maps[posY-
      2][posX]==
      0)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     
      					maps[posY-
      2][posX]=
      2;
     
    
- 
    
     
    
    
     
      					maps[posY-
      1][posX]=
      1;
     
    
- 
    
     
    
    
     
      					maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      					posY--;
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      else 
      if(str.equalsIgnoreCase(
      "s"))
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     				
      //向下
     
    
- 
    
     
    
    
     				
      if(maps[posY+
      1][posX]==
      0)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     
      					maps[posY+
      1][posX]=
      1;
     
    
- 
    
     
    
    
     
      					maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      					posY++;
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     				
      else 
      if(maps[posY+
      1][posX]==
      2&&maps[posY+
      2][posX]==
      0)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     
      					maps[posY+
      2][posX]=
      2;
     
    
- 
    
     
    
    
     
      					maps[posY+
      1][posX]=
      1;
     
    
- 
    
     
    
    
     
      					maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      					posY++;
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      else 
      if(str.equalsIgnoreCase(
      "a"))
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     				
      //向左
     
    
- 
    
     
    
    
     				
      if(maps[posY][posX-
      1]==
      0)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     
      					maps[posY][posX-
      1]=
      1;
     
    
- 
    
     
    
    
     
      					maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      					posX--;
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     				
      else 
      if(maps[posY][posX-
      1]==
      2&&maps[posY][posX-
      2]==
      0)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     
      					maps[posY][posX-
      2]=
      2;
     
    
- 
    
     
    
    
     
      					maps[posY][posX-
      1]=
      1;
     
    
- 
    
     
    
    
     
      					maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      					posX--;
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      else 
      if(str.equalsIgnoreCase(
      "d"))
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     				
      //向右
     
    
- 
    
     
    
    
     				
      if(maps[posY][posX+
      1]==
      0)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     
      					maps[posY][posX+
      1]=
      1;
     
    
- 
    
     
    
    
     
      					maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      					posX++;
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     				
      else 
      if(maps[posY][posX+
      1]==
      2&&maps[posY][posX+
      2]==
      0)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     
      					maps[posY][posX+
      2]=
      2;
     
    
- 
    
     
    
    
     
      					maps[posY][posX+
      1]=
      1;
     
    
- 
    
     
    
    
     
      					maps[posY][posX]=
      0;
     
    
- 
    
     
    
    
     
      					posX++;
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      else 
      if(str.equalsIgnoreCase(
      "quit"))
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				System.out.print(
      "游戏即将结束\n");
     
    
- 
    
     
    
    
     
      				System.exit(
      0);
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      //打印输出地图在控制台上
     
    
- 
    
     
    
    
     			
      for(
      int i = 
      0 ; i < maps.length ; i++)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     				
      for(
      int j = 
      0 ; j < maps[i].length ; j++)
     
    
- 
    
     
    
    
     
      				{
     
    
- 
    
     
    
    
     
      					System.out.print(maps[i][j]);
     
    
- 
    
     
    
    
     
      				}
     
    
- 
    
     
    
    
     
      				System.out.println();
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     
      			System.out.print(
      "请输入方向:上:w,下:s,左:a,右:d : ");
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     
      }
     
    
  
   - 
    
     
    
    
     
      package lzc;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      import java.awt.*;
     
    
- 
    
     
    
    
     
      import java.awt.event.KeyEvent;
     
    
- 
    
     
    
    
     
      import java.awt.event.KeyListener;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      import javax.swing.ImageIcon;
     
    
- 
    
     
    
    
     
      import javax.swing.JFrame;
     
    
- 
    
     
    
    
     
      import javax.swing.JLabel;
     
    
- 
    
     
    
    
     
      import javax.swing.JOptionPane;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      public 
      class Pig extends JFrame implements KeyListener{
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     	
      //进行引入图片
     
    
- 
    
     
    
    
     
      	ImageIcon pig = 
      new ImageIcon(
      "右猪.gif");
     
    
- 
    
     
    
    
     
      	JLabel pigLab = 
      new JLabel(pig);
     
    
- 
    
     
    
    
     	
      //背景
     
    
- 
    
     
    
    
     
      	ImageIcon grass = 
      new ImageIcon(
      "草地.gif");
     
    
- 
    
     
    
    
     
      	JLabel grassLab = 
      new JLabel(grass);
     
    
- 
    
     
    
    
     	
      //声明一个构造方法
     
    
- 
    
     
    
    
     	
      public Pig() {
     
    
- 
    
     
    
    
     		
      // TODO Auto-generated constructor stub
     
    
- 
    
     
    
    
     		
      this.setTitle(
      "小猪佩奇");
      //设置窗体的标题
     
    
- 
    
     
    
    
     		
      this.setSize(
      841,
      310);
      //设置窗体的大小
     
    
- 
    
     
    
    
     		
      this.setVisible(
      true);
      //设置窗口的可见
     
    
- 
    
     
    
    
     		
      this.setLocationRelativeTo(
      null);
      //设置窗体居中显示
     
    
- 
    
     
    
    
     		
      //设置窗体的关闭默认操作:当你点击关闭窗口就自动退出程序
     
    
- 
    
     
    
    
     		
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    
- 
    
     
    
    
     		
      //设置窗体大小不可改变
     
    
- 
    
     
    
    
     		
      this.setResizable(
      false);
     
    
- 
    
     
    
    
     		
     
    
- 
    
     
    
    
     
      		pigLab.setBounds(
      300, 
      150, 
      71, 
      88);
     
    
- 
    
     
    
    
     		
     
    
- 
    
     
    
    
     		
      //添加背景
     
    
- 
    
     
    
    
     		
      this.add(grassLab);
     
    
- 
    
     
    
    
     
      		grassLab.setBounds(
      10,
      10,
      841,
      310);
     
    
- 
    
     
    
    
     		
      //添加佩奇
     
    
- 
    
     
    
    
     
      		grassLab.add(pigLab);
     
    
- 
    
     
    
    
     		
      //进行监听
     
    
- 
    
     
    
    
     		
      this.addKeyListener(
      this);
     
    
- 
    
     
    
    
     		
      //move();
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
      void move()
     
    
- 
    
     
    
    
     
      	{
     
    
- 
    
     
    
    
     		
      int x=
      600,y=
      40;
     
    
- 
    
     
    
    
     		
      while(
      true)
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     
      			x-=
      6;
     
    
- 
    
     
    
    
     
      			pigLab.setLocation(x, y);
     
    
- 
    
     
    
    
     			
      try {
     
    
- 
    
     
    
    
     
      				Thread.currentThread().sleep(
      10);
     
    
- 
    
     
    
    
     
      			} 
      catch (Exception a) {
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      if(x<
      0) x=
      840;
     
    
- 
    
     
    
    
     			
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
      public static void main(String[] args) {
     
    
- 
    
     
    
    
     		
      new Pig();
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
      /**
     
    
- 
    
     
    
    
     
       *用户按下并松开键盘上的按键
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     	
      @Override
     
    
- 
    
     
    
    
     	
      public void keyPressed(KeyEvent arg0) {
     
    
- 
    
     
    
    
     		
      // TODO Auto-generated method stub
     
    
- 
    
     
    
    
     		
      char ch=arg0.getKeyChar();
      //获取按键
     
    
- 
    
     
    
    
     		
      //获取佩琪的位置
     
    
- 
    
     
    
    
     
      		Point p=pigLab.getLocation();
     
    
- 
    
     
    
    
     		
      int x=p.x,y=p.y;
     
    
- 
    
     
    
    
     		
      //JOptionPane.showMessageDialog(null, "你按了"+ch);
     
    
- 
    
     
    
    
     		
      switch(ch)
     
    
- 
    
     
    
    
     
      		{
     
    
- 
    
     
    
    
     		
      case 
      'w': 
     
    
- 
    
     
    
    
     			
      //向上走动
     
    
- 
    
     
    
    
     
      			y=y-
      20;
     
    
- 
    
     
    
    
     			
      if(y<
      0)
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				y=
      310;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      break;
     
    
- 
    
     
    
    
     		
      case 
      's': 
     
    
- 
    
     
    
    
     			
      //向下走动
     
    
- 
    
     
    
    
     
      			y=y+
      20;
     
    
- 
    
     
    
    
     			
      if(y>
      310) 
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				y=
      0;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      break;
     
    
- 
    
     
    
    
     		
      case 
      'a':
     
    
- 
    
     
    
    
     			
      //向左走
     
    
- 
    
     
    
    
     
      			x=x-
      20;
     
    
- 
    
     
    
    
     			
      if(x<
      0) 
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				x=
      841;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      break;
     
    
- 
    
     
    
    
     		
      case 
      'd':
     
    
- 
    
     
    
    
     			
      //向右走
     
    
- 
    
     
    
    
     
      			x=x+
      20;
     
    
- 
    
     
    
    
     			
      if(x>
      841) 
     
    
- 
    
     
    
    
     
      			{
     
    
- 
    
     
    
    
     
      				x=
      0;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			
      break;
     
    
- 
    
     
    
    
     		
      default :;
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     
      		pigLab.setLocation(x, y);
     
    
- 
    
     
    
    
     		
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
      @Override
     
    
- 
    
     
    
    
     	
      public void keyReleased(KeyEvent arg0) {
     
    
- 
    
     
    
    
     		
      // TODO Auto-generated method stub
     
    
- 
    
     
    
    
     		
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
     
    
- 
    
     
    
    
     	
      @Override
     
    
- 
    
     
    
    
     	
      public void keyTyped(KeyEvent arg0) {
     
    
- 
    
     
    
    
     		
      // TODO Auto-generated method stub
     
    
- 
    
     
    
    
     		
     
    
- 
    
     
    
    
     
      	}
     
    
- 
    
     
    
    
     	
     
    
- 
    
     
    
    
     
      }
     
    
点击获取代码和相关的图像资源
转载:https://blog.csdn.net/update7/article/details/108980339
查看评论
					