⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hua_rong_road.java

📁 用JAVA语言编写的华容道程序
💻 JAVA
字号:
import java.awt.*;import java.applet.*;import java.awt.event.*;class People extends Button implements FocusListener //代表华容道人物的类。{Rectangle rect=null;int left_x,left_y;//按扭的左上角坐标.int width,height; //按扭的宽和高.String name; int number;People(int number,String s,int x,int y,int w,int h,Hua_Rong_Road road)   {super(s);  name=s;this.number=number;  left_x=x;left_y=y;  width=w;height=h;  setBackground(Color.orange);  road.add(this);    addKeyListener(road);  setBounds(x,y,w,h);addFocusListener(this);  rect=new Rectangle(x,y,w,h); } public void focusGained(FocusEvent e)   { setBackground(Color.red);   } public void focusLost(FocusEvent e)   { setBackground(Color.orange);   }}public class Hua_Rong_Road extends Applet implements KeyListener,ActionListener{   People people[]=new People[10];    Rectangle left,right,above ,below;//华容道的边界 .    Button restart=new Button("重新开始");     public void init()  {setLayout(null); add(restart);   restart.setBounds(5,5,80,25);   restart.addActionListener(this);   people[0]=new People(0,"曹操",104,54,100,100,this);    people[1]=new People(1,"关羽",104,154,100,50,this);    people[2]=new People(2,"张飞",54, 154,50,100,this);    people[3]=new People(3,"刘备",204,154,50,100,this);    people[4]=new People(4,"张辽",54, 54, 50,100,this);    people[5]=new People(5,"曹仁",204, 54, 50,100,this);     people[6]=new People(6,"兵  ",54,254,50,50,this);     people[7]=new People(7,"兵  ",204,254,50,50,this);    people[8]=new People(8,"兵  ",104,204,50,50,this);    people[9]=new People(9,"兵  ",154,204,50,50,this);    people[9].requestFocus();   left=new Rectangle(49,49,5,260); people[0].setForeground(Color.white) ;      right=new Rectangle(254,49,5,260);   above=new Rectangle(49,49,210,5);   below=new Rectangle(49,304,210,5); } public void paint(Graphics g)    {//画出华容道的边界:      g.setColor(Color.cyan);      g.fillRect(49,49,5,260);//left.      g.fillRect(254,49,5,260);//right.      g.fillRect(49,49,210,5); //above.      g.fillRect(49,304,210,5);//below.    //提示曹操逃出位置和按键规则:      g.drawString("点击相应的人物,然后按键盘上的上下左右箭头移动",100,20);      g.setColor(Color.red);      g.drawString("曹操到达该位置",110,300);    } public void keyPressed(KeyEvent e)     { People man=(People)e.getSource();//获取事件源.      man.rect.setLocation(man.getBounds().x, man.getBounds().y);      if(e.getKeyCode()==KeyEvent.VK_DOWN)        {             man.left_y=man.left_y+50;     //向下前进50个单位。                      man.setLocation(man.left_x,man.left_y);                      man.rect.setLocation(man.left_x,man.left_y);        //判断是否和其它人物或下边界出现重叠,如果出现重叠就退回50个单位距离。               for(int i=0;i<10;i++)            {if((man.rect.intersects(people[i].rect))&&(man.number!=i))                    {man.left_y=man.left_y-50;                     man.setLocation(man.left_x,man.left_y);                     man.rect.setLocation(man.left_x,man.left_y);                       }             }      if(man.rect.intersects(below))            { man.left_y=man.left_y-50;             man.setLocation(man.left_x,man.left_y);             man.rect.setLocation(man.left_x,man.left_y);             }        }   if(e.getKeyCode()==KeyEvent.VK_UP)     {  man.left_y=man.left_y-50;     //向上前进50个单位。        man.setLocation(man.left_x,man.left_y);        man.rect.setLocation(man.left_x,man.left_y);        //判断是否和其它人物或上边界出现重叠,如果出现重叠就退回50个单位距离。         for(int i=0;i<10;i++)            {if((man.rect.intersects(people[i].rect))&&(man.number!=i))                    {man.left_y=man.left_y+50;                     man.setLocation(man.left_x,man.left_y);                     man.rect.setLocation(man.left_x,man.left_y);                       }             }        if(man.rect.intersects(above))            { man.left_y=man.left_y+50;             man.setLocation(man.left_x,man.left_y);             man.rect.setLocation(man.left_x,man.left_y);             }        }    if(e.getKeyCode()==KeyEvent.VK_LEFT)       {man.left_x=man.left_x-50;     //向左前进50个单位。        man.setLocation(man.left_x,man.left_y);        man.rect.setLocation(man.left_x,man.left_y);        //判断是否和其它人物或左边界出现重叠,如果出现重叠就退回50个单位距离。        for(int i=0;i<10;i++)            {if((man.rect.intersects(people[i].rect))&&(man.number!=i))                    {man.left_x=man.left_x+50;                     man.setLocation(man.left_x,man.left_y);                     man.rect.setLocation(man.left_x,man.left_y);                       }             }        if(man.rect.intersects(left))            { man.left_x=man.left_x+50;             man.setLocation(man.left_x,man.left_y);             man.rect.setLocation(man.left_x,man.left_y);             }        }   if(e.getKeyCode()==KeyEvent.VK_RIGHT)     {  man.left_x=man.left_x+50;     //向右前进50个单位。        man.setLocation(man.left_x,man.left_y);        man.rect.setLocation(man.left_x,man.left_y);        //判断是否和其它人物或右边界出现重叠,如果出现重叠就退回50个单位距离。        for(int i=0;i<10;i++)            {if((man.rect.intersects(people[i].rect))&&(man.number!=i))                    {man.left_x=man.left_x-50;                     man.setLocation(man.left_x,man.left_y);                     man.rect.setLocation(man.left_x,man.left_y);                       }             }        if(man.rect.intersects(right))            { man.left_x=man.left_x-50;             man.setLocation(man.left_x,man.left_y);             man.rect.setLocation(man.left_x,man.left_y);             }        } } public void keyTyped(KeyEvent e){} public void keyReleased(KeyEvent e){} public void actionPerformed(ActionEvent e) { this.removeAll();   this.init(); } }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -