java编程之拼图_Java编程制作拼图游戏

void initScreen() {

canvas = new Canvas() {

public void paint(Graphics g) {     //覆写canvas的paint 方法

gs = getGraphics(); //得到Canvas的Graphics

if (isRunning) {

drawScreen();

} else {

g.drawImage(image, 0, 0, this);

g.setColor(Color.gray);

}

}

};

canvas.addMouseListener(new MouseAdapter() {

//覆写mousePressed 方法,实现鼠标点击时,图片移动

public void mousePressed(MouseEvent me) {

if (!isRunning) return; // 如果未运行,说明图片未分割,直接返回

int x = me.getX() / sx, y = me.getY() / sy;//判断鼠标点击的图片在map中的编号

int fx = (int) point.getX(), fy = (int) point.getY();//记录第九块图片(未显示图片)的位置

int canMove = Math.abs(fx - x) + Math.abs(fy - y); // 如鼠标点击位置与第九块图片(可移动的位置)相邻,则canMove 必为 1

if (canMove != 1 ) return; // canMove 不为1,不能移动图片

map[fx][fy] = map[x][y];    //点击图片坐标 赋给第九块图片

map[x][y] = 8;                  //第九块图片给掉 点击图片

point.setLocation(x, y);   //point 坐标改变

drawScreen();              //重绘屏幕,实现图片移动

showStep.setText("移动步骤:" + ++steps);                 //步骤加一

}

});

//为Start按钮添加事件

start.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {

initMap();

drawScreen();

isRunning = true;

steps = 0;

showStep.setText("移动步骤:" + steps);

show.setLabel("显示正确图片");

}

});

//为show按钮添加事件

show.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {

if (show.getLabel().equals("继续游戏")) {

drawScreen();

isRunning = true;

show.setLabel("显示正确图片");

} else {

gs.drawImage(image, 0, 0, canvas);

isRunning = false;

show.setLabel("继续游戏");

}

}

});

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值