import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GuessNumber extends JFrame
{
int a=0;//位置和数值都正确的个数
int b=0;//数值正确位置不正确的个数
int count;//机会记数
int[] original = new int[4];//正确的四个数字
int[] guess = new int[4];//你猜的四个数字
private JTextField tf_1;//定义一个文本区域–用户输入区
private JLabel lb_1,lb_2;//定义两个标签–信息显示区
private JButton btn_1;//游戏按钮
private void newi()
{ //产生四个不相同的数
for(int i=0;i<=3;i++)
{
original[i] = (int)(Math.random()*10);
for(int j = 0;j<=i-1;j++)
{
if((i!=j)&&(original[i]==original[j]))
{
i=i-1;
break;
}
}
}
//便于测试
//for(int i=0;i<=3;i++)
//System.out.println(original[i]);
}
public GuessNumber()//构造方法
{
super("猜数字");
Container container=getContentPane();//创建当前容器(Frame)引用
container.setLayout(new FlowLayout());//设置布局管理器为FlowLayout
tf_1=new JTextField(4);
container.add(tf_1);
lb_1=new JLabel("位置和数值都正确的个数:");
container.add(lb_1);
lb_2=new JLabel("数值正确位置不正确的个数:");
container.add(lb_2);
btn_1=new JButton("Play");
container.add(btn_1);
ActionHandler hnd=new ActionHandler();
btn_1.addActionListener(hnd);//添加按钮到事件监听器
setSize(500,80);
setVisible(true);
newi();//产生四个随机数字
}
//事件监听器
private class ActionHandler implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
try{
//得到并测试每一个数
//按位取出四个数字1
int number = Integer.parseInt(tf_1.getText());
guess[0] = number/1000;
guess[1] = number/100 - 10 * guess[0];
guess[2] = number/10 - 100 * guess[0] - 10*guess[1];
guess[3] = number%10;
//按位取出四个数字2
//for (int i=0;i<4;i++)
//guess[i]=Integer.parseInt(String.valueOf(tf_1.getText().charAt(i)));
for(int i = 0;i<=3;i++)
{
for(int j = 0;j<=3;j++)
{
if(guess[i]==original[j])
{
if(i==j)a++;
else b++;
}
}
}
if(a==4)
{//全部正确
lb_1.setText("You are so clever! You win.");
lb_2.setText("重新开始了");
System.out.println("You are so clever! You win.");
count=0;//计数器清0
newi();
}
else
{//还未全部正确
for(int i = 0;i<=3;i++)
{
System.out.print(guess[i]);
}
System.out.println(" "+a+"A"+b+"B");
lb_1.setText(""+a+"A"+b+"B"+" 位置和数值都正确的个数:"+a);
lb_2.setText("数值正确位置不正确的个数:"+b);
}
a=0;
b=0;
tf_1.setText("");//清空文本区域
count+=1;//计数器+1
if (count == 7){//超过7次重新开始
lb_1.setText("失败了重新来吧");
lb_2.setText("已经开始了啊!加油!");
System.out.println("正确的数字是:");
for(int i=0;i<=3;i++)
System.out.println(original[i]);
newi();
count=0;//计数器清0
}
} catch(Exception e)
{//捕获例外
System.out.println("Something is wrong!");
System.exit(0);}
}
}
public static void main(String[] args)
{
GuessNumber p=new GuessNumber();//开始游戏
p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
评论