lbshow.setText("您猜的太小了,请继续猜!
");
continue;
}
elseif(num2>num){
lbshow.setText("您猜的太大了,请继续猜!
");
continue;
}
longendTime=System.currentTimeMillis();
longt;
t=(endTime-startTime)/1000;
strshow="您总共猜了"+counter+"次,您猜数字总共花了"+(endTime-startTime)/1000+"秒";
if(t<10)
lbshow.setText("恭喜您,猜对了!
您真棒,智商真高!
"+strshow);
elseif(t>10)
lbshow.setText("这么久才猜出来,有点笨!
"+strshow);
}
}
4.2.3判断时间
startTime=System.currentTimeMillis();
longendTime=System.currentTimeMillis();
strshow="您猜数字总共花了"+(endTime-startTime)/1000+"秒";
4.2.4自动计数
intgeust=0;
counter++;
strshow="您总共猜了"+counter+"次;
4.2.5结果输出
longt;
t=(endTime-startTime)/1000;
strshow="您总共猜了"+counter+"次,您猜数字总共花了"+(endTime-startTime)/1000+"秒";
if(t<10)
lbshow.setText("恭喜您,猜对了!
您真棒,智商真高!
"+strshow);
elseif(t>10)
lbshow.setText("这么久才猜出来,有点笨!
"+strshow);
4.2.6图形界面的实现
BorderLayoutbdmg=newBorderLayout();
Buttonbutton1=newButton("获取随机数");
Buttonbutton2=newButton("确定");
Stringstr=null;
Stringstr2=null;
longstartTime;
intnum,num2;
intcounter=0;
myGeustNummy1=newmyGeustNum();
TextFieldinput;
Labellbshow=newLabel("");
Labellbshow2=newLabel("");
inti;
Stringstrshow;
publicvoidinit()
{
setLayout(bdmg);
add(button1,BorderLayout.NORTH);
button1.addActionListener(this);
button1.setSize(50,50);
Labellb1=newLabel("请输入");
lb1.setSize(50,20);
this.add(lb1,BorderLayout.WEST);
input=newTextField(10);
input.setSize(40,50);
add(input,BorderLayout.CENTER);
add(button2,BorderLayout.EAST);
lb1.setSize(50,20);
button2.addActionListener(this);
button2.setSize(50,20);
add(lbshow,BorderLayout.SOUTH);
setSize(450,200);
}
4.3类的实现
首先搭建Java程序框架。
打开Eclipse,新建名为GuessNumberGame的项目,然后新建名为GuessNumber的Java类。
GuessNumber加上合适的javadoc。
第一步:
随机数的产生
我们可以借助JavaAPI提供的Random类来产生一个随机数。
首先在main函数中加入以下三行代码:
//新建一个随机数产生器,然后生成一个1到100之间的整数。
num=(int)(Math.random()*100);
Stringanswer;
Scannerinput=newScanner(System.in);
Eclipse立即在错误语句处划出红线,把鼠标移动到红线上。
包(Package)的概念
JavaAPI中包含了极其丰富、类似于Random这样由Sun预先定义好的类。
不同包中可以有同名同姓的类,如果没有包的概念,就会遇到命名冲突问题。
此外,包还能进行安全控制。
Random类是在java.util这个包中。
可以手动在源程序顶部输入importjava.util.Random;语句来申明该程序将要使用java.util包中的Random类,然而有了Eclipse,就不用那么麻烦了—把光标移动到有红色波浪线的Random上,然后按下Ctrl+Shift+M,Eclipse会自动帮你完成导入的工作了,此时保存一下源代码。
第二句语句定义一个整型变量number来保存随机产生的整数,并且用直接初始化的方法把random产生的随机数赋给number变量。
第二步:
标准输入输出
标准输入输出(StandardI/O)是指可以被应用程序使用的信息流。
应用程序可以从标准输入(Standardinput)读取数据,向标准输出(Standardoutput)写数据,把出错信息发送到标准错误(Standarderror)。
通过输入输出,应用程序和应用程序之间可以被串联起来使用。
虽然标准输入输出是从UNIX发展出来的概念,在Windows中也广泛应用。
猜数字游戏主要用到标准输入,更明确一些,就是控制台输入。
相反,要从控制台输入,就需要用到System.in。
它是一个纯粹的输入流,而猜数字游戏主要是通过控制台获取玩家的字符输入,我们需要把它包装成一个BufferedReader。
第三步:
使用BorderLayout对图形界面的窗口进行设计。
5、源程序:
Packagea;
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.FlowLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.Box;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JTextField;
classWindowButtonextendsJFrameimplementsActionListener{/***
*/
privatestaticfinallongserialVersionUID=1L;
intnumber;
JTextFieldinputNumber;
JLabelfeedBack;
JButtonbuttonGetNumber,buttonEnter;
WindowButton(Strings){super("猜数字小游戏");
buttonGetNumber=newJButton("得到一个随机数");
feedBack=newJLabel("无反馈信息",JLabel.CENTER);
feedBack.setBackground(Color.green);
inputNumber=newJTextField("0",5);
buttonEnter=newJButton("确定");
buttonEnter.addActionListener(this);
buttonGetNumber.addActionListener(this);
buttonGetNumber.addActionListener(this);
BoxboxH1=Box.createHorizontalBox();
boxH1.add(newJLabel("获取1-100之间的随机数:
"));
boxH1.add(buttonGetNumber);
BoxboxH2=Box.createHorizontalBox();
boxH2.add(newJLabel("输入您的猜测:
"));
boxH2.add(inputNumber);
BoxboxH3=Box.createHorizontalBox();
boxH3.add(newJLabel("单击确定按钮:
"));
boxH3.add(buttonEnter);
BoxboxH4=Box.createHorizontalBox();
boxH4.add(newJLabel("反馈信息:
"));
boxH4.add(feedBack);
BoxbaseBox=Box.createVerticalBox();
baseBox.add(boxH1);
baseBox.add(boxH2);
baseBox.add(boxH3);
baseBox.add(boxH4);
Containercon=getContentPane();
con.setLayout(newFlowLayout());
con.add(baseBox);
con.validate();
setBounds(120,125,279,200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,150,150);
setVisible(true);
validate();}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==buttonGetNumber){
number=(int)(Math.random()*100)+1;}
elseif(e.getSource()==buttonEnter){
intguess=0;
try{
guess=Integer.parseInt(inputNumber.getText());
if(guess==number){
JOptionPane.showMessageDialog(this,"猜对了");}
elseif(guess>number){
JOptionPane.showMessageDialog(this,"猜大了");
inputNumber.setText(null);}
elseif(guessJOptionPane.showMessageDialog(this,"猜小了");
inputNumber.setText(null);}}
catch(NumberFormatExceptionevent){
JOptionPane.showMessageDialog(this,"请输入数字字符");}}
}}
publicclass猜数字游戏{
publicstaticvoidmain(Stringargs[]){
newWindowButton("猜数字小游戏");}
}
packageb;
importjava.util.Date;
importj