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

📄 textmagic1.java

📁 开发一个用于进行魔方游戏的小型软件。在16个文本域中的4个随机位置上出现不多于二位的随机整数
💻 JAVA
字号:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import sun.audio.*;

public class TextMagic1 {
    public static void main(String[] args){
      JFrame f =new buildmagic();
      f.setVisible(true);
    }
}
class magic extends JPanel implements ActionListener{
    JLabel jLabel1 = new JLabel();                        //1个介绍游戏的标题
    JButton jButton1 = new JButton();                     //1个用于判定是不是魔方的按钮

    JTextField jTextField1 = new JTextField();            //第1行第1列的文本域
    JTextField jTextField2 = new JTextField();            //第1行第2列的文本域
    JTextField jTextField3 = new JTextField();            //第1行第3列的文本域
    JTextField jTextField4 = new JTextField();            //第1行第4列的文本域
    JTextField jTextField5 = new JTextField();            //第2行第1列的文本域
    JTextField jTextField6 = new JTextField();            //第2行第2列的文本域
    JTextField jTextField7 = new JTextField();            //第2行第3列的文本域
    JTextField jTextField8 = new JTextField();            //第2行第4列的文本域
    JTextField jTextField9 = new JTextField();            //第3行第1列的文本域
    JTextField jTextField10 = new JTextField();           //第3行第2列的文本域
    JTextField jTextField11 = new JTextField();           //第3行第3列的文本域
    JTextField jTextField12 = new JTextField();           //第3行第4列的文本域
    JTextField jTextField13 = new JTextField();           //第4行第1列的文本域
    JTextField jTextField14 = new JTextField();           //第4行第2列的文本域
    JTextField jTextField15 = new JTextField();           //第4行第3列的文本域
    JTextField jTextField16 = new JTextField();           //第4行第4列的文本域
    JTextField jTextField17 = new JTextField();           //1个显示结果提示信息的文本域
    JTextField[] b={jTextField1,jTextField2,jTextField3,jTextField4,jTextField5,jTextField6,jTextField7,jTextField8,jTextField9,jTextField10,jTextField11,jTextField12,jTextField13,jTextField14,jTextField15,jTextField16};    //记录16个文本域的数组


    
    //构造方法
    public magic(){
 		  //将介绍游戏的标题字体设为“13号字加粗的新宋体”,标题设为“在魔方的空白处填数,使每行每列数字之和均相等”
 	    jLabel1.setFont(new java.awt.Font("新宋体", Font.BOLD, 13));
 	    jLabel1.setToolTipText("");
  	  jLabel1.setText("在魔方的空白处填数,使每行每列数字之和均相等");
  	  //用于判定是不是魔方的按钮的标题设为“是魔方吗?”
  	  jButton1.setText("是魔方吗?");
  	  //设置显示结果提示信息的文本域
 	    jTextField17.setPreferredSize(new Dimension(105, 20));
      jTextField17.setToolTipText("");
      setBackground(SystemColor.activeCaptionBorder);
      //添加各组件到面板中
      add(jLabel1);
      for(int v=0;v<16;v++){
      	b[v].setHorizontalAlignment(JTextField.CENTER);
      	b[v].setPreferredSize(new Dimension(70, 70));
      	add(b[v]);}
      add(jButton1);
      add(jTextField17);
      //为判定按钮安装动作监听器
      jButton1.addActionListener(this);
      //设置显示结果提示信息的文本域中的字符居中对齐
      jTextField17.setHorizontalAlignment(JTextField.CENTER);
  
      //在16个文本域中的4个随机位置上出现不多于二位的随机整数
      int[] c = new int[4];
      for(int i=0;i<4;i++){
      	int q=(int)(15*Math.random());
      	c[i]=q;
    	  while(!b[c[i]].isEditable()){
    	  	q=(int)(15*Math.random());c[i]=q;}
    	  String a=String.valueOf((int)(10*Math.random()));
    	  b[c[i]].setText(a);
      	b[c[i]].setEditable(false);    	
      }
    }

    //方法redo重构魔方,重新产生随机数
    public void redo(){
    	//将显示结果文本域清空
    	jTextField17.setText("");
    	//将16个文本域设为可编辑并清空
    	for(int n=0;n<16;n++){
  		  if(!b[n].isEditable()){b[n].setEditable(true);}
  		  b[n].setText("");}
  	  //再次在16个文本域中的4个随机位置上出现不多于二位的随机整数
  	  int[] c = new int[4];
  	  for(int i=0;i<4;i++){
    	  int q=(int)(15*Math.random());
    	  c[i]=q;
    	  while(!b[c[i]].isEditable()){q=(int)(15*Math.random());c[i]=q;}
    	  String a=String.valueOf((int)(10*Math.random()));
    	  b[c[i]].setText(a);
    	  b[c[i]].setEditable(false);}
    }


    //方法actionPerformed判断是否是魔方并显示结果   
    public void actionPerformed(ActionEvent evt){
   	  Object source=evt.getSource();
   	  //产生数组d存放16个文本域中的数字
    	int[] d = new int[16];
    	int t;
    	try{
    		for(t=0;t<16;t++){
    		  d[t]=(int)Double.valueOf(b[t].getText()).doubleValue();}
   	 		//判断每行每列的数字之和是否相等并显示结果
    		int m=d[1]+d[2]+d[3]+d[0];
    		if(d[1]+d[2]+d[3]+d[0]==m&&d[5]+d[6]+d[7]+d[4]==m&&d[9]+d[10]+d[11]+d[8]==m&&d[15]+d[12]+d[13]+d[14]==m&&d[1]+d[5]+d[9]+d[13]==m&&d[2]+d[6]+d[10]+d[14]==m&&d[3]+d[7]+d[11]+d[15]==m&&d[4]+d[8]+d[12]+d[0]==m){
    			jTextField17.setText("是魔方!");
    			redo();
    			DialogFrame e = new DialogFrame();
     		 	e.setVisible(true);}
    		else {jTextField17.setText("不是魔方");}}
   		//捕捉非法字符输入异常并显示"请按要求重新输入"
   		catch(NumberFormatException rte){jTextField17.setText("请按要求重新输入");}}
    }
    
class buildmagic extends JFrame{
    public buildmagic(){
    	//设置面板题目和大小
      setTitle("欢迎来到魔方游戏");
      setSize(350,400);
      //设置面板不可改变大小
      setResizable(false);
      //将魔方窗口添加到面板上
      Container contentPane=getContentPane();
      contentPane.add(new magic());
      addWindowListener(new WL());
    }
}

⌨️ 快捷键说明

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