java-求大神各位给一个华容道类的代码

问题描述

求大神各位给一个华容道类的代码

不会解华容道这类的算法 如果可以 还请有一些注释 谢大神

解决方案

 import java.awt.*;
import java.awt.event.*;
public class MoveExample
{
 public static void main(String args[])
 {
  new Hua_Rong_Road();
 }
}
 class Person extends Button implements FocusListener
{
 int number;
 Color c=new Color(255,245,170);
 public Person(final int number,final String s)
 {
  super(s);
  setBackground(c);
  this.number=number;
  c=getBackground();
  addFocusListener(this);
 }
 public void focusGained(final FocusEvent e)
 {
  setBackground(Color.red);
 }
 public void focusLost(final FocusEvent e)
 {
  setBackground(c);
 }
}
 class Hua_Rong_Road extends Frame implements  MouseListener,KeyListener,ActionListener
 {
  Person person[]=new Person[10];
  Button left,right,above,below;
  Button restart=new Button("重新开始");
  public Hua_Rong_Road()
  {
   init();
   setBounds(100,100,320,360);
   setVisible(true);
   validate();
   addWindowListener(new WindowAdapter()
   {public void windowClosing(WindowEvent e)
   {
    System.out.println(0);
   }});
  }
  public void init()
  {
   setLayout(null);
   add(restart);
   restart.setBounds(100,320,120,25);
   restart.addActionListener(this);
   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);
    add(person[k]);
   }
   person[0].setBounds(104,54,100,100);
   person[1].setBounds(104,154,100,50);
   person[2].setBounds(54,154,50,100);
   person[3].setBounds(204,154,50,100);
   person[4].setBounds(54,54,50,100);
   person[5].setBounds(204,54,50,100);
   person[6].setBounds(54,254,50,50);
   person[7].setBounds(204,254,50,50);
   person[8].setBounds(104,204,50,50);
   person[9].setBounds(154,204,50,50);
   person[9].requestFocus();
   left=new Button();right=new Button();
   above=new Button();below=new Button();
   add(left);add(right);add(above);add(below);
   left.setBounds(49,49,5,260);
   right.setBounds(254,49,5,260);
   above.setBounds(49,49,210,5);
   below.setBounds(49,304,210,5);
   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)
  {
   Person man=(Person)e.getSource();
   int x=-1,y=-1;
   x=e.getX();
   y=e.getY();
   int w=man.getBounds().width;
   int h=man.getBounds().height;
   if(y>h/2)
   {
    go(man,below);
   }
   if(y<h/2)
   {
    go(man,above);
   }
   if(x<w/2)
   {
    go(man,left);
   }
   if(x>w/2)
   {
    go(man,right);
   }
  }
  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,Button direction)
  {
   boolean move=true;
   Rectangle manRect=man.getBounds();
   int x=man.getBounds().x;
   int y=man.getBounds().y;
   if(direction==below)
    y=y+50;
   else if(direction==above)
    y=y-50;
   else if(direction==left)
    x=x-50;
   else if(direction==right)
    x=x+50;
   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.number!=k))
    {
     move=false;
    }
   }
   if(manRect.intersects(directionRect))
   {
    move=false;
   }
   if(move==true)
   {
    man.setLocation(x,y);
   }
  }
  public void actionPerformed(ActionEvent e)
  {
   dispose();
   new Hua_Rong_Road();
  }
  public void keyPressed(KeyEvent arg0) {
  }
  public void keyReleased(KeyEvent arg0) {

  }
 }

解决方案二:

我有AndEngine和Java原生的代码

解决方案三:

http://download.csdn.net/download/woyaodangxueba/6570591

时间: 2024-09-23 17:49:48

java-求大神各位给一个华容道类的代码的相关文章

java 集合-求大神,发一个简易的银行系统代码,谢谢 急急急!!!

问题描述 求大神,发一个简易的银行系统代码,谢谢 急急急!!! 用txt存取用户信息,把用户信息放到ArrayList集合进行操作 包含 开户 存款 转账 谢谢 急急急!!! 解决方案 ArrayList用法: ArrayList是接口List的实现类,所以推荐以List接口来使用. 1.创建ArrayList的List接口 例: List books = new ArrayList(); Java支持泛形后,创建的同时可以指定元素的类型. 例: Class Book { ...... } Li

