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

📄 hrd.java

📁 用java编写的华容道小游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import sun.audio.*;
import javax.swing.border.*;
import java.io.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowListener;
import java.util.EventListener;
import java.awt.event.WindowEvent;
public class HRD extends JFrame implements ActionListener, WindowListener
{
	public static int js;  //计数用
	public static int qm;         //用于控制是否有走棋的声音
	JMenuBar jmb;  //声明菜单
	JMenu jm1;
	JMenu jm2;
//	JMenu jm2_1;
	JMenu jm2_2;
//	ButtonGroup bg1;
	ButtonGroup bg2;
//	JRadioButtonMenuItem rbmi1_1;
//	JRadioButtonMenuItem rbmi1_2;
	JRadioButtonMenuItem rbmi2_1;
	JRadioButtonMenuItem rbmi2_2;
	JMenuItem mnn;
	JMenuItem mne;
	JMenuItem mnbz;  //声明菜单

	JLabel lbn=new JLabel(" ");
	JLabel lbe=new JLabel("     ");
	JLabel lbw=new JLabel("     ");
	JLabel lbs1=new JLabel("                          ");
	JLabel lbs2=new JLabel("                                         ");
	JLabel lbs3=new JLabel("                          ");
	JPanel pns=new JPanel();
	
	JPanel pnc=new JPanel();  //中心的面板
	
	URL url1 = getClass().getResource("/picture/caocao.jpg");
	URL url2 = getClass().getResource("/picture/guanyu.jpg");
	URL url3 = getClass().getResource("/picture/zhangfei.jpg");
	URL url4 = getClass().getResource("/picture/zhaoyun.jpg");
	URL url5 = getClass().getResource("/picture/machao.jpg");
	URL url6 = getClass().getResource("/picture/huangzhong.jpg");
	URL url7 = getClass().getResource("/picture/zu.jpg");
	
	ImageIcon pcc=new ImageIcon(url1);  //按钮图片
	ImageIcon pgy=new ImageIcon(url2);
	ImageIcon pzf=new ImageIcon(url3);
	ImageIcon pzy=new ImageIcon(url4);
	ImageIcon pmc=new ImageIcon(url5);
	ImageIcon phz=new ImageIcon(url6);
	ImageIcon pz=new ImageIcon(url7);
	
	JButton btcc=new JButton("",pcc);          //制做按钮
	JButton btgy=new JButton("",pgy);
	JButton btzf=new JButton("",pzf);
	JButton btzy=new JButton("",pzy);
	JButton btmc=new JButton("",pmc);
	JButton bthz=new JButton("",phz);
	JButton btz1=new JButton("",pz);
	JButton btz2=new JButton("",pz);
	JButton btz3=new JButton("",pz);
	JButton btz4=new JButton("",pz);
	JButton btk1=new JButton("");
	JButton btk2=new JButton("");           //制做按钮
	
	public int bx,by;        //用来记录所点BUTTON所在的坐标
	public int x1,y1;        //用来记录btk1和btk2的坐标
	public int x2,y2;        //大棋子一次移动两个空间,这个是用来查看btk1和btk2是不是在一起
	public int lx,ly;        //用来暂时存放选中的BUTTON的坐标,用于跟btk交换位置
	public int sx,sy;        //用来记录所点BUTTON的尺寸
	
