创建一个窗口,创建一个画布,绘画玩家,让玩家可以移动
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
}
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;
}
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中
}