packagejava拼图;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException;importjava.util.Random;importjavax.imageio.ImageIO;importjavax.swing.Icon;importjavax.swing.ImageIcon;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjava拼图.Cell.Direction;public class GamePanel extends JPanel implementsMouseListener{

Icon icon=null;private Cell[] cells=new Cell[9];private Cell cellBlank=null;publicGamePanel() {super();

setLayout(null);

init();

}public voidinit() {int x=0,y=0,w=50,h=50;

BufferedImage src=null;

BufferedImage newpic=null;try{

src=ImageIO.read(new File("images\\link.jpg"));

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}int num=0;//图片序号

Cell cell=null;//单元图片对象

for(int i=0;i<3;i++) {//分割图片时的行

for(int j=0;j<3;j++) {//列

num=i*3+j;

x=j*100;

y=i*100;

newpic=src.getSubimage(x, y, w, h);if(num+1==9)

icon=new ImageIcon("images\\图片9.png");elseicon=newImageIcon(newpic);

cell=newCell(icon,num);

cell.setLocation(j*cell.IMAGEWIDTH,i*Cell.IMAGEHEIGHT);

cells[num]=cell;

}

}for(int i=0;i

}

}//对图片进行随机排序

public voidrandom() {

Random random=newRandom();intm,n,x,y;if(cellBlank==null) {

cellBlank=cells[cells.length-1];for(int i=0;i

cells[i].addMouseListener(this);

}

}

}for(int i=0;i

m=random.nextInt(cells.length);

n=random.nextInt(cells.length);

x=cells[m].getX();

y=cells[m].getY();

cells[m].setLocation(cells[n].getX(),cells[n].getY());

cells[n].setLocation(x,y);

}

}

@Overridepublic voidmouseClicked(MouseEvent e) {//TODO Auto-generated method stub

Cell cell=(Cell)e.getSource();//获取触发事件的对象

int x=cells[8].getX();int y=cells[8].getY();if((x-cell.getX())==Cell.IMAGEWIDTH&&cell.getY()==y) {//左右移动

cell.move(Direction.RIGHT);

cellBlank.move(Direction.LEFT);

}if((x-cell.getX())==-Cell.IMAGEWIDTH&&cell.getY()==y) {

cell.move(Direction.LEFT);

cellBlank.move(Direction.RIGHT);

}if((cell.getX())==x&&cell.getY()-y==Cell.IMAGEHEIGHT) {//上下移动

cell.move(Direction.UP);

cellBlank.move(Direction.DOWN);

}if((cell.getX())==x&&cell.getY()-y==-Cell.IMAGEHEIGHT) {//上下移动

cell.move(Direction.DOWN);

cellBlank.move(Direction.UP);

}//判断是否成功

if(isSuccess()) {int i=JOptionPane.showConfirmDialog(this,"win!Do you want play again?","win",JOptionPane.YES_NO_OPTION);if(i==JOptionPane.YES_OPTION) {

random();//重新开始一局

}

}

}

@Overridepublic voidmouseEntered(MouseEvent e) {//TODO Auto-generated method stub

}

@Overridepublic voidmouseExited(MouseEvent e) {//TODO Auto-generated method stub

}

@Overridepublic voidmousePressed(MouseEvent e) {//TODO Auto-generated method stub

}

@Overridepublic voidmouseReleased(MouseEvent e) {//TODO Auto-generated method stub

}public booleanisSuccess() {for(int i=0;i

}

}

}return true;

}

}

