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

📄 design.java

📁 JAVA小游戏,自己做的设计,呵呵,写的不好多指教
💻 JAVA
字号:
import java.awt.*;                                           //导入awt包
import java.awt.event.*;                                     //关闭awt包
import javax.swing.*;                                         //导入swing包
public class Design extends JApplet                       //设置的主类
{
	JTabbedPane tab=new JTabbedPane();                    //定义的选择面板
	Container c=this.getContentPane();                    //定义的面板变量
	public void init()
	{
		tab=new JTabbedPane();                         //实例化选择的面板
		tab.addTab("华容道",new DesignRoad());           //将华容道面板添加到选择面板中
		tab.addTab("翻板",new DesignColor());            //将翻板面板添加到选择面板中
		c.add(tab);
	}
} 
//华容道类
class DesignRoad extends JApplet                               
{
	//定义i,j坐标
	int i=0,j=0;
	//定义总次数,显示结果,标签按钮的移动大小
	int count=0,state=0,btnNull;         
	JButton btnRoad[]=new JButton[16];                          //向拼板中实力化16个按钮
	JLabel labRoad;                                             //定义标签
	JPanel pRoad,pLabRoad,pButRoad;                             //面板,拼板,标签,按钮
	Container conRoad;
	public DesignRoad()
	{
		pRoad=new JPanel();										//向面板中实力化拼板
		pRoad.setLayout(new BorderLayout());					//设置拼板
		pButRoad=new JPanel();									//向面板中实力化按钮
		pButRoad.setLayout(new GridLayout(4,4,1,1));			//将面板按钮设置为4行4列
		pLabRoad=new JPanel();									//向面板中实力化标签
		pLabRoad.setLayout(new BorderLayout());
		for(int i=15;i>=0;i--)
		{
			if (i==0)
				btnRoad[i]=new JButton();
			else
				btnRoad[i]=new JButton(""+i+"");
			btnRoad[i].addActionListener(new Roadlisten());			//注册监听器类
			pButRoad.add(btnRoad[i]);								//向按钮中添加数字
		}
		
		labRoad=new JLabel("请开始");								//实力化标签
		pLabRoad.add(labRoad);										//添加标签
		pRoad.add(pButRoad,BorderLayout.CENTER);					//设置按钮间距
		pRoad.add(pLabRoad,BorderLayout.SOUTH);						//设置标签间距
		conRoad=getContentPane();
		conRoad.setLayout(new BorderLayout());
		conRoad.add(pRoad,BorderLayout.CENTER);			
	}
private class Roadlisten implements ActionListener            //设置监听器类
  {
	 public void actionPerformed(ActionEvent e)
	{
		for(int i=0;i<16;i++)
			if(btnRoad[i].getLabel()=="")							//将数字0在面板中设置为空
				btnNull=i;											//将i复给空按钮
			for(int i=0;i<16;i++)
				if(e.getSource()==btnRoad[i])
				{
					if(i==btnNull+1 || i==btnNull-1 || i==btnNull+4 || i==btnNull-4)//判断当前被点击的按钮是否处于标签为0的按钮的四个正方向
					{	
					btnRoad[j].setLabel(""+btnRoad[i].getLabel()+"");	//交换被点击的按钮与标签为0的按钮的标签
					btnRoad[i].setLabel("");            	//按钮为空											
					j=i;                                 	//交换i,j值
					i=j;
					count++;
					labRoad.setText("您当前的总移动次数为:"+count+"次!");//显示当前的总次数
					for(i=1;i<16;i++)								 //判断游戏最终是否取得胜利
						{
							if(btnRoad[i].getLabel()==""+(16-i))
								state=1;								//胜利
							else
								state=0;								//失败
							}
							if(state==1)								//state=1表示胜利
							{	
							labRoad.setText("你通过"+count+"次移动取得了胜利");//显示文本框中的标签信息
							JOptionPane.showMessageDialog(null,"恭喜你取得了胜利!!!","消息",JOptionPane.INFORMATION_MESSAGE);//显示最终结果
							}
				    }
					else
						labRoad.setText("必须按空格旁边的按钮!");		//否则将显示显示括号里的内容
				}
 	}
		
  }
}
class DesignColor extends JApplet									//设置颜色类
{
	/*定义坐标,背景颜色被黄色填充的按钮总数,游戏最终是否取得胜利,当前正在移动的按钮,即标签为0*/
	private int i=0,j=0,count=0;
	private JButton btnReset,btnColor[]=new JButton[25];
	private JLabel labelYellow,labelBlack;
	private JTextField textYellow,textBlack;
	private JPanel panelBtn,panelState1,panelState2,panelState,panelReset,panelUnder;
	private JPanel panelM;
	private Container conColor;
	public DesignColor()
	{
		panelBtn=new JPanel(new GridLayout(5,5));				//将面板中按钮设置为5行5列
		panelState1=new JPanel(new GridLayout(1,2));
		panelState2=new JPanel(new GridLayout(1,2));
		panelState=new JPanel(new GridLayout(2,1));
		panelReset=new JPanel(new GridLayout(1,2));
		panelUnder=new JPanel(new GridLayout(2,1));
		for(int i=0;i<25;i++)
		{
			btnColor[i]=new JButton();
			btnColor[i].addActionListener(new DcolorLs());		//注册监听器类
			btnColor[i].setBackground(Color.black);
			panelBtn.add(btnColor[i]);
		}
			
		labelYellow=new JLabel("黄色");
		labelBlack=new JLabel("黑色");
		
		textYellow=new JTextField("0",10);
		textBlack=new JTextField("25",10);
		
		btnReset=new JButton("重玩");
		btnReset.addActionListener(new DcolorLs());				//注册监听器类
		panelReset.add(btnReset);
		
		panelState1.add(labelYellow);
		panelState1.add(textYellow);
			
		panelState2.add(labelBlack);
		panelState2.add(textBlack);
		
		panelState.add(panelState1);
		panelState.add(panelState2);
		
		panelUnder.add(panelState);
		panelUnder.add(panelReset);
			
		conColor=getContentPane();
		conColor.setLayout(new BorderLayout());
		conColor.add(panelUnder,BorderLayout.SOUTH);
		conColor.add(panelBtn,BorderLayout.CENTER);
	}
	
