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 ...
随机推荐
- Kali配置教程
1.配置软件源 所有操作没有说明,都是以root身份执行. 打开一个终端执行: cat >> /etc/apt/sources.list <<EOF deb http://mi ...
- python 转换代码格式
import os dirname="C:\\Users\\haier\\Desktop\\new" def walk(path): for item in os.listdir( ...
- JSP页面间的传值方法总结
JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧.试着将各种方式总结下来,需要时可以进行权衡利弊选择最合适的方式.下面来一起看看详细的介绍: 1. URL 链接后追加参数 ? 1 ...
- 笨办法06字符串(string)和文本
代码如下: # coding : utf-8 x = "There are %d types of people." % 10 binary = "binary" ...
- MySQL字符集与校对
一.什么是字符集与校对 1.字符集与校对 字符集是指一种从二进制编码到某种字符符号的映射. 校队是指一组用于某个字符集的配许规则. 2.utf8与utf8mb4 标准的UTF-8字符集编码是可以使用1 ...
- MYSQL的存储函数
创建存储函数与创建存储过程大体相同,格式如下: create function sp_name([func_parameter[,...]]) returns type [characteristic ...
- Cracking The Coding Interview5.2
//Given a (decimal - e.g. 3.72) number that is passed in as a string, print the binary representatio ...
- 杭电1004 ac code
#include <stdio.h> #include <string.h> #include <stdlib.h> #define STR_LEN 256 str ...
- JS(JQEERY) 获取JSON对象中的KEY VALUE
var json= { "Type": "Coding", "Height":100 }; for (var key in json) { ...
- <Using parquet with impala>
Operations upon Impala Create table stored as parquet like parquet '/user/etl/datafile1' stored as p ...