// 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. Qt贴图实现地图标记效果

    #include "wgtmap.h" #include "ui_wgtmap.h" #include <QPainter> #define IMG ...

  2. python(2)之列表

    列表的使用 names=["zhangyang","liming",["sese","popo"],"xiao ...

  3. Win10系列:JavaScript写入和读取文件

    正如上面的内容中所提到的,文件保存选取器用于保存文件,通过Windows.Storage.Pickers命名空间中的FileSavePicker类的pickSaveFileAsync函数可以向指定的文 ...

  4. laravel 连表查询数据库

    $this->model ->select($field) ->leftJoin('b', 'b.cid', '=', 'a.id') ->orderBy("a.ad ...

  5. 网卡驱动-BD详解(缓存描述符 Buffer Description)

    DMA介绍(BD的引入) 网络设备的核心处理模块是一个被称作 DMA(Direct Memory Access)的控制器,DMA 模块能够协助处理器处理数据收发.对于数据发送来说,它能够将组织好的数据 ...

  6. HTML编辑笔记3

    表单 1.语法 <form method="get|post" action="数据向哪提交的地址"> //表单内容 </form> 2 ...

  7. java 实现简单的顺序队列

    package com.my; import java.util.Arrays; /** * 顺序队列 * @author wanjn * */ public class ArrayQueue { p ...

  8. xStream解析生成xml文件学习资料

    参考链接: http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html

  9. L1-056 猜数字

    一群人坐在一起,每人猜一个 100 以内的数,谁的数字最接近大家平均数的一半就赢.本题就要求你找出其中的赢家. 输入格式: 输入在第一行给出一个正整数N(≤10​4​​).随后 N 行,每行给出一个玩 ...

  10. 【PyImageSearch】Ubuntu16.04使用OpenCV3.3.0实现图像分类

    这篇博文将会展示如何采用一个预训练的深度学习网络(模型)在ImageNet的数据集并把它当作输入图像. 首先说明,运行环境为Ubuntu16.04(或者MacOS),windows暂不支持,已经编译好 ...