Use javaGUI programming Huarong game

Huarong is an ancient Chinese folk puzzle game, with its varied, never be bored with the Cube features, together independent diamond chess foreign intelligence experts known as the "three incredible mental game industry." It is the traditional Chinese puzzle there is a synonym for toys puzzle, nine rings, etc. called "China's problems." Description from Baidu Encyclopedia

Huarong game solution is complex, but with javaGUI programming, this game is not difficult to make. Here is the implementation code:

1. The definition of character class Person .java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
	public class Person extends JButton implements FocusListener
	{
	   int number;
	   Color c=new Color(255,245,170);
	   Font font=new Font("宋体",Font.BOLD,8);
	   Person(int number,String s)
	   {
	     super(s);
		 setBackground(c);
		 setFont(font);
		 this.number=number;
		 c=getBackground();
		 addFocusListener(this);
	   }
	   public void focusGained(FocusEvent e)
		{
		   setBackground(Color.red);
	    }
	   public void focusLost(FocusEvent e)
		{
	       setBackground(c);
	    }
	}

2. The implementation class Huarongdao.java

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Huarongdao extends JFrame implements MouseListener,
KeyListener,ActionListener 
{
	Person person[]=new Person[10];
	JButton left,right,above,below;
	JButton restart=new JButton("重新开始");
	public Huarongdao()
	   {
	   init();
	   setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	   setBounds(100,100,320,500);
	   setVisible(true);
	   validate();
	   }
   public void init()
	{
	   setLayout(null);
	   add(restart);
	   restart.setBounds(100,320,120,35);
	   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,254,50,50);
      person[9].setBounds(154,204,50,50);
	   person[9].requestFocus();
	   left=new JButton();
	   right=new JButton();
	   above=new JButton();
	   below=new JButton();
	   add(left);
	   add(right);
	   add(above);
	   add(below);
	   left.setBounds(49,49,5,206);
	   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,left);
		  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,JButton 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 Huarongdao();
		 }
}

3. Test class Test.java

public class Test{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Huarongdao();
	}
}

Run shot:

Huarong game

Published 34 original articles · won praise 65 · views 3729

Guess you like

Origin blog.csdn.net/baidu_41860619/article/details/103582177