// Person.java  每个方块人物是一个类
package test;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Person extends JButton implements FocusListener {
private int number;
private Color c=new Color(205,205,205);
private Font font=new Font("宋体",Font.BOLD,15); public int getnum() {
return number;
}
public Person(int number,String s) {
super(s);
setBackground(c);
setFont(font);
this.number=number;
addFocusListener(this);
}
public void focusGained(FocusEvent e) {//获得焦点是调用
setBackground(Color.blue);
}
public void focusLost(FocusEvent e) {//失去焦点是调用
setBackground(c);
}
}
 //package test;
//Hua_Rong_Road.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Hua_Rong_Road extends JFrame implements MouseListener,KeyListener,ActionListener {
private Person person[]=new Person[10];
private JButton left,right,above,below;
private JButton restart=new JButton("重新开始");
private JButton begin=new JButton ("欢迎来到华容道!!"); // 标题
private final int t_x=50;// 起始坐标
private final int t_y=100;
private final int l1=100;// 长度
private final int l2=15;
public Hua_Rong_Road() {
init();
setBounds(200,200,520,800);
setVisible(true);
}
public void init() {
Color c=new Color(0,255,205);
begin.setBounds(100, 30, 300,50);
begin.setBackground(c); restart.setBounds(150,650,200,50);
restart.addActionListener(this);
getContentPane().setLayout(null);
getContentPane().add(restart);//getContentPane()得到一个内容画板
getContentPane().add(begin); String name[]={"女神吴嘉欣","迷弟一","迷弟二","迷弟三","迷弟四","迷弟五","迷弟六","迷弟七","迷弟八","迷弟九"};
for(int k=0;k<name.length;k++) {
person[k]=new Person(k,name[k]);
person[k].addMouseListener(this);
person[k].addKeyListener(this);
getContentPane().add(person[k]);
}
person[0].setBounds(t_x+l1,t_y,2*l1,2*l1);
person[1].setBounds(t_x+l1,t_y+2*l1,2*l1,l1);
person[2].setBounds(t_x,t_y,l1,2*l1);
person[3].setBounds(t_x+3*l1,t_y,l1,2*l1);
person[4].setBounds(t_x,t_y+2*l1,l1,2*l1);
person[5].setBounds(t_x+3*l1,t_y+2*l1,l1,2*l1);
person[6].setBounds(t_x+l1,t_y+3*l1,l1,l1);
person[7].setBounds(t_x+2*l1,t_y+3*l1,l1,l1);
person[8].setBounds(t_x,t_y+4*l1,l1,l1);
person[9].setBounds(t_x+3*l1,t_y+4*l1,l1,l1);
person[9].requestFocus();
left=new JButton();
right=new JButton();
above=new JButton();
below=new JButton();
getContentPane().add(left);
getContentPane().add(right);
getContentPane().add(above);
getContentPane().add(below);
left.setBounds(t_x-l2,t_y-l2,l2,l2*2+l1*5);
right.setBounds(t_x+4*l1,t_y-l2,l2,l2*2+l1*5);
above.setBounds(t_x-l2,t_y-l2,l2*2+l1*4,l2);
below.setBounds(t_x-l2,t_y+5*l1,l2*2+l1*4,l2);
validate();
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e) {
Person man=(Person)e.getSource();
if(e.getKeyCode()==KeyEvent.VK_DOWN)
go(man,below);
if(e.getKeyCode()==KeyEvent.VK_UP)
go(man,above);
if(e.getKeyCode()==KeyEvent.VK_LEFT)
go(man,left);
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
go(man,right);
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void go(Person man,JButton direction) {
boolean move=true;
Rectangle manRect=man.getBounds();
int x=man.getBounds().x;
int y=man.getBounds().y;
if(direction==below)
y=y+l1;
else if(direction==above)
y=y-l1;
else if(direction==left)
x=x-l1;
else if(direction==right)
x=x+l1;
manRect.setLocation(x,y);
Rectangle directionRect=direction.getBounds();
for(int k=0;k<10;k++) {
Rectangle personRect=person[k].getBounds();
if((manRect.intersects(personRect))&&(man.getnum()!=k))
move=false;
}
if(manRect.intersects(directionRect))
move=false;
// if(move==true) //因为是女神吴嘉欣所以不受任何约束可以直接移动,如果需要改成正确的华容道形式把这一行注释打掉就行了
man.setLocation(x,y);
if (man.getnum()==0&&x==(t_x+l1)&&y==(t_y+3*l1)) {//游戏是否胜利
int res=JOptionPane.showConfirmDialog(null, "恭喜你游戏胜利", "是否继续", JOptionPane.YES_NO_OPTION);
if(res==JOptionPane.YES_OPTION){
dispose();
new Hua_Rong_Road();
}
else return ;
}
}
public void actionPerformed(ActionEvent e) {
dispose();
new Hua_Rong_Road();
}
}
 //package test;
//Mainclass.java 主类
public class Mainclass {
public static void main(String args[]) {
new Hua_Rong_Road();
}
}

效果图 :

有bug?!都说了是迷弟版

java 华容道 迷弟版(向 xd-女神 吴嘉欣致敬)的更多相关文章

  1. 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题

    调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...

  2. Java部分总结图片版2(已加上原图链接!!!)

    Java部分总结图片版2(加上原图链接)

  3. Java部分总结图片版(已经加上原图链接下载!!!)

    Java基础知识图片版(原图下载链接)

  4. Java、C#双语版HttpHelper类

    Java.C#双语版HttpHelper类(解决网页抓取乱码问题)   在做一些需要抓取网页的项目时,经常性的遇到乱码问题.最省事的做法是去需要抓取的网站看看具体是什么编码,然后采用正确的编码进行解码 ...

  5. 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》

    终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...

  6. idea编辑项目出现【Information:java: javacTask: 源发行版 7 需要目标发行版 1.7】

    在编译项目时候出现问题: Information:java: javacTask: 源发行版 7 需要目标发行版 1.7 解决方案:按着图片操作,这几个地方设置的一样就可以了

  7. 【Java】-NO.16.EBook.4.Java.1.011-【疯狂Java讲义第3版 李刚】- AWT

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.011-[疯狂Java讲义第3版 李刚]-  AWT Style:EBook Series:Java ...

  8. 【Java】-NO.16.EBook.4.Java.1.012-【疯狂Java讲义第3版 李刚】- Swing

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.011-[疯狂Java讲义第3版 李刚]-  Swing Style:EBook Series:Jav ...

  9. 【Java】-NO.16.EBook.4.Java.1.012-【疯狂Java讲义第3版 李刚】- JDBC

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.012-[疯狂Java讲义第3版 李刚]-  JDBC Style:EBook Series:Java ...

随机推荐

  1. weblogic控制台用户名密码修改

    1.记得用户名密码但想修改密码修改方法 保存后立即生效,即你退出后即能以新密码登录:但由于启动的用户名密码和登录的用户名密码是同一个,所以我们需要去修改DOMAIN_HOME/servers/serv ...

  2. Python爬虫关于多层嵌套iframe的解决

    近期由于公司资源需要,我爬取了一个视频网站,结果以为一个很容易的小爬虫,却步步是坑啊,费了一天终于都解决了(太菜了!!!). 前面导航页的爬虫就不多说了,无非就是webdriver和PhantomJS ...

  3. grep console

    FF6464 9F6B00 8A8A00 4B5E76 8A7674 980B4F 980B4F

  4. 在用mybatis向MySQL数据库中插入时间时报错:Incorrect datetime value: '' for column '' at row 1

    问题说明:使用的MySQL是5.1.37版本,用的mysql-connector-java-5.0.4.jar版本,在java文件中定义的字段是Date类型,MySQL中定义的字段类型是datetim ...

  5. GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名 zhuan

    1.gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译 ...

  6. LaTeX技巧10:LaTeX数学公式输入初级入门

    LaTeX最强大的功能就是显示美丽的数学公式,下面我们来看这些公式是怎么实现的. 1.数学公式的前后要加上 $ 或 \( 和 \),比如:$f(x) = 3x + 7$ 和 \(f(x) = 3x + ...

  7. 转 cousera computational neuroscience week5 学习笔记(part 1)

    (2013-08-14 14:58:41) 转载▼ 标签: 学习笔记 it 很久没有写博文了,之所以重新写还是因为看了coursera的computational neuroscience之后,发现这 ...

  8. Java Web(十) 分页功能

    分页 分页的使用非常普遍,现在一步步的把分页功能实现出来,先看看已经写好的效果: 该页面的所有数据都存放在一个javaBean对象(PageBean)里,每次访问该页面时,Serlvet就会把page ...

  9. 尚学堂java 答案解析 第五章

    本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题 1.AB 解析:A可以被所有类访问,B可以被当前包的所有类访问,也可以被所有子类访问 2.A 解析:所有 ...

  10. UVa Live 3635 - Pie 贪心,较小的可能不用 难度: 2

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...