Text1:PushBox

创建一个窗口,创建一个画布,绘画玩家,让玩家可以移动

GameFrame://这是窗口,不能运行//需要继承Java的JFram类

import javax.swing.JFrame;
public class GameFrame extends JFrameey implemens KeyListener//实现一个窗口//让JFrame实现一个KeyListener
{      
      GamePane gp;//申请一个画布的属性;
      public GameFrame()
      {
       this.setTitle("推箱子");//游戏的名字
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭程序的设置
       this.setSize(500,500);//设置窗口的大小
      gp = new GameFrame();//申请构造画布
       this.add(gp);//画布添加到窗口去; 
       this.addKeyListener(this);//增加按键的监听
      //显示窗口
       this.setVixble(true);//显示度为true可以显示出窗口  

       }

     @Override//接受按键//当实现KeyListener时系统会自动添加三个方法按键的三个状态
     public void keyPressed(KeyEvent e) {//控制按键使用这一个方法就ok了
         gp.keydow(e.getKeyCode());//获得keycode健值
    }
     @Override
     public void keyReleased(KeyEvent arg0) {
      // TODO Auto-generated method stub
  
    }
     @Override
      public void keyTyped(KeyEvent arg0) {
        // TODO Auto-generated method stub
  
    } 

}

启动类

public class Run//这只是一个启动项,只需构造GameFrame的对象就ok了
{
    public  static void main (Strang[] args)
    {
        GameFrame gf=new GameFrame();//构造GameFrame对象
    }
}

画布类

GamePanel://需要继承Java的JPanel类

  
impot java.awt.Graphics;
import javax.swing.JPanel;
 
public class GamePanel extends JPanel
{
    GamePlyer player;//申请玩家的属性
     public GamePanel()//构造画布类
    {
      player = new GamePlayer(200,300);//需要玩家的初始参数
     }
     public void  paint(Greaphics g)//paint方法,借用绘画系统//绘制方法来完成画图的绘制
     {
       g.fillsDRect(0,0,500,500,true);//在屏幕上单色巨型进行填充左上角的坐标还有宽高//先画矩形再画下面的
       player.render(g);//最核心绘制玩家画在了画布上
     }
     public void ketDown(code)//去接受GameFram中发生的按键的值
    {
          switch(code)
         {
                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();//强制屏幕重新画一遍
    }

}

建立玩家类

GamePlayler不用继承


import java.awt.Image;
impor java.awt.Graphics;
public class GamePlayer
{
    Image im;//导入image图片
    int x,y;//玩家的坐标可以发生变化
    public GamePlayer(int x ,int y)//玩家的属性
   {
    ImageIcon icon=new ImageIcon("player.png");//中间量可以从文件中的路径获得一个图片
    im = icon.getImage();//获得了一张im的图片
   x=x;y=y;//玩家的初始位置


   } 
   public void render(Graphics g)
  {
      g.drawImage(im,x,y,null);//null默认的样式将player位置
  }
  public void movePlayer(int dx,int dy)//小人移动就是改变坐标以参数的形式向外界问移动多少dx ,dy;
  {
    x += dx;
    y += dy;
  }
//将玩家类应用到GamePanel中


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值