魔方图最终版本奇数偶数均已实现

来源:互联网 发布:手机文件查看软件 编辑:程序博客网 时间:2024/05/24 03:42
发贴心情 魔方图最终版本奇数偶数均已实现
//author woodpecker
//version 3.0
//this is a programe of MFT
//MFT.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MFT extends JFrame implements ActionListener
{
public Container c = getContentPane();
JPanel pane1=new JPanel();
JLabel input=new JLabel("请输入一个的不小于3的整数:");
JTextField in=new JTextField(10);
JButton submit=new JButton("确定");
JButton reset=new JButton("关闭");
public MFT()
{
super("魔方图产生器 ★woodpecker★");
// get screen dimensions

Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
// center frame in screen
setSize(screenWidth/2, 100);
setLocation(screenWidth/4, screenHeight/4);
c.setLayout(new BorderLayout());
pane1.setLayout(new FlowLayout());
submit.addActionListener(this);
reset.addActionListener(this);
pane1.add(input);
pane1.add(in);
pane1.add(submit);
pane1.add(reset);
c.add(pane1,BorderLayout.CENTER);
show();
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource()==submit)//魔方图经典算法
try
{
int i=0,j=0,k=0,m=0,n=1;
String s=in.getText();
n=Integer.parseInt(s);
if((n!=0)&&(n>0)&&(n%2!=0)) //当n 为奇数时
{
int arry[][]=new int[n][n];
for(i=0;i for(j=0;j arry[i][j]=0;
j=n/2;
arry[0][j]=1;
for(k=2;k<=n*n;k++)
{

i=i-1;
j=j+1;
if((i<0)&&(j>n-1))
{
i=i+2;
j=j-1;
}
else
{
if(i<0)i=n-1;
if(j>n-1)j=0;
}
if(arry[i][j]==0)
arry[i][j]=k;
else
{
i=i+2;
j=j-1;
arry[i][j]=k;
}
}
in.setText("");
ShowMFT app=new ShowMFT(n,arry);
}

else//当n 为偶数时
{

int a,b,q=1;
int arry[][]=new int[n][n];
for(i=0;i for(j=0;j arry[i][j]=q++;
for (i=0;i

for (j=0;j

{
m=i+j+1;

a=n-1-i; b=n-1-j;

if (i!=j && m!=n )

{
q=arry[i][j]; arry[i][j]=arry[a][b];arry[a][b]=q;
}

}
for (i=0;i

{for (j=0;j

System.out.print(" "+arry[i][j]);
System.out.println();
}

ShowMFT app=new ShowMFT(n,arry);
}
}
catch(Exception ee)
{
JOptionPane.showMessageDialog(this,"输入的数据应为整数");
in.setText("");
}
if (e.getSource()==reset)
{
this.dispose();
}
}
public static void main(String[] args)
{
MFT app=new MFT();
app.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
} );
}
}
class ShowMFT extends JFrame//产生一个新的窗体显示结果
{

private Container c=getContentPane();
private Panel pane1=new Panel();
private Panel pane2=new Panel();
private JLabel message=new JLabel("以下是参数为 ");
private JLabel num;
private JLabel mes=new JLabel(" 的魔方图");
private int m=0;
private String arr[][];
public ShowMFT(int n,int a[][])
{
super("※魔方图产生器显示※ ★woodpecker★");
// get screen dimensions

Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenHeight = screenSize.height;
int screenWidth = screenSize.width; // center frame in screen

setLocation(screenWidth/4, screenHeight/4);
m=n;
setSize(m*70, m*50);
arr=new String[a.length][a[0].length];
JButton show[][]=new JButton[a.length][a[0].length];
c.setLayout(new BorderLayout());
pane1.setLayout(new FlowLayout());
pane2.setLayout(new GridLayout(m,m,5,5));
pane1.add(message);
num =new JLabel(String.valueOf(m),SwingConstants.CENTER);
pane1.add(num);
pane1.add(mes);
c.add(pane1,BorderLayout.NORTH);
for(int i=0;i {
for(int j=0;j {
arr[i][j]=String.valueOf(a[i][j]);
show[i][j]=new JButton(arr[i][j]);
pane2.add(show[i][j]);
}
}
c.add(pane2);
show();

}
}

原创粉丝点击