📄 textmagic.java.bak
字号:
/*本程序用于进行魔方游戏,该游戏用4行4列的数组表示,用以存放游戏中的十六个书数。
在四个随机的位置产生四个随机的数。*/
//TextMagic.java
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
/*类magic用于创建和查阅魔方游戏的窗口界面。其中包含1个介绍游戏的标题,1个由4行4列组成的16个文本域,
1个用于判定是不是魔方的按钮,1个显示结果提示信息的文本域。
*/
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("请按要求重新输入");}}
}
/*类DialogFrame用于创建询问是否再进行游戏的对话框。
其中包含2个询问的标签,2个选择是否再进行游戏的按钮。*/
class DialogFrame extends JFrame implements ActionListener{
JLabel jLabel2 = new JLabel("你成功啦!"); //1个祝贺成功的标题
JLabel jLabel3 = new JLabel("再玩一把么?"); //1个询问是否再玩的标题
JButton jButton2 = new JButton("好的"); //1个再玩游戏的按钮
JButton jButton3 = new JButton("不了"); //1个退出游戏的按钮
//构造方法
public DialogFrame(){
//设置对话框题目和大小
setTitle("恭喜你");
setSize(200,100);
addWindowListener(new WL());
//添加两个标签和两个按钮到对话框中
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(jLabel2);
contentPane.add(jLabel3);
contentPane.add(jButton2);
contentPane.add(jButton3);
//为两个选择按钮安装动作监听器
jButton2.addActionListener(this);
jButton3.addActionListener(this);
}
//方法actionPerformed按照用户选择再次进行游戏或者退出游戏
public void actionPerformed(ActionEvent e){
if(e.getSource() == jButton2) {
dispose();}
else if(e.getSource() == jButton3){System.exit(0);dispose();}
}
}
//窗口事件监听器类
class WL extends WindowAdapter{
public void windowClosing(WindowEvent e){System.exit(0);}
}
/*类buildmagic创建游戏主面板*/
class buildmagic extends JFrame{
public buildmagic(){
//设置面板题目和大小
setTitle("欢迎来到魔方游戏");
setSize(350,400);
//设置面板不可改变大小
setResizable(false);
//将魔方窗口添加到面板上
Container contentPane=getContentPane();
contentPane.add(new magic());
}
}
/*类TextMagic运行魔方游戏*/
public class TextMagic {
public static void main(String[] args){
JFrame f =new buildmagic();
f.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -