java --小游戏(推箱子)

     这几节课,我们又学习了推箱子的代码。是个小游戏,我们多少都感兴趣。不过写下来,才发现,游戏这么难,挂不得挣钱多。就让我分享给大家吧

import java.awt.Image;


import javax.swing.ImageIcon;
public class Tools {
   public static Image getImageByName(String name){
  ImageIcon icon=new ImageIcon(name);
  Image im=icon.getImage();
  return im;
   }

}


public class Run {


public static void main(String[] args) {
GameFrame  gf=new GameFrame();


}
    

}


import java.awt.Graphics;
import java.awt.Image;


import javax.swing.ImageIcon;


//玩家
public class GamePoint {


 Image im;//图片
 int x,y;
 //构造方法:初始化属性值
 public GamePoint(int _x,int _y){
 //加载图片
 im=Tools.getImageByName("point.png");
     x=_x;
     y=_y;
 }
 //显示图片 渲染
 public void render(Graphics g ){//渲染
 g.drawImage(im,x,y,null);
 }
 
 public void movePlayer(int dx,int dy,GameBoxManager bm,GrameMap map,GamePoint pm){
 if(map.isHit(x+dx,y+dy)==true){
 return;//方法结束
 }
 
 GameBox box=bm.chack(x+dx,y+dy);
 if(box!=null){
if( box.moveBox(dx,dy,map,bm)==false)
return;
 }
 x+=dx;
 y+=dy;
 
 
 }

}





import java.awt.Graphics;
import java.awt.Image;


/*
 * 地图
 */
public class GrameMap {
  byte[][] mapData=new byte[][]{
 {2,2,2,2,2,2,2,2,2,2},
 {2,2,0,0,0,0,0,2,2,2},
 {2,0,0,1,4,1,0,2,2,2},
 {2,0,1,3,4,3,0,0,2,2},
 {2,0,1,1,4,3,1,0,2,2},
 {2,0,1,3,4,1,1,0,2,2},
 {2,0,1,3,4,3,0,0,2,2},
 {2,0,0,1,4,1,0,2,2,2},
 {2,2,0,0,0,0,2,2,2,2},
 {2,2,2,2,2,2,2,2,2,2}
  };
  Image[] images=new Image[3];
  //构造方法
  public GrameMap(){
 //加载图片
 for(int i=0;i<3;i++){
 images[i]=Tools.getImageByName("map"+i+".png");
 }
  }
  public void render(Graphics g){
 for(int i=0;i<10;i++){
 for(int j=0;j<10;j++){
 int id=mapData[i][j];//map的i,j赋给id
 if(id>2){  //判断id是否大于2
 id=1;
 }
 g.drawImage(images[id],50*j,50*i,null);
 }
 }
  }
  //是否可以通行
  public boolean isHit(int x,int y){
 if(y/50<0 || y/50>=mapData.length || x/50<0 || x/50>=mapData[0].length)
 return true;
 if(mapData[y/50][x/50]==0){
 return true;
 }
 return false;
  }
  public boolean isIn(int x,int y ){
 if(mapData[y/50][x/50]==4){
 return true;
 }
 return false;
  }
}

import java.awt.Graphics;


public class GamePointManager {
GamePoint[] points=new GamePoint[100];//申请箱子的仓库
   int num;
   //构造
   public GamePointManager(){
  num=0;//箱子一个也没有
   }
   //生产箱子的工厂方法
   public void createPoint(int x,int y){//每调用一次,生产一个箱子
  points[num]=new GamePoint(x,y);
  num++;//累加
  
   }
   //绘制方法
   public void render(Graphics g ){
for(int i=0;i points[i].render(g);
 
}
}
   //检测坐标上是否有箱子
   public Boolean  chack(int x,int y){
  for(int i=0;i   if(x==points[i].x && y==points[i].y){
  return true;
  }
  }
  return null;
   }
  
   }
   

import java.awt.Graphics;


public class GamePointManager {
GamePoint[] points=new GamePoint[100];//申请箱子的仓库
   int num;
   //构造
   public GamePointManager(){
  num=0;//箱子一个也没有
   }
   //生产箱子的工厂方法
   public void createPoint(int x,int y){//每调用一次,生产一个箱子
  points[num]=new GamePoint(x,y);
  num++;//累加
  
   }
   //绘制方法
   public void render(Graphics g ){
for(int i=0;i points[i].render(g);
 
}
}
   //检测坐标上是否有箱子
   public Boolean  chack(int x,int y){
  for(int i=0;i   if(x==points[i].x && y==points[i].y){
  return true;
  }
  }
  return null;
   }
  
   }
   

import java.awt.Graphics;
import java.awt.Image;


import javax.swing.ImageIcon;




public class GamePlayer {