	HRD(String str)
	{
		super(str);
		
		js=0;
		qm=0;
		
		jmb=new JMenuBar();  //菜单
	    jm1=new JMenu("文件(F)");
	    jm2=new JMenu("音乐(M)");
//	    jm2_1=new JMenu("背景音乐");
	    jm2_2=new JMenu("棋子音效");
//	    bg1=new ButtonGroup();
	    bg2=new ButtonGroup();
//	    rbmi1_1=new JRadioButtonMenuItem("开");
//	    rbmi1_2=new JRadioButtonMenuItem("关");
	    rbmi2_1=new JRadioButtonMenuItem("开",true);
	    rbmi2_2=new JRadioButtonMenuItem("关");
	    mnn=new JMenuItem("重新开始(N)");
	    mnbz=new JMenuItem("帮助(H)");
	    mne=new JMenuItem("退出(E)");
	    jm1.setMnemonic('F');
	    jm2.setMnemonic('M');
	    mnn.setMnemonic('N');
	    mnbz.setMnemonic('H');
	    mne.setMnemonic('E');
	    jm1.add(mnn);
	    jm1.add(mnbz);
	    jm1.addSeparator();
	    jm1.add(mne);
//	    bg1.add(rbmi1_1);
//	    bg1.add(rbmi1_2);
	    bg2.add(rbmi2_1);
	    bg2.add(rbmi2_2);
//	    jm2_1.add(rbmi1_1);
//	    jm2_1.add(rbmi1_2);
	    jm2_2.add(rbmi2_1);
	    jm2_2.add(rbmi2_2);
//	    jm2.add(jm2_1);
	    jm2.add(jm2_2);
	    jmb.add(jm1);
	    jmb.add(jm2);
		this.setJMenuBar(jmb);//菜单
		mnn.addActionListener(this);
		mnbz.addActionListener(this);
		mne.addActionListener(this);
		rbmi2_1.addActionListener(this);
		rbmi2_2.addActionListener(this);
		
		lbn.setOpaque(true);       //把Lable框设为不透明
		lbe.setOpaque(true);
		lbw.setOpaque(true);
		lbs1.setOpaque(true);
		lbs2.setOpaque(true);
		lbs3.setOpaque(true);      //把Lable框设为不透明
		lbn.setBackground(Color.LIGHT_GRAY);//设Lable的颜色
		lbe.setBackground(Color.LIGHT_GRAY);
		lbw.setBackground(Color.LIGHT_GRAY);
		lbs1.setBackground(Color.LIGHT_GRAY);
		lbs2.setBackground(new Color(200,0,20));//设下框中间的部分为红色
		lbs3.setBackground(Color.LIGHT_GRAY);//设Lable的颜色
	    
		pns.setBackground(Color.BLACK);
		pns.setLayout(new BorderLayout());
		pns.add(lbs1,BorderLayout.EAST);
		pns.add(lbs2,BorderLayout.CENTER);
		pns.add(lbs3,BorderLayout.WEST);  //以上是做边框
		
		
		pnc.setBackground(Color.BLACK);
		btk1.setBackground(Color.BLACK);//黑按钮
		btk2.setBackground(Color.BLACK);//黑按钮
		pnc.setLayout(null);
		btzf.setBounds(0,0,82,164);    //设置按所在的位置和大小
		btcc.setBounds(82,0,164,164);
		btzy.setBounds(246,0,82,164);
		btmc.setBounds(0,164,82,164);
		btgy.setBounds(82,164,164,82);  //82为单位
		bthz.setBounds(246,164,82,164);
		btz1.setBounds(0,328,82,82);
		btz2.setBounds(82,246,82,82);
		btz3.setBounds(164,246,82,82);
		btz4.setBounds(246,328,82,82);  //设置按所在的位置和大小
		btk1.setBounds(82,328,82,82);
		btk2.setBounds(164,328,82,82);
		
/*		btzf.setBounds(0,0,82,164);    //实验曹操用
		btcc.setBounds(82,164,164,164);
		btzy.setBounds(246,0,82,164);
		btmc.setBounds(0,164,82,164);
		btgy.setBounds(82,0,164,82);
		bthz.setBounds(246,164,82,164);
		btz1.setBounds(0,328,82,82);
		btz2.setBounds(82,246,82,82);
		btz3.setBounds(164,246,82,82);
		btz4.setBounds(246,328,82,82);
		btk1.setBounds(82,328,82,82);
		btk2.setBounds(164,328,82,82);*/
		
		
        btzf.addActionListener(this);
		btcc.addActionListener(this);
		btzy.addActionListener(this);
		btmc.addActionListener(this);
		btgy.addActionListener(this);
		bthz.addActionListener(this);
		btz1.addActionListener(this);
		btz2.addActionListener(this);
		btz3.addActionListener(this);
		btz4.addActionListener(this);
		btk1.addActionListener(this);
		btk2.addActionListener(this);
		
		pnc.add(btzf);
		pnc.add(btcc);
		pnc.add(btzy);
		pnc.add(btmc);
		pnc.add(btgy);
		pnc.add(bthz);
		pnc.add(btz1);
		pnc.add(btz2);
		pnc.add(btz3);
		pnc.add(btz4);
		pnc.add(btk1);
		pnc.add(btk2);
		
		Container con=this.getContentPane();
		con.add(lbn,BorderLayout.NORTH);
		con.add(lbe,BorderLayout.EAST);
		con.add(lbw,BorderLayout.WEST);
		con.add(pns,BorderLayout.SOUTH);
		con.add(pnc,BorderLayout.CENTER);
		con.setBackground(Color.BLACK);
        
		this.setSize(375,503);
		this.addWindowListener(this);
		this.setResizable(false);   //固定窗体
        //以下是在屏幕中间显示出来
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = this.getSize();
        if (frameSize.height > screenSize.height) {
          frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
          frameSize.width = screenSize.width;
        }
        this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
		
		//以下告诉窗口如果用户不进行手工退出工作(System.exit(0))的情况下什么都不要做,
		//以防窗口自动处理掉
		this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
	}


