学习 · 2005年4月5日 0

图形用户界面的猜数字小游戏

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); } }