 Image im;
 int x,y;
 //构造方法
 public GamePlayer(int _x,int _y){
 ImageIcon icon=new ImageIcon("player.png");
 im=icon.getImage();
 im=Tools.getImageByName("player.png");
     x=_x;
     y=_y;
 }
 //显示图片
 public void render(Graphics g ){//渲染
 g.drawImage(im,x,y,null);
 }
 
 public void movePlayer(int dx,int dy,GameBoxManager bm,GrameMap map,GamePointManager pm){
 if(map.isHit(x+dx,y+dy)==true){
 return;//方法结束
 }
 
 GameBox box=bm.chack(x+dx,y+dy);
 if(box!=null){
if( box.moveBox(dx,dy,map,bm)==false)
return;
 }
 x+=dx;
 y+=dy;
 
 
 }

}


import java.awt.Graphics;


import javax.swing.JPanel;
/*
 * 游戏画板
 */
public class GamePanel extends JPanel {
GamePlayer player;
GrameMap map;
GameBoxManager bm;
GamePointManager pm;


   public GamePanel(){
  player=new GamePlayer(300,250);//玩家图片的显示位置
  map=new GrameMap();
  bm=new GameBoxManager();
  pm=new GamePointManager();
  this.createMap();
   }
   //绘制,重写
   public void paint(Graphics g){
  g.fill3DRect(0, 0, 500, 500, true);
  map.render(g);
  pm.render(g); 
  bm.render(g);
  player.render(g);//把玩家的图片画到画板上
 
 
   
   }
   public void ketDown(int keycode){
  switch(keycode){
     case 37://左
    player.movePlayer(-50, 0,bm,map,pm);
    break;
     case 38://上
     player.movePlayer(0,-50,bm,map,pm);
 break;
     case 39://右
     player.movePlayer(50, 0,bm,map,pm);
 break;
     case 40://下
     player.movePlayer(0, 50,bm,map,pm);
 break;
  }
  this.repaint();
   }
   //游戏的功能
   public void createMap(){
  for(int i=0;i   for(int j=0;j   switch(map.mapData[i][j]){
  case 3:
  bm.createBox(j*50,i*50);
  break;
  case 4:
  pm.createPoint(j*50,i*50);
  break;
  
  }
  
  
  }
  }
   }
   

}


import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;


import javax.swing.JFrame;




public class GameFrame extends JFrame implements KeyListener {
GamePanel gp;

    public GameFrame(){
    this.setTitle("推箱子");//标题
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭按钮
    this.setSize(500,500);//窗口大小
    this.setVisible(true);//显示
   
    gp=new GamePanel();
    this.add(gp);
    this.addKeyListener(this);
    this.setVisible(true);//窗口可见性
    }




public void keyPressed(KeyEvent e) {


gp.ketDown(e.getKeyCode());
}



public void keyReleased(KeyEvent arg0) {


}



public void keyTyped(KeyEvent arg0) {


}

}




import java.awt.Graphics;


public class GameBoxManager {
   GameBox[] boxes=new GameBox[100];//申请箱子的仓库
   int num;
   //构造
   public GameBoxManager(){
  num=0;//箱子一个也没有
   }
   //生产箱子的工厂方法
   public void createBox(int x,int y){//每调用一次,生产一个箱子
  boxes[num]=new GameBox(x,y);
  num++;//累加
  
   }
   //绘制方法
   public void render(Graphics g ){
for(int i=0;i boxes[i].render(g);
 
}
}
   //检测坐标上是否有箱子
   public GameBox chack(int x,int y){
  for(int i=0;i   if(x==boxes[i].x && y==boxes[i].y){
  return boxes[i];
  }
  }
  return null;
   }
  
   }
   



import java.awt.Graphics;
import java.awt.Image;


public class GameBox {
 Image im[]=new Image[2];
 int x,y;//箱子的坐标
 int num;
 //箱子  构造函数
 public GameBox(int _x,int _y){
im[0]=Tools.getImageByName("box.png");
im[1]=Tools.getImageByName("box2.png");
x=_x;
y=_y;
 }
 
 //渲染
 public void render(Graphics g ){
if(num==2){
    g.drawImage(im[1],x,y,null);
}else{
g.drawImage(im[0],x,y,null);
}
 }
 //箱子的移动
 public boolean moveBox(int dx,int dy,GrameMap map,GameBoxManager bm){
//检测地图
if(map.isHit(x+dx, y+dy)==true)
return false;
if(bm.chack(x+dx,y+dy)!=null)
return false;
 x+=dx;
 y+=dy;
     if(map.isIn(x,y)==true){
    num=2;
     }else{
    num=1;
     }
 return true;  
 }
 
}

你可能感兴趣的:(java程序)