	public void actionPerformed(ActionEvent e) {
		
		
		if(e.getSource()==btz1)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			btz1.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=btz1.getX();
			by=btz1.getY();
			sx=82;
			sy=82;
		}
		if(e.getSource()==btz2)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			btz2.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=btz2.getX();
			by=btz2.getY();
			sx=82;
			sy=82;
		}
		if(e.getSource()==btz3)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			btz3.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=btz3.getX();
			by=btz3.getY();
			sx=82;
			sy=82;
		}
		if(e.getSource()==btz4)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			btz4.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=btz4.getX();
			by=btz4.getY();
			sx=82;
			sy=82;
		}
		if(e.getSource()==btzf)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			btzf.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=btzf.getX();
			by=btzf.getY();		
			sx=82;
			sy=164;
		}
		if(e.getSource()==btzy)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			btzy.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=btzy.getX();
			by=btzy.getY();
			sx=82;
			sy=164;
		}
		if(e.getSource()==btmc)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			btmc.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=btmc.getX();
			by=btmc.getY();
			sx=82;
			sy=164;
		}
		if(e.getSource()==bthz)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			bthz.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=bthz.getX();
			by=bthz.getY();
			sx=82;
			sy=164;
		}
		if(e.getSource()==btgy)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			btgy.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=btgy.getX();
			by=btgy.getY();
			sx=164;
			sy=82;
		}
		if(e.getSource()==btcc)
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
			btcc.setBorder(BorderFactory.createLineBorder(new Color(200,0,20),2));
			bx=btcc.getX();
			by=btcc.getY();
			sx=164;
			sy=164;
		}
		
		
		
		if(e.getSource()==btk1)      //选中往btk1移动时
		{
			btzf.setBorder(BorderFactory.createEtchedBorder());
		    btcc.setBorder(BorderFactory.createEtchedBorder());
		    btzy.setBorder(BorderFactory.createEtchedBorder());
		    btmc.setBorder(BorderFactory.createEtchedBorder());
		    btgy.setBorder(BorderFactory.createEtchedBorder());
		    bthz.setBorder(BorderFactory.createEtchedBorder());
		    btz1.setBorder(BorderFactory.createEtchedBorder());
		    btz2.setBorder(BorderFactory.createEtchedBorder());
	        btz3.setBorder(BorderFactory.createEtchedBorder());
		    btz4.setBorder(BorderFactory.createEtchedBorder());
		    x1=btk1.getX();
		    y1=btk1.getY();
		    if(sx==82&&sy==82)           //此处判断要移动的是否是卒
		    {
		    	x1=btk1.getX();
		    	y1=btk1.getY();
		    	if(x1-bx==82&&y1-by==0)   //用于卒向右btk1移动并看棋子与空格是否挨着
		    	{
		    		lx=bx;
		    		ly=by;
		    		if(bx==btz1.getX()&&by==btz1.getY())
		    		{
		    			btz1.move(x1,y1);
		    			btk1.move(lx,ly);
		    			js++;
		    			if(qm==0)
		    			{
		    			    new SoundPlayer();
		    		    }
		    		}
		    		if(bx==btz2.getX()&&by==btz2.getY())
		    		{
		    			btz2.move(x1,y1);
		    			btk1.move(lx,ly);
		    			js++;
		    			if(qm==0)
		    			{
		    			    new SoundPlayer();
		    		    }
		    		}
		    		if(bx==btz3.getX()&&by==btz3.getY())
		    		{
		    			btz3.move(x1,y1);
		    			btk1.move(lx,ly);
		    			js++;
		    			if(qm==0)
		    			{
		    			    new SoundPlayer();
		    		    }
		    		}
		    		if(bx==btz4.getX()&&by==btz4.getY())
		    		{
		    			btz4.move(x1,y1);
		    			btk1.move(lx,ly);
		    			js++;
		    			if(qm==0)
		    			{
		    			    new SoundPlayer();
		    		    }
		    		}
		    	}
		    	if(x1-bx==164&&y1-by==0)   //用于卒向右btk1移动并看棋子与空格中间是否还有btk2
		    	{
		    		x2=btk2.getX();
		    		y2=btk2.getY();

⌨️ 快捷键说明

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