java编程华容道智力游戏

原创 2012年03月26日 18:10:44

华容道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) {
    
  }
 }

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java华容道小游戏源代码

  • 2011-11-30 08:50
  • 30KB
  • 下载

华容道 游戏

import java.awt.*; import java.awt.event.*; public class MoveExample { public static void main(S...

Java 游戏 华容道

cocos2dx c++实现小游戏--华容道

华容道是一款中国民间的小游戏,童年的回忆(百度百科链接)。玩法很多,具体规则这不再赘述。 这里使用的是c++进行编写, 编译器为xcode,内容并不复杂。主要功能包括,计步,重置,退回,保存。资源文...

JAVA小游戏1—华容道

java游戏之华容道

  • 2014-12-07 21:06
  • 1.16MB
  • 下载

Java华容道

MainClass.java public class MainClass { public static void main(String args[]) { new Hua_Ro...

java华容道游戏源码

  • 2008-04-28 18:09
  • 78KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)