java拼图_java拼图相关推荐

  1. java课程设计拼图_java拼图游戏课程设计报告

    java拼图游戏课程设计报告 砾寸椒涩藕矾糯陋捕炬洁困喘港划舟逃豺涌锤芳喜胺递龚乏埔跺摩实阿信颊立蹲稿船纽臃瘪自康嘱脖究绢术拱虑犹犀棉宜炙转鸦半甘哨疗墓暑蛊渤幽峭咀豺虫拘召饭莽畜穗篷姿钟逻捞跨瀑拿丈土 ...

  2. java编程之拼图_java版拼图

    基于java的拼图小游戏 学习java也有一段时间了,但是一直处于控制台的编程阶段,乏味的控制台看久了有没有给人一种很枯燥乏味的感觉呢?于是乎博主开始自己学习java的swing组件,让我们的程序可以 ...

  3. Java实现人物拼图游戏

    Java实现人物拼图游戏│附代码 Original 清华计算机学堂 清华计算机学堂 Yesterday 收录于话题 #数据库 7个 拼图游戏指将一幅图片分割成若干拼块,并随机打乱顺序,当将所有拼块都放 ...

  4. Java实现小拼图游戏

    今天整理之前的项目,发现了在大二上学期的java课程设计中编写的智能拼图小游戏,觉得有意思,所以打算写篇文章和大伙分享分享. 一.项目功能 1)本游戏是一个Java语言的拼图游戏,有一个格子是空的,其 ...

  5. 拼图登陆拼图二维码验证_另一个拼图观点

    拼图登陆拼图二维码验证 在过去的几周中,围绕Java 9即将发布及其最著名的功能:Java平台模块系统JPMS进行了激烈的辩论. –以其项目名称Jigsaw更为人所知. 模块系统以正式规范过程的形式引 ...

  6. 拼图登陆拼图二维码验证_如何使用拼图快速轻松地构建静态网站

    拼图登陆拼图二维码验证 by Rick West 由里克·韦斯特(Rick West) 如何使用拼图快速轻松地构建静态网站 (How to use Jigsaw to quickly and easi ...

  7. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  8. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  9. java 不规则 拼图_Java中不一致的操作会扩大规则

    java 不规则 拼图 总览 当您在Java中执行一元或二进制运算时,标准行为是使用最宽的操作数(或对于byte , short和char ,使用更大的操作数). 这很容易理解,但是如果考虑最佳类型可 ...

最新文章

  1. MATLAB机器学习系列-4函数篇
  2. vue3+typescript引入外部文件
  3. 多变量逻辑回归python_Python实现逻辑回归(Logistic Regression in Python)
  4. centosc访问mysql_Linux(CentOS7.0)下 C访问MySQL (转)
  5. linux 内网gcc版本安装,Linux 内网环境安装gcc
  6. 14 、软件测试-MySQL的基本使用方法-增删改查
  7. Python爬虫 糗百段子
  8. 试题 基础练习 特殊回文数
  9. 计算机参数配置解读,教你看懂电脑配置参数,了解组装电脑基本知识
  10. 新能源电动汽车(EV)直流充电协议
  11. 关于SpringMVC中使用LocalDateTime类型接收参数提示类型不匹配的问题
  12. 【Unity3D-Mirror多人坦克大战】坦克生成、移动和摄像机跟随(二)
  13. 深入理解 Comparable 接口和 Comparator 接口以及Arrays.sort()
  14. Dashed hopes 破灭的希望,新兴国家的出路在何方?经济学人精读
  15. win10开启/取消自动关机
  16. 寒假思雨姐摸底E题,题解
  17. 【HDU 5445】Food Problem(DP)
  18. Ubuntu安装ping工具
  19. iOS中 UISearchController 搜索栏 UI技术分享
  20. 在Director中发送E-mail

热门文章

  1. Tenda u6 免驱无线网卡无法连接这个网络解决办法
  2. Python.习题七 函数(上)
  3. 新东方:俞敏洪从台前走入幕后
  4. itext html to pdf设置边距,itextpdf特定页面上的不同边距
  5. 汇编语言之课程设计一
  6. 《迅雷链精品课》第一课:认识区块链
  7. 高等数学期末总复习DAY12.复合函数的链式求导、隐函数求导、
  8. GitHub 标星 2.3k+,比个手势,AI 自动识别 Emoji!
  9. 利用Python从字幕网上下载自己所需要的字幕(热门电影、美剧等)
  10. T00ls - Metasploit 教程 笔记