	private void reverse(int n)								//设置被点击的按钮及其四周的按钮的背景颜色
	{
		if(btnColor[n].getBackground()==Color.BLACK)		//如果原是黑色的则设置成黄色
		{
			btnColor[n].setBackground(Color.yellow);
			count++;
		}
		else   												//如果原是黄色的则设置成黑色
		{
			btnColor[n].setBackground(Color.BLACK);
			count--;
		}
	}
	
	private class DcolorLs implements ActionListener 		//设置监听器类
	{
		public void actionPerformed(ActionEvent e)
		{
			for(i=0;i<25;i++)
			{
				if(e.getSource()==btnColor[i])
				{
					if(i%5==0) 								//判断是否是第一行按钮
					{
						if(i/5!=0)							//排除右上角的按钮
							reverse(i-5);					//设置相反的颜色
						if(i/5!=4)							//排除左上角的按钮
							reverse(i+5);
						reverse(i+1);
						reverse(i);
					}
					else if(i/5==0 && i%5!=4 && i%5!=0)		//判断是否是第一列按钮
					{
						reverse(i+1);
						reverse(i+5);
						reverse(i);
						reverse(i-1);
					}
					else if(i%5==4)							//判断是否是最右边的列即第5列
					{
						if(i/5!=0)
							reverse(i-5);	
						if(i/5!=4)
							reverse(i+5);
						reverse(i);
						reverse(i-1);
					}
					else if(i/5==4 && i%5!=0 && i%5!=4)		//判断是否是最下边的行即第5行
					{
						reverse(i+1);
						reverse(i-5);
						reverse(i);
						reverse(i-1);
					}
					else 									//处于中间的按钮
					{
						reverse(i+1);
						reverse(i+5);
						reverse(i);
						reverse(i-1);
						reverse(i-5);
					}
				}
			textYellow.setText(""+count);					//设置文本框的内容,即当前黄色按钮的总数
			textBlack.setText(""+(25-count));				//黑色按钮的总数	
			}
			if(e.getSource()==btnReset)						//重玩按钮的事件处理程序
			{
				for(i=0;i<25;i++)
				{
					btnColor[i].setBackground(Color.BLACK);
					count=0;
					textYellow.setText("0");
					textBlack.setText("25");
				}
			}	
		}
	}
}
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		

⌨️ 快捷键说明

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