跪求大神帮忙解决一个java问题

问题描述 跪求大神帮忙解决一个java问题 Invalid classpath publish/export dependency com.genuitec.runtime.library/com.genuitec.generic_6.0. The associated classpath container cannot be included in the published/exported module. 这个问题到底是啥意思,困扰一天了 解决方案 解决: 不要动eclipse.在控制台

数据库-求大神帮忙写一个基于java的学生学籍管理系统

问题描述 求大神帮忙写一个基于java的学生学籍管理系统 具体功能有:1)设计入学.管理及查询界面 2)设计学生各学期.学年成绩输入及查询界 面,并打印各项报表 3)根据各年度总成绩,查询.输出学生学籍管理方案(优秀,合格,试读,退学) 4)毕业管理 5)系统维护,如数据安全管理(含系统备份 与恢复),操作员管理,权限设置 解决方案 这个说起来简单,但是要做的话还是要一点时间的,这应该是一个毕业设计的课题呀 解决方案二: 你确定你不花钱或者撒个娇有人会花时间帮你做这个 解决方案三: 需要定制么?

跪求大神帮忙解决一个java语法问题

问题描述 跪求大神帮忙解决一个java语法问题 有行代码编译总是不能通过,我觉得是语法问题,但是找了很久都找不出来啊.请大婶帮忙解决,感激不尽. 解决方案 你的代码呢?你的代码呢? 解决方案二: 1.请把您的问题要点尽量在标题说明,大神都很忙,有时不会点进来看内容,会先用标题过滤一下:2.就算大神今天闲下来,您这也没代码可看啊. 解决方案三: 检查 1. 单词 有没有写错,2.命名是否不符合要求3.语法问题 需要看代码 解决方案四: 编译不通过的问题大致分为两种,1,语法错误.2.ide(ecl

关于增强for循环赋值问题(JAVA) 求大神回复一下小白

问题描述 关于增强for循环赋值问题(JAVA) 求大神回复一下小白 自定义的类: class SS{ String a; public SS(String a) { super(); this.a = a; } public String getA() { return a; } public void setA(String a) { this.a = a; } @Override public String toString() { // TODO Auto-generated metho

代码分析-JAVA 求大神帮看下这段代码 怎么修改 救命啊

问题描述 JAVA 求大神帮看下这段代码 怎么修改 救命啊 真心看不懂 public static char[] a(char[] paramArrayOfChar) { char[] arrayOfChar1 = new char[12]; char[] arrayOfChar2 = new char[12]; arrayOfChar2[0] = '?'; arrayOfChar2[1] = '?'; arrayOfChar2[2] = 'o'; arrayOfChar2[3] = '/';

c语言 c++-c语言求大神解答,一个数组的基础问题

问题描述 c语言求大神解答,一个数组的基础问题 数组的地址是什么?是不是就是数组名,也就是第一个元素的地址,也就是这个数组的首地址? 解决方案 数组名可以当成指向数组首元素的地址使用. 例如:int a[10]; 可以通过: cout<<*a<<endl; //来输出数组a中的第一个元素. cout<<*(a + i)<<endl; //来输出数组中的第i个元素. 下面两个输出的地址值也是相同的. printf("--->%pn",

ajax-跪求大神点击一个table内的超链接把这一行的数据传到新打开的页面的table

问题描述 跪求大神点击一个table内的超链接把这一行的数据传到新打开的页面的table 1 <table > 2 <tr> 3 <td>姓名</td> 4 <td>年龄</td> 5 <td>班级</td> 6 </tr> 7 <tr> 8 <td><a ..>张三</a></td> 9 <td>10</td>10

c语言基础-真的很着急,大一学生党,求大神指导写一个c语言拨号程序

问题描述 真的很着急,大一学生党,求大神指导写一个c语言拨号程序 能显示出通讯录中所有人姓名,当选中某个姓名时,屏幕上模拟打字机效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声 解决方案 http://zhidao.baidu.com/link?url=svF4fjRTNuBmCJyCiRipzB_21UO5zvNc0hCye7qj8nxOY1lC78667ycDqYnJ7xHiGT00M4NuYqGIak2R5cEU961mjRl1ADLf-Eh1nDKpiBi