利用海明码原理编写个小游戏
说明:海明码是网络传输中用来纠错的一种方法,这里利用这个原理随便写个简单的小程序,也是我自己做的第一个游戏程序,可吸收的地方不多,但是值得纪念。所以留下以供将来回忆用。
心中想着你想去的地方,分别在A, B, C ,D中找出带有你要去的那个地放的标号。如:
我想去东康,A中有我就点下按纽A。B中有我同样也点下B。C 中也有我再点下C。D中也有我也点下D。然后点下结果按纽,会显示出你想要去的地方。点还原可以继续这个游戏。
这是根据网络传输中海明码纠错原理做出来的简易游戏。如果需要还可以扩展更多。这里就不多写了。怕麻烦!!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class guessplay extends JFrame
{
private JLabel aJLabel;
private JLabel bJLabel;
private JLabel cJLabel;
private JLabel dJLabel;
private JTextField eJTextField;
private JButton aJButton;
private JButton bJButton;
private JButton cJButton;
private JButton dJButton;
private JButton totalJButton;
private JButton untotalJButton;
int A=0;
int B=0;
int C=0;
int D=0;
public guessplay()
{
createUserInterface();
}
private void createUserInterface()
{
Container contentPane=getContentPane();
contentPane.setLayout(null);
aJLabel=new JLabel();
aJLabel.setText("A: 上海 北京 天津 贵州 云南 江苏 西藏 东康");
aJLabel.setBounds(16,16,330,21);
contentPane.add(aJLabel);
bJLabel=new JLabel();
bJLabel.setText("B: 南京 北京 郑州 贵州 甘肃 江苏 黑龙江 东康");
bJLabel.setBounds(16,50,330,21);
contentPane.add(bJLabel);
cJLabel=new JLabel();
cJLabel.setText("C: 安徽 天津 郑州 贵州 海南 西藏 黑龙江 东康");
cJLabel.setBounds(16,84,330,21);
contentPane.add(cJLabel);
dJLabel=new JLabel();
dJLabel.setText("D: 内蒙古 云南 甘肃 江苏 海南 西藏 黑龙江 东康");
dJLabel.setBounds(16,118,330,21);
contentPane.add(dJLabel);
eJTextField=new JTextField();
eJTextField.setText("");
eJTextField.setBounds(16,152,110,21);
eJTextField.setEditable(false);
eJTextField.setHorizontalAlignment(JTextField.RIGHT);
contentPane.add(eJTextField);
aJButton=new JButton();
aJButton.setText("A");
aJButton.setBounds(16,186,50,25);
contentPane.add(aJButton);
aJButton.addActionListener(
new ActionListener()
{public void actionPerformed(ActionEvent event)
{
aJButtonActionPerformed(event);
}
}
);
bJButton=new JButton();
bJButton.setText("B");
bJButton.setBounds(76,186,50,25);
contentPane.add(bJButton);
bJButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
bJButtonActionPerformed(event);
}
}
);
cJButton=new JButton();
cJButton.setText("C");
cJButton.setBounds(16,224,50,25);
contentPane.add(cJButton);
cJButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
cJButtonActionPerformed(event);
}
}
);
dJButton=new JButton();
dJButton.setText("D");
dJButton.setBounds(76,224,50,25);
contentPane.add(dJButton);
dJButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
dJButtonActionPerformed(event);
}
}
);
totalJButton=new JButton();
totalJButton.setText("结果");
totalJButton.setBounds(146,224,100,25);
contentPane.add(totalJButton);
totalJButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
totalJButtonActionPerformed(event);
}
}
);
untotalJButton=new JButton();
untotalJButton.setText("还原");
untotalJButton.setBounds(146,186,100,25);
contentPane.add(untotalJButton);
untotalJButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
untotalJButtonActionPerformed(event);
}
}
);
setTitle("guessplay");
setSize(330,300);
setVisible(true);
}
private void aJButtonActionPerformed(ActionEvent event)
{
A=1;}
private void bJButtonActionPerformed(ActionEvent event)
{
B=2;
}
private void cJButtonActionPerformed(ActionEvent event)
{
C=4;
}
private void dJButtonActionPerformed(ActionEvent event)
{
D=8;
}
private void totalJButtonActionPerformed(ActionEvent event)
{
int total=0;
total=A+B+C+D;
switch (total)
{
case 1:
eJTextField.setText("上海");
break;
case 2:
eJTextField.setText("南京");
break;
case 3:
eJTextField.setText("北京");
break;
case 4:
eJTextField.setText("安徽");
break;
case 5:
eJTextField.setText("天津");
break;
case 6:
eJTextField.setText("郑州");
break;
case 7:
eJTextField.setText("贵州");
break;
case 8:
eJTextField.setText("内蒙古");
break;
case 9:
eJTextField.setText("云南");
break;
case 10:
eJTextField.setText("甘肃");
break;
case 11:
eJTextField.setText("江苏");
break;
case 12:
eJTextField.setText("海南");
break;
case 13:
eJTextField.setText("西藏");
break;
case 14:
eJTextField.setText("黑龙江");
break;
default:
eJTextField.setText("东康");
}
}
private void untotalJButtonActionPerformed(ActionEvent event)
{
int A=B=C=D=0;
eJTextField.setText("");
}
public static void main(String[] args)
{
guessplay application=new guessplay();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}