zoukankan      html  css  js  c++  java
  • 猜数游戏代码--图形界面

    猜数游戏:1:由系统随机产生一个数字,由用户猜,并给出偏大偏小的信息,直到猜出正确答案,系统给出猜的次数

                        2:共分为三个等级,等级一为一位数,等级二为两位数,等级三为三位数

    注意:要根据用户的不同的错误输入给出相应的处理方法,比如输入的不是数字,选择等级一而输入了两位数等等

    效果图:

             

    代码:

    package game;
    
    import java.awt.*;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.*;
    import java.util.*;
    
    
    public class GuessNumber extends JFrame {
    	
    	JMenuBar mb;          //构造菜单栏
    	JMenu mFile,mOption,mHelp;          //菜单选项,(文件,选项,帮助)
    	JMenuItem mExit,mCopyright,mInformation;         //菜单的下拉选项  (退出,版权信息,游戏信息)
    	Container c;                        //定义一个容器
    	JPanel Input;                       //创建面板
    	JLabel nanDu;                       //创建标签
    	JRadioButton chu;                   //创建三个单选按钮,选择难度
    	JRadioButton zhong;
    	JRadioButton gao;
    	ButtonGroup bg;                    //创建按钮组
    	JButton bOk;
    	JLabel lNum;                        
    	JTextField tf;                     //创建文本框
    	JButton cc;
    	JButton again;
    	int number=0;
    	int count=0;
    	int N=0;
    	int a=0,b=0;
    	private void init(){
    		  //1、 得到内容网格,并设置布局为BorderLayout,所有组件都放到内容网格上
    		 c=this.getContentPane();       //获得当前窗口的内容网格
    		 c.setLayout(new BorderLayout());    //所有组件都放到内容网格上
    		 
    		   //2 、初始化菜单,并把菜单放到内容网格的最上边
    		 mb=new JMenuBar();
    		 mFile=new JMenu("文件(F)");
    		 mOption=new JMenu("选项(O)");
    		 mHelp=new JMenu("帮助(H)");
    		 mb.add(mFile);mb.add(mOption);mb.add(mHelp);
    		 mExit=new JMenuItem("退出(E)");
    		 mFile.add(mExit);
    		 mInformation=new JMenuItem("游戏信息");
    		 mCopyright=new JMenuItem("版权声明");
    		 mHelp.add(mInformation);mHelp.addSeparator();mHelp.add(mCopyright);    
    		 c.add(mb,BorderLayout.NORTH);     //将菜单添加到容器最上边
    		 
    		 //版权声明的监听器
    		 mCopyright.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent e){
    					JOptionPane.showMessageDialog(null, "本游戏由暗伤无痕出品", "版权声明", JOptionPane.INFORMATION_MESSAGE);
    				}
    			});
    		 //游戏信息监听器
    		mInformation.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent e){
    					JOptionPane.showMessageDialog(null, "1.  系统会随机产生一个数,你可以输入你脑海中的一个数字,
     系统会作出比较,并给出偏大或偏小的信息,然后继续猜测 ,"
    							+ " 
    直至猜出系统产生的数
    "
    							+ "2.  可以选择难度,初级:一位数   中级:两位数  高级:三位数
    "
    							+ "3.  游戏结束,将给出所用次数
    ", "游戏信息", JOptionPane.INFORMATION_MESSAGE);
    				}
    			});
    		 //退出选项的监听器
    		 mExit.addActionListener(new ActionListener(){
    				public void actionPerformed(ActionEvent e){
    					GuessNumber.this.dispose();
    				}
    			});
    		//3、创建面板Input,放在内容网格的中间,用于放置主显示区的组件,布局为按照绝对位置存放组件
    		 Input=new JPanel();Input.setLayout(null);
    		 nanDu=new JLabel("游戏等级");
    		 chu=new JRadioButton("初级",true);
    		 zhong=new JRadioButton("中级");
    		 gao=new JRadioButton("高级");
    		 bg=new ButtonGroup();
    		 bg.add(chu);bg.add(zhong);bg.add(gao);             //将单选按钮添加到组中
    		 Input.add(nanDu);Input.add(chu); Input.add(zhong); Input.add(gao);     //将标签及单选按钮添加到Input面板上     
    		 nanDu.setBounds(10,15,60,20);
    		 chu.setBounds(90,15,60,20); zhong.setBounds(150,15,60,20);gao.setBounds(210,15,60,20);
    		 //确定按钮
    		 bOk=new JButton("确定");
    		 Input.add(bOk);                   //将确定按钮添加到Input面板上     
    		 bOk.setBounds(300,15,60,20);;
    		 //"确定"按钮的监听器,接收等级
    		 bOk.addActionListener(new ActionListener(){
    			 public void actionPerformed(ActionEvent e){
    				if(chu.isSelected()){
    					number=chu();
    				    N=1;	
    				}
    				else if(zhong.isSelected()){
    					number=zhong();
    				    N=2;	
    				}
    				else {
    					number=gao();
    				    N=3;	
    				}
    				tf.requestFocus(); 	
    				}
    		 });
    		
    		 
    		 //4.创建输入的文本框,标签,提交按钮
    		 lNum=new JLabel("你能猜到我心中想的数字吗?");
    		 Input.add(lNum);
    		 lNum.setBounds(10,80,180,20);
    		 tf=new JTextField();
    		 Input.add(tf);
    		 tf.setBounds(210,80,50,20);
    		 
    		  //我猜猜
    		 cc=new JButton("我要猜猜");
    		 Input.add(cc);
    		 cc.setBounds(290,68,86,20);
    		 //“我要猜猜”按钮的监听器
    		 cc.addActionListener(new ActionListener(){
    			 public void actionPerformed(ActionEvent e){
    				 int a=0,b=0;
    				 count++;
    				 //判断是否为空
    				if(tf.getText().trim().equals("")){                            
    					JOptionPane.showMessageDialog(null, "请输入数字");return;
    				}
    				
    			else{
    				//判断输入的是否是数字
    				char[] c=tf.getText().toCharArray();          //将字符串转换为字符数组
    				for (int i=0;i<c.length;i++) {
    					if (c[i]>='0'&&c[i]<='9') {
    						a++;
    						
    					} 
    					else {
    						b++;
    					}
    				}
    				if(a==c.length){
    					if(c.length!=N){
    						JOptionPane.showMessageDialog(null, "文盲,输错了,重输");
    					     tf.setText("");
    					     tf.requestFocus(); 
    					     a=0;b=0;
    					}
    					     else{
    					    		int n=Integer.parseInt(tf.getText().trim());
    								if(n>number){
    									JOptionPane.showMessageDialog(null, "你输入的数偏大了,再试试");
    									tf.setText("");
    									tf.requestFocus();                 //文本框获取焦点
    								}
    								else if(n<number){
    									JOptionPane.showMessageDialog(null, "你输入的数偏小了,再试试");
    									tf.setText("");
    									tf.requestFocus(); 
    								}
    								if(n==number){
    									switch(count){
    									case 1:JOptionPane.showMessageDialog(null, "大神啊!你会读心术吗?一次就猜对了");
    									        break;
    									case 2:
    									case 3:
    									case 4:JOptionPane.showMessageDialog(null, "不错不错,挺牛啊,这么快就猜到了
    "
    											+ "你一共猜了"+count+"次");break;
    									case 5:
    									case 6:
    									case 7:
    									case 8:
    									case 9:JOptionPane.showMessageDialog(null, "一般般啊!继续努力
    "+ "你一共猜了"+count+"次");break;
    									default:JOptionPane.showMessageDialog(null, "屌丝,猜这么多次才猜到
    "+"你一共猜了"+count+"次");break;
    									}
    									count=0;
    									tf.setText("");
    									tf.requestFocus(); 
    								}
    					     }
    				}
    				else{
    					JOptionPane.showMessageDialog(null, "嗨,请输入数字");
    					tf.setText("");
    					tf.requestFocus(); 
    					a=0;b=0;
    				}
     
    				}
    			 }
    		 });
    		 
    		 //重新开始
    		 again=new JButton("重新开始");
    		 Input.add(again);
    		 again.setBounds(290,98,86,20);
    		 again.addActionListener(new ActionListener(){
    			 public void actionPerformed(ActionEvent e){
    				 tf.setText("");
    				 count=0;
    				 if(chu.isSelected())
    						number=chu();
    					else if(zhong.isSelected())
    						number=zhong();
    					else 
    						number=gao();
    						
    				 tf.requestFocus(); 	
    			 } 
    		 });
    		 
    		 c.add(Input,BorderLayout.CENTER);                   //将Input面板添加到容器中
    		 this.setSize(400,300);
    		 this.setVisible(true);
    		 
    		 
    		 
    		 
    		 
    	}
    	public GuessNumber(String title){
    		super(title);
    		init();
    	}
    	public int chu(){
    		Random random=new Random();
    		return random.nextInt(10);
    	}
    	public int zhong(){
    		Random random=new Random();
    		int n=random.nextInt(100);
    		while(n<10){
    			n=random.nextInt(100);
    		}
    		return n;
    	}
    	public int gao(){
    		Random random=new Random();
    		int n=random.nextInt(1000);
    		while(n<100){
    			n=random.nextInt(1000);
    		}
    		return n;
    	}
    	
    	public static void main(String[] args){
    		GuessNumber gn=new GuessNumber("猜数游戏");
    	}
    	
    	
    
    }
    

  • 相关阅读:
    POJ 3069 Saruman's Army
    POJ 3617 Best Cow Line
    Part5核心初始化_lesson2---设置svc模式
    Part5核心初始化_lesson1---异常向量表
    Part4_lesson4---Bootloader架构设计
    Part4_lesson3---U-Boot工作流程分析
    zigbee--绑定
    Part4_lesson2---ARM处理器这个硬件启动流程分析
    Part4_lesson1---Bootloader设计蓝图
    zigbee之MAC地址发送
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3752264.html
Copyright © 2011-2022 走看看