📄 guessnumber.java
字号:
/*猜数字游戏,受到以前玩过文曲星中的启发,编写完成,在游戏过程中通过鼠标就能完成
不会带来繁琐的从键盘输入数字.
此程序编写简单易读.
*由于初学JAVA,很多思路采用C中算法,希望在以后的学习中加以改进*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class GuessNumber implements ActionListener{
int a[]=new int[4]; //生成四位不同的随机数
int b[]=new int[4]; //存入输入的数
int flag[]=new int[10]; //用来保证产生的随机数不同
int flag1[]=new int[10]; //用来保证输入的四个数不同
int i=0,n=0;
JFrame f;
JMenuBar mainMenu;
JButton oneJButton, twoJButton, threeJButton, fourJButton, fiveJButton, sixJButton,
sevenJButton, eightJButton, nineJButton, zeroJButton, okJButton,returnJButton;
JTextField number;
JTextArea ta;
JLabel Label1,Label2,Label3,Label4,Label5,Label6;
JMenu gameMenu, helpMenu;
JMenuItem mi1,mi2,mi3,mi4;
JPanel p1,p2,p3,p4;
public static void main(String args[]){
GuessNumber be=new GuessNumber();
be.go();
}
public void go(){
f=new JFrame("猜数字");
Container contentPane=f.getContentPane();
contentPane.setLayout(null);
//菜单设定
mainMenu = new JMenuBar();
gameMenu = new JMenu("游戏");
helpMenu = new JMenu("帮助");
mi1=new JMenuItem("开始");
mi2=new JMenuItem("结束");
mi3=new JMenuItem("游戏介绍");
mi4=new JMenuItem("关于");
gameMenu.add(mi1);
gameMenu.add(mi2);
helpMenu.add(mi3);
helpMenu.add(mi4);
mainMenu.add(gameMenu);
mainMenu.add(helpMenu);
f.setJMenuBar(mainMenu);
mi1.addActionListener(this); //添加菜单行为
mi2.addActionListener(this);
mi3.addActionListener(this);
mi4.addActionListener(this);
//游戏区设定
Label1=new JLabel("欢迎进入猜数字游戏");
Label1.setBounds(200,0,200,20);
Label1.setForeground(Color.blue);
Font font=new Font("Dialog",Font.PLAIN,16);
Label1.setFont(font);
contentPane.add(Label1);
Label2=new JLabel("请输入你要猜的四个不同的数:");
number=new JTextField(10);
Label2.setBounds(0,30,195,20);
number.setBounds(200,30,60,20);
Label2.setForeground(new Color(200, 0, 210));
number.setForeground(Color.red);
Font font1=new Font("Dialog",Font.PLAIN,14);
Label2.setFont(font1);
contentPane.add(Label2);
contentPane.add(number);
ImageIcon icon1=new ImageIcon("24.gif");
ImageIcon icon2=new ImageIcon("22.gif");
ImageIcon icon3=new ImageIcon("23.gif");
ImageIcon icon4=new ImageIcon("25.gif");
Label3=new JLabel(icon1);
Label4=new JLabel(icon2);
Label5=new JLabel(icon3);
Label6=new JLabel(icon4);
Label3.setBounds(380,230,60,60);
Label4.setBounds(380,230,60,60);
Label5.setBounds(380,230,60,60);
Label6.setBounds(380,230,60,60);
contentPane.add(Label3);
contentPane.add(Label4);
contentPane.add(Label5);
contentPane.add(Label6);
Label4.setVisible(false); //添加图像显示,不同结果有不同显示
Label5.setVisible(false);
Label6.setVisible(false);
ta=new JTextArea(300,250);
ta.setBounds(10,140,300,200);
ta.setForeground(new Color(20, 20, 200));
ta.setBackground(new Color(149,254,99));
contentPane.add(ta);
oneJButton = new JButton();
oneJButton.setText("1");
oneJButton.setBounds( 0, 60, 50,50 );
oneJButton.setBackground(new Color(150, 255, 255));
contentPane.add( oneJButton );
oneJButton.addActionListener(this);
// set up twoJButton
twoJButton = new JButton( "2" );
twoJButton.setBounds( 50, 60, 50,50 );
twoJButton.setBackground(new Color(150, 255, 255));
contentPane.add( twoJButton );
twoJButton.addActionListener(this);
// set up threeJButton
threeJButton = new JButton( "3" );
threeJButton.setBounds( 100, 60, 50,50 );
threeJButton.setBackground(new Color(150, 255, 255));
contentPane.add( threeJButton );
threeJButton.addActionListener(this);
// set up fourJButton
fourJButton = new JButton( "4" );
fourJButton.setBounds(150, 60, 50,50 );
fourJButton.setBackground(new Color(150, 255, 255));
contentPane.add( fourJButton );
fourJButton.addActionListener(this);
// set up fiveJButton
fiveJButton = new JButton( "5" );
fiveJButton.setBounds( 200, 60, 50,50 );
fiveJButton.setBackground(new Color(150, 255, 255));
contentPane.add( fiveJButton );
fiveJButton.addActionListener(this);
// set up sixJButton
sixJButton = new JButton( "6" );
sixJButton.setBounds( 250, 60, 50,50 );
sixJButton.setBackground(new Color(150, 255, 255));
contentPane.add( sixJButton );
sixJButton.addActionListener(this);
// set up sevenJButton
sevenJButton = new JButton( "7" );
sevenJButton.setBounds( 300, 60, 50,50 );
sevenJButton.setBackground(new Color(150, 255, 255));
contentPane.add( sevenJButton );
sevenJButton.addActionListener(this);
// set up eightJButton
eightJButton = new JButton( "8" );
eightJButton.setBounds( 350, 60, 50,50 );
eightJButton.setBackground(new Color(150, 255, 255));
contentPane.add( eightJButton );
eightJButton.addActionListener(this);
// set up nineJButton
nineJButton = new JButton( "9" );
nineJButton.setBounds(400, 60, 50,50 );
nineJButton.setBackground(new Color(150, 255, 255));
contentPane.add( nineJButton );
nineJButton.addActionListener(this);
// set up zeroJButton
zeroJButton = new JButton( "0" );
zeroJButton.setBounds( 450, 60, 50,50 );
zeroJButton.setBackground(new Color(150, 255, 255));
contentPane.add( zeroJButton );
zeroJButton.addActionListener(this);
// set up okJButton
okJButton = new JButton( "OK" );
okJButton.setBounds( 350, 120, 75,75 );
okJButton.setForeground(new Color(20, 20, 200));
okJButton.setBackground(new Color(255, 255, 100));
contentPane.add(okJButton );
okJButton.addActionListener(this);
//set up returnJBtton
returnJButton = new JButton( "返回" );
returnJButton.setBounds( 425, 120, 75,75 );
returnJButton.setForeground(new Color(0, 128, 64));
returnJButton.setBackground(new Color(255, 255,100));
contentPane.add(returnJButton );
returnJButton.addActionListener(this);
f.setSize(530,420);
f.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
Object temp = event.getSource();
int x=0,y=0;
//菜单行为
//开始菜单,用来产生随机数,并清零
if(temp==mi1){
number.setText("");
ta.setText("");
n=0; i=0;
for(int i=0;i<10;i++){
flag1[i]=0;flag[i]=0;
}
for(int i=0;i<4;i++){
int r=(int)(Math.random()*10); //产生0-9的随机数
if(flag[r]==0){
a[i]=r;
flag[r]=1;
}
else{ //相同则重新产生
i--;
}
}
Label6.setVisible(false);
Label5.setVisible(false);
Label4.setVisible(false);
Label3.setVisible(true);
}
if(temp==mi2){
System.exit(0); //退出
}
if(temp==mi3){
JOptionPane.showMessageDialog(f,"猜数字游戏介绍:\n从0~9猜出四个不同数,结果中A表示所猜的数位置和数值都对,B表示数值对,位置不对.\n当猜出的数大小和位置都正确时,游戏结束.\n有十次机会\n操作说明:\n先在游戏菜单选项中点击开始\n然后直接点击0~9数字键,按OK键确认,按返回键重新输入..","帮助",JOptionPane.WARNING_MESSAGE);
}
if(temp==mi4){
JOptionPane.showMessageDialog(f,"制作者:\n莆田学院电子信息工程系计教052 叶超\n制作完成时间:\n2007.11.20","关于作品",JOptionPane.WARNING_MESSAGE);
}
//数字键行为
if(temp==oneJButton&&i<4&&flag1[1]==0){
number.setText(number.getText()+"1");
b[i]=1;i++;flag1[1]=1;
}
if(temp==twoJButton&&i<4&&flag1[2]==0){
number.setText(number.getText()+"2");
b[i]=2;i++;flag1[2]=1;
}
if(temp==threeJButton&&i<4&&flag1[3]==0){
number.setText(number.getText()+"3");
b[i]=3;i++;flag1[3]=1;
}
if(temp==fourJButton&&i<4&&flag1[4]==0){
number.setText(number.getText()+"4");
b[i]=4;i++;flag1[4]=1;
}
if(temp==fiveJButton&&i<4&&flag1[5]==0){
number.setText(number.getText()+"5");
b[i]=5;i++;flag1[5]=1;
}
if(temp==sixJButton&&i<4&&flag1[6]==0){
number.setText(number.getText()+"6");
b[i]=6;i++;flag1[6]=1;
}
if(temp==sevenJButton&&i<4&&flag1[7]==0){
number.setText(number.getText()+"7");
b[i]=7;i++;flag1[7]=1;
}
if(temp==eightJButton&&i<4&&flag1[8]==0){
number.setText(number.getText()+"8");
b[i]=8;i++;flag1[8]=1;
}
if(temp==nineJButton&&i<4&&flag1[9]==0){
number.setText(number.getText()+"9");
b[i]=9;i++;flag1[9]=1;
}
if(temp==zeroJButton&&i<4&&flag1[0]==0){
number.setText(number.getText()+"0");
b[i]=0;i++;flag1[0]=1;
}
//返回按钮
if(temp==returnJButton){
number.setText("");
i=0;flag1[0]=flag1[1]=flag1[2]=flag1[3]=flag1[4]=flag1[5]=flag1[6]
=flag1[7]=flag1[8]=flag1[9]=0;
}
//确认按钮,进行所猜数字 的判断,并在文本区中显示出来
if(temp==okJButton&&a[0]!=a[1]&&i==4){
n++;
for(int i=0;i<4;i++){
for (int j=0;j<4;j++){
if(b[i]==a[j]){
if(i==j){
x++;
}
else{
y++;
}
}
}
}
String text1=" 你得努力啊,再猜!";
String text2=" 还不错,继续!";
String text3=" 恭喜你,猜对了!";
String text4="没机会了,按开始键重新开始吧!";
String text5="你很聪明,欢迎下次再来!!!";
String number1=number.getText();
// 进行判断分析
if(x<=1&&n!=10){
Label3.setVisible(false);
Label4.setVisible(false);
Label6.setVisible(false);
Label5.setVisible(true);
ta.append(n+": "+number1+" "+x+" A "+y+" B"+text1+"\n");
}
if(x>1&&x<4&&n!=10){
Label5.setVisible(false);
Label4.setVisible(false);
Label6.setVisible(false);
Label3.setVisible(true);
ta.append(n+": "+number1+" "+x+" A "+y+" B"+text2+"\n");
}
if(x==4){
Label3.setVisible(false);
Label5.setVisible(false);
Label6.setVisible(false);
Label4.setVisible(true);
ta.append(n+": "+number1+" "+x+" A "+y+" B"+text3+"\n");
ta.append(text5+"\n");
return;
}
if(n==10){
Label5.setVisible(false);
Label4.setVisible(false);
Label3.setVisible(false);
Label6.setVisible(true);
ta.append(n+": "+number1+" "+x+" A "+y+" B"+"\n");
ta.append("答案是: "+a[0]+a[1]+a[2]+a[3]+" "+text4+"\n");
return;
}
// ta.append(n+": "+number1+" "+x+"A"+y+"B"+a[0]+a[1]+"\n");
number.setText("");
i=0;flag1[0]=flag1[1]=flag1[2]=flag1[3]=flag1[4]=flag1[5]=flag1[6]
=flag1[7]=flag1[8]=flag1[9]=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -