java 华容道 迷弟版(向 xd-女神 吴嘉欣致敬)
// 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-女神 吴嘉欣致敬)的更多相关文章
- 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题
调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...
- Java部分总结图片版2(已加上原图链接!!!)
Java部分总结图片版2(加上原图链接)
- Java部分总结图片版(已经加上原图链接下载!!!)
Java基础知识图片版(原图下载链接)
- Java、C#双语版HttpHelper类
Java.C#双语版HttpHelper类(解决网页抓取乱码问题) 在做一些需要抓取网页的项目时,经常性的遇到乱码问题.最省事的做法是去需要抓取的网站看看具体是什么编码,然后采用正确的编码进行解码 ...
- 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》
终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...
- idea编辑项目出现【Information:java: javacTask: 源发行版 7 需要目标发行版 1.7】
在编译项目时候出现问题: Information:java: javacTask: 源发行版 7 需要目标发行版 1.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 ...
- 【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 ...
- 【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 ...
随机推荐
- Qt绘制文本一
QPainterPath,使用 drawText且设置字体,再使用painter.drawText方式 效果图: void WgtText::paintEvent(QPaintEvent *event ...
- linux操作系统及命令Part 2
cat 命令 cat .txt .txt .txt > Ta.txt 将左边三个文件纵向合并为Ta文件 cat .txt>> Ta.txt 将左边文件的内容添加到Ta文件中 tar ...
- bzoj4698
题解: 后缀数组 对所有序列差分一下 公共串的长度+1就是答案了 二分 扫一遍height即可,.. 代码: #include <bits/stdc++.h> using namespac ...
- python 定义class时的内置方法
__contains__():对类实例使用in ,not in操作时调用 class A(object): def __init__(self,num): self.num=num def __con ...
- Android : 添加apk私有权限
一.Android的系统权限: apk在安装时,Android 为每个软件包提供唯一的 Linux 用户 ID.此 ID 在软件包在该设备上的使用寿命期间保持不变.在不同设备上,相同软件包可能有不同的 ...
- 用Java给数组排序
public class BubbleDemo {public static void main(String[] args) { int arr[]={1,3,5,7,2,4,6,8,9}; bub ...
- js如何调试,使用debug模式
js的代码断点调试非常简单,不需要借助代码编辑器,只要浏览器就行了(注意:html代码打断点是没有用的,只有js的才行,下图第二步打开开发者模式使用F12才对):
- Linux alias别名命令
首先介绍一下命令的别名,怎么查看的呢? 咱们使用which命令就可以查看的到它完整的命令是怎样的 [root@master ~]# which ls alias ls='ls --color=auto ...
- 牛客第二场 J farm
White Rabbit has a rectangular farmland of n*m. In each of the grid there is a kind of plant. The pl ...
- codeforce949A(顺带vector详细使用介绍)
A. Zebras time limit per test1 second memory limit per test512 megabytes inputstandard input outputs ...