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("继续游戏");

}

}

});

}

java编程之拼图_Java编程制作拼图游戏相关推荐

  1. 用java的robot类以及Gui 制作一个游戏(阴阳师)脚本

    ** 用java的robot类以及Gui 制作一个游戏(阴阳师)脚本 **   由于阴阳师这个游戏肝度太大,就决定写一个脚本来模拟玩家的重复性操作.所以我就决定用java中的robot类中的一些方法来 ...

  2. java编程思想读书_JAVA编程思想读书记(一)

    JAVA是面向对象的语言,这一点每一个开发者都知道.但是享受于在myeclipse上自动生成,自动解决一切问题的时候,有些基础的我们也许会忘掉.我能明显感觉到自己对于软件的依赖以及基础知识的流失,所以 ...

  3. c语言拼图小游戏编程,c语言控制台输出制作拼图小游戏

    这就是另外一个小程序了和那个推箱子很像. #include int a[4][4]; void draw_point(int n) { if(n == 15) { printf("| &qu ...

  4. java编程思想 入门_java编程思想学习(基础)

    第一章 java介绍 1.编程的本质: 机器空间:解空间 问题空间:实际需要解决的业务问题,将该问题抽象化,在解空间中对问题建模. 编程就是建立问题空间和机器空间中的关联 面向对象编程思想: 1.万物 ...

  5. java编程50实例_java编程实例大全及详解谜底(50例).doc

    java编程实例大全及详解谜底(50例).doc 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 谓 ...

  6. java编程规范换行_Java编程规范整理

    近期即将开始编码阶段,特地整理一下各方面的编程规范与命名约定,以便内部团队风格统一. 文章大多从网络上收集汇总而来,参考列表附在文章末尾. Java编程规范整理 基本命名规范 包命名 包名按照域名的范 ...

  7. java 编程思想 笔记_java编程思想笔记20170215

    importjava.util.ArrayList;importjava.util.List;public classTest {public static voidmain(String[] arg ...

  8. java程序输出矩阵_java编程题之顺时针打印矩阵

    本文实例为大家分享了java顺时针打印矩阵的具体代码,供大家参考,具体内容如下 import java.util.ArrayList; /** * * 剑指offer编程题(JAVA实现)--第19题 ...

  9. 第二章java编程基础测试题_Java编程基础测试题分享

    单选题:(每道题目2分) 1. 下列哪个声明是错误的?(B) A. int i=10; B. float f=1.1; //float f=1.1f C. double d=34.4; D. byte ...

最新文章

  1. 如何把一个程序中 Edit 中的文本赋给另一个程序的 Edit ? - 回复 Disk_ 的问题
  2. 用 Flask 来写个轻博客 (2) — Hello World!
  3. 买卖股票 状态机模型的理解
  4. mybatis collection用法_Mybatis中强大的resultMap
  5. 卡尺测量的最小范围_不知道这四大基本原则,你还有脸在测量圈混?
  6. ubuntu18.04的ifconfig输出没有ip地址
  7. CyAPI.lib(CyAPI.obj) : error LNK2019: 无法解析的外部符号...
  8. 程序员:像机器一样思考
  9. 将PowerShell连接到SQL Server
  10. Halcon——点胶机胶水路径应用(2)
  11. VHDL实现8选1数据选择器
  12. 360网站域名拦截检测 非法网址检测系统原理
  13. 计算机cpu后面字母代表什么意思,英特尔CPU型号中最后的字母什么意思?如有不懂欢迎驻足停留...
  14. 快门光圈感光度口诀_怎么利用光圈快门感光度
  15. 三个基本的布尔逻辑算符是_布尔逻辑检索的主要运算符有哪些
  16. cpu排行计算机专业,cpu排行,教您电脑cpu性能排行榜
  17. netstat -ano|findstr
  18. 增长黑客AB-Testing系统设计
  19. 用户画像在阅文的探索与实践
  20. php获取电商物流信息

热门文章

  1. “酸甜苦辣”说华育(我一个学员的学习心得)
  2. 锂电池原理与使用保养
  3. java找中点_java中点是什么意思
  4. MM定理(Modigliani-Miller)证明与图解
  5. 渲染算法学习(七)-- Real-Time Ray Tracing
  6. vulfocus靶场进不去
  7. PHP AJAX Promise
  8. 个人miniblog被迫备份至此
  9. 计算机风扇维修,千米快修电脑维修:电脑风扇散热不好,经常出问题怎么办?...
  10. Python使用Eel和HTML开发桌面应用