• java 华容道 迷弟版(向 xd-女神 吴嘉欣致敬)


     1 // Person.java  每个方块人物是一个类
     2 package test;
     3 import javax.swing.*;
     4 import java.awt.*;
     5 import java.awt.event.*;
     6 public class Person extends JButton implements FocusListener { 
     7     private   int number;
     8     private   Color c=new Color(205,205,205);
     9     private   Font font=new Font("宋体",Font.BOLD,15);
    10 
    11    public int getnum() {
    12        return number;
    13    }
    14    public Person(int number,String s) {
    15        super(s);
    16        setBackground(c);
    17        setFont(font);
    18        this.number=number;
    19        addFocusListener(this);
    20    }
    21    public void focusGained(FocusEvent e) {//获得焦点是调用
    22       setBackground(Color.blue);
    23    }
    24    public void focusLost(FocusEvent e) {//失去焦点是调用
    25       setBackground(c);
    26    }
    27 }
      1 //package test;
      2 //Hua_Rong_Road.java
      3 import java.awt.*;
      4 import javax.swing.*;
      5 import java.awt.event.*;
      6 public  class Hua_Rong_Road extends JFrame implements MouseListener,KeyListener,ActionListener {
      7    private Person person[]=new Person[10];
      8    private JButton left,right,above,below;  
      9    private JButton restart=new JButton("重新开始");
     10    private JButton begin=new JButton ("欢迎来到华容道!!");   // 标题
     11    private final int t_x=50;// 起始坐标
     12    private final int t_y=100;
     13    private final int l1=100;// 长度
     14    private final int l2=15;
     15    public Hua_Rong_Road() {
     16       init();
     17       setBounds(200,200,520,800);
     18       setVisible(true);
     19    }
     20    public void init() {
     21       Color c=new Color(0,255,205);
     22       begin.setBounds(100, 30, 300,50);
     23       begin.setBackground(c);
     24       
     25       restart.setBounds(150,650,200,50);
     26       restart.addActionListener(this);
     27       getContentPane().setLayout(null);
     28       getContentPane().add(restart);//getContentPane()得到一个内容画板
     29       getContentPane().add(begin);
     30       
     31       String name[]={"女神吴嘉欣","迷弟一","迷弟二","迷弟三","迷弟四","迷弟五","迷弟六","迷弟七","迷弟八","迷弟九"};
     32       for(int k=0;k<name.length;k++) {
     33          person[k]=new Person(k,name[k]);
     34          person[k].addMouseListener(this);
     35          person[k].addKeyListener(this);
     36          getContentPane().add(person[k]);
     37       }
     38       person[0].setBounds(t_x+l1,t_y,2*l1,2*l1); 
     39       person[1].setBounds(t_x+l1,t_y+2*l1,2*l1,l1); 
     40       person[2].setBounds(t_x,t_y,l1,2*l1); 
     41       person[3].setBounds(t_x+3*l1,t_y,l1,2*l1); 
     42       person[4].setBounds(t_x,t_y+2*l1,l1,2*l1); 
     43       person[5].setBounds(t_x+3*l1,t_y+2*l1,l1,2*l1);   
     44       person[6].setBounds(t_x+l1,t_y+3*l1,l1,l1);  
     45       person[7].setBounds(t_x+2*l1,t_y+3*l1,l1,l1); 
     46       person[8].setBounds(t_x,t_y+4*l1,l1,l1); 
     47       person[9].setBounds(t_x+3*l1,t_y+4*l1,l1,l1); 
     48       person[9].requestFocus();
     49       left=new JButton();  
     50       right=new JButton();
     51       above=new JButton(); 
     52       below=new JButton();
     53       getContentPane().add(left); 
     54       getContentPane().add(right);
     55       getContentPane().add(above); 
     56       getContentPane().add(below);
     57       left.setBounds(t_x-l2,t_y-l2,l2,l2*2+l1*5);
     58       right.setBounds(t_x+4*l1,t_y-l2,l2,l2*2+l1*5);
     59       above.setBounds(t_x-l2,t_y-l2,l2*2+l1*4,l2);
     60       below.setBounds(t_x-l2,t_y+5*l1,l2*2+l1*4,l2);
     61       validate();
     62    } 
     63    public void keyTyped(KeyEvent e){}
     64    public void keyReleased(KeyEvent e){}
     65    public void keyPressed(KeyEvent e) {
     66      Person man=(Person)e.getSource();
     67      if(e.getKeyCode()==KeyEvent.VK_DOWN)
     68          go(man,below);
     69      if(e.getKeyCode()==KeyEvent.VK_UP)
     70          go(man,above);
     71      if(e.getKeyCode()==KeyEvent.VK_LEFT)
     72          go(man,left);
     73      if(e.getKeyCode()==KeyEvent.VK_RIGHT)
     74         go(man,right);
     75    }
     76    public void mousePressed(MouseEvent e)  {}
     77    public void mouseReleased(MouseEvent e) {}
     78    public void mouseEntered(MouseEvent e)  {}
     79    public void mouseExited(MouseEvent e)   {}
     80    public void mouseClicked(MouseEvent e)  {}
     81    public void go(Person man,JButton direction) {
     82       boolean move=true;
     83       Rectangle manRect=man.getBounds();
     84       int x=man.getBounds().x;
     85       int y=man.getBounds().y;
     86       if(direction==below)
     87          y=y+l1;
     88       else if(direction==above)
     89          y=y-l1;
     90       else if(direction==left)
     91          x=x-l1;
     92       else if(direction==right)
     93          x=x+l1;
     94       manRect.setLocation(x,y);
     95       Rectangle directionRect=direction.getBounds();
     96       for(int k=0;k<10;k++) {
     97           Rectangle personRect=person[k].getBounds();
     98          if((manRect.intersects(personRect))&&(man.getnum()!=k))
     99             move=false;
    100       }
    101       if(manRect.intersects(directionRect))
    102             move=false;
    103      // if(move==true)    //因为是女神吴嘉欣所以不受任何约束可以直接移动,如果需要改成正确的华容道形式把这一行注释打掉就行了
    104             man.setLocation(x,y);
    105       if (man.getnum()==0&&x==(t_x+l1)&&y==(t_y+3*l1)) {//游戏是否胜利
    106           int res=JOptionPane.showConfirmDialog(null, "恭喜你游戏胜利", "是否继续", JOptionPane.YES_NO_OPTION);
    107           if(res==JOptionPane.YES_OPTION){ 
    108               dispose(); 
    109               new Hua_Rong_Road();
    110           }
    111           else    return ;
    112       }
    113   }
    114   public void actionPerformed(ActionEvent e) {
    115       dispose(); 
    116       new Hua_Rong_Road();
    117   }
    118 }
    1 //package test;
    2 //Mainclass.java 主类
    3 public class Mainclass {
    4     public static void main(String args[]) {
    5           new Hua_Rong_Road();
    6        }
    7 }

    效果图 :

     有bug?!都说了是迷弟版

    抓住青春的尾巴。。。
  • 相关阅读:
    一 : Nacos简介
    性能指标:性能监控指标有哪些?
    性能测试的分类
    VLP16线用户手册.md
    LibLas学习笔记
    从深度图中提取物体边界
    从点云数据生成深度图像
    微创社2期:从0到1,技术图书创作3步走(张慧敏、高飞、张杰、王凤辉)
    中国.NET:各地微软技术俱乐部汇总(更新中...)
    编译lua-5.3.5时出错解决方法
  • 原文地址:https://www.cnblogs.com/xidian-mao/p/8516556.html
Copyright © 2020-2023  润新知