java GUI 猜数字游戏

界面
 1 package com.lovo.hilo;
 2
 3 import java.awt.Container;
 4 import java.awt.GridLayout;
 5 import java.awt.Toolkit;
 6
 7 import javax.swing.JFrame;
 8
 9 public class HiLoFrame extends JFrame {
10
11     private Container contentP;
12
13     private UpPanel upP;
14
15     private MidPanel mdP;
16
17     private DownPanel dnP;
18
19     private int randomNum;
20
21     public HiLoFrame() {
22         this.randomNum = (int)(Math.random() * 50 + 50);
23         System.out.println(this.randomNum);
24         // 工具箱类--ToolKit
25         Toolkit tk = Toolkit.getDefaultToolkit();
26         // 设置窗体大小
27         this.setSize(320, 290);
28         // 设置窗体位置
29         int screenW = (int) tk.getScreenSize().getWidth();// 得到屏幕宽
30         int screenH = (int) tk.getScreenSize().getHeight();// 得到屏幕高
31         this.setLocation((screenW - 320) / 2, (screenH - 290) / 2);
32         // 设置窗体大小不可更改
33         this.setResizable(true);
34         // 设置窗体图标
35         this.setIconImage(tk.createImage("img/hp.JPG"));
36         // 设置窗体的标题
37         this.setTitle("HiLo游戏");
38         // 设置窗体关闭即为关闭程序
39         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
40         // 设置窗体内容面板上所有的东西
41         this.addContent();
42         // 设置窗体可见
43         this.setVisible(true);
44     }
45
46
47
48     private void addContent() {
49         // TODO Auto-generated method stub
50         this.contentP = this.getContentPane();
51         this.contentP.setLayout(new GridLayout(3, 1));
52
53         this.upP = new UpPanel();
54         this.mdP = new MidPanel();
55         this.dnP = new DownPanel(this);
56
57         this.contentP.add(this.upP);
58         this.contentP.add(this.mdP);
59         this.contentP.add(this.dnP);
60     }
61
62     public UpPanel getUpP() {
63         return upP;
64     }
65
66     public MidPanel getMdP() {
67         return mdP;
68     }
69
70     public DownPanel getDnP() {
71         return dnP;
72     }
73
74     public int getRandomNum() {
75         return randomNum;
76     }
77
78     public void setRandomNum(int randomNum) {
79         this.randomNum = randomNum;
80     }
81
82 }

内部的功能
 1 package com.lovo.hilo;
 2
 3 import java.awt.Color;
 4
 5 import javax.swing.BorderFactory;
 6 import javax.swing.JPanel;
 7 import javax.swing.JTextField;
 8
 9 //JPanel的默认布局管理是流布局
10 public class UpPanel extends JPanel{
11
12     private JTextField inputTxt;
13
14     public UpPanel(){
15         this.setBackground(Color.WHITE);
16         this.setBorder(BorderFactory.createTitledBorder("Your Guess"));
17
18         this.setLayout(null);
19         this.inputTxt = new JTextField();
20         this.inputTxt.setBounds(90, 33, 140,25);
21         this.add(this.inputTxt);
22     }
23
24     public JTextField getInputTxt() {
25         return inputTxt;
26     }
27
28     public void setInputTxt(JTextField inputTxt) {
29         this.inputTxt = inputTxt;
30     }
31 }
 1 package com.lovo.hilo;
 2
 3 import java.awt.Color;
 4 import java.awt.FlowLayout;
 5 import java.awt.Font;
 6
 7 import javax.swing.BorderFactory;
 8 import javax.swing.JLabel;
 9 import javax.swing.JPanel;
10
11 public class MidPanel extends JPanel {
12
13     private JLabel msgLab;
14
15     public MidPanel(){
16         this.setBackground(Color.WHITE);
17         this.setLayout(new FlowLayout());
18         this.setBorder(BorderFactory.createTitledBorder("Hint"));
19
20         this.msgLab = new JLabel("Let‘s Play HiLo");
21         this.msgLab.setFont(new Font("微软雅黑",Font.PLAIN,15));
22         this.add(this.msgLab);
23     }
24
25     public JLabel getMsgLab() {
26         return msgLab;
27     }
28
29     public void setMsgLab(JLabel msgLab) {
30         this.msgLab = msgLab;
31     }
32
33 }
 1 package com.lovo.hilo;
 2
 3 import java.awt.BorderLayout;
 4 import java.awt.Color;
 5
 6 import javax.swing.JPanel;
 7
 8 public class DownPanel extends JPanel {
 9
10     private ButtonPanel btnP;
11
12     public DownPanel(HiLoFrame frame){
13         this.setBackground(Color.WHITE);
14         this.setLayout(new BorderLayout());
15
16         this.btnP = new ButtonPanel(frame);
17         this.add(this.btnP,BorderLayout.SOUTH);
18     }
19
20     public ButtonPanel getBtnP() {
21         return btnP;
22     }
23
24     public void setBtnP(ButtonPanel btnP) {
25         this.btnP = btnP;
26     }
27
28 }
 1 package com.lovo.hilo;
 2
 3 import java.awt.Button;
 4 import java.awt.Color;
 5 import java.awt.FlowLayout;
 6 import java.awt.event.ActionEvent;
 7 import java.awt.event.ActionListener;
 8
 9 import javax.swing.JButton;
10 import javax.swing.JLabel;
11 import javax.swing.JPanel;
12
13 public class ButtonPanel extends JPanel {
14
15     private JButton enterBtn;
16
17     private JButton replayBtn;
18
19     private int i;
20
21     private HiLoFrame frame;
22
23     //匿名内部类中不能访问外部类的局部变量,只能访问全局变量或常量
24     //这里的形参是一个欺骗编译器的动作
25     public ButtonPanel( HiLoFrame frame){
26         this.frame=frame;
27         this.setBackground(Color.WHITE);
28         this.setLayout(new FlowLayout());
29
30         this.enterBtn = new JButton("确定");
31         this.replayBtn = new JButton("重玩");
32         this.replayBtn.setEnabled(false);
33         this.enterBtn.setEnabled(true);
34         this.enterBtn.addActionListener(new ActionListener() {
35             @Override
36             public void actionPerformed(ActionEvent e) {
37                 // TODO Auto-generated method stub
38                 //1、取得输入的整数
39                 String inputStr = ButtonPanel.this.frame.getUpP().getInputTxt().getText();
40                 JLabel msgLab =ButtonPanel.this. frame.getMdP().getMsgLab();
41                 //2、取得随机数
42                 int randomNum =ButtonPanel.this. frame.getRandomNum();
43                 String msg = "";
44                 if(inputStr.matches("[5-9][0-9]")){
45                     int inputNum = Integer.parseInt(inputStr);
46                     //3、比较
47                     if(inputNum > randomNum){
48                         msg = "不好意思,你猜大了!";
49                         msgLab.setText(msg+"你还有"+(6-i)+"次机会");
50                     }else if(inputNum < randomNum){
51                         msg = "不好意思,你猜小了!";
52                         msgLab.setText(msg+"你还有"+(6-i)+"次机会");
53                     }else{
54                         msg = "恭喜你猜对了!";
55                         msgLab.setText(msg);
56                             ButtonPanel.this.replayBtn.setEnabled(true);
57                             ButtonPanel.this.enterBtn.setEnabled(false);
58                             i=0;
59                     }
60
61                 }else{
62                     msg = "请输入50到99的有效数字!";
63                     msgLab.setText(msg+"你还有"+(7-i)+"次机会");
64                 }
65                 i++;
66
67                 if(i==7){
68                     ButtonPanel.this.replayBtn.setEnabled(true);
69                     ButtonPanel.this.enterBtn.setEnabled(false);
70                     i=0;
71                 }
72             }
73         });
74
75         this.replayBtn.addActionListener(new ActionListener(){
76
77             @Override
78             public void actionPerformed(ActionEvent e) {
79                 // TODO Auto-generated method stub
80                 ButtonPanel.this.frame.setRandomNum((int)(Math.random() * 50 + 50));
81                 ButtonPanel.this.replayBtn.setEnabled(false);
82                 ButtonPanel.this.enterBtn.setEnabled(true);
83                 i=0;
84                 System.out.println(ButtonPanel.this.frame.getRandomNum());
85             }
86
87         });
88         this.add(this.enterBtn);
89         this.add(this.replayBtn);
90
91     }
92
93 }
 1 package com.lovo.test;
 2
 3
 4 import com.lovo.cardlayout.CardFrame;
 5 import com.lovo.event.ColorFrame;
 6 import com.lovo.frame.BorderFrame;
 7 import com.lovo.frame.FlowFrame;
 8 import com.lovo.frame.GridFrame;
 9 import com.lovo.frame.MyFrame;
10 import com.lovo.hilo.HiLoFrame;
11 import com.lovo.qq.QQFrame;
12
13 public class TestMain {
14
15     public static void main(String[] args) {
16         // TODO Auto-generated method stub
17
18         new HiLoFrame();
19
20     }
21
22 }

  

时间: 2024-10-01 03:56:11

java GUI 猜数字游戏的相关文章

python GUI 猜数字游戏

# -*- coding:utf-8 -*- import easygui,random status = easygui.buttonbox("这是一个猜数字游戏,点击开始进行游戏,点击退出关闭游戏.", choices = ["开始","退出"]) if status == "开始":     s_number = random.randint(1,100)     count = 0     u_number = 0  

java之猜数字游戏

一.要求:程序运行时 1.提示用户输入数字 2.如果猜中则输出猜对了 3.如果没猜中则提示数字大了或者小了,并提示继续猜,直到猜中 4.用户按输入0则退出游戏 5.用while循环写 6.猜的数字随机生成在1到100之间 二.代码 import java.util.Scanner class Guessing{     public static void main(){         Scanner sc = new Scanner(System.in);         int num =

Java完成简单猜数字游戏

猜数字游戏v1.0 实现了自定义区间的游戏玩法,并能在游戏结束后继续下一轮,这是其他程序没有兼顾的,希望有帮助,最后也希望有人愿意帮我解决代码优化的问题,谢谢. /*需求: *1. 完成一个猜数字游戏,数据区间由玩家自定义,游戏开始后针对玩家输入的值,给出一个缩小版的指导区间: *2. 结束一轮游戏后,玩家可以选择是否继续玩耍: *思路: *1. 创建一个指定区间int类型的随机数,区间由玩家指定: *2. 针对玩家猜的数据,比较后给出判断,大了.小了可以给出一个指导区间,直到猜对为止,记录猜的

java web 程序---猜数字游戏

思路:1.第一个是随机产生的数字,告诉我们去猜  cai.jsp 2.第二个是一个form表单,提交按钮后,将连接到验证页面 test1.jsp 3.第三个是比较猜的数和随机数.对了,提示再玩一次,不对则继续猜.用一个超链接 test2.jsp 老师的思路越来越难搞了.怎么写啊,用到hashMap时候 cai.jsp ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <%@ page lang

猜数字游戏的Java小程序

/*猜数字游戏:1,产生随机数.2,获取键盘录入.3,将录入数据变成数字,和随机数比较. 给出提示信息.4,重复这个过程,如果猜中,程序就结束.注意:对于输入1~100以外的数字,,以及非数字要给出提示. */import java.io.*;import java.util.*;class GuessNumber{ private int ranNum; GuessNumber() {  Random r = new Random();  ranNum = r.nextInt(100)+1;/

实验三 Java猜数字游戏开发

课程:Java实验   班级:201352     姓名:程涵  学号:20135210 成绩:             指导教师:娄佳鹏   实验日期:15.06.03 实验密级:         预习程度:             实验时间: 仪器组次:          必修/选修:选修          实验序号:3 实验名称:     Java猜数字游戏开发 (姬梦馨.程涵小组) 一.实验目的与要求: 通过编写Java的应用系统综合实例——猜数字游戏,总结.回顾和实践面向对象的编程思想

原创Android游戏--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用

--------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添加的功能,以及一些可改进的地方,于是准备继续完善此游戏,顺便学Android了. 本次更新信息如下: 1.改正了随机数生成算法,更正了不能产生数字'9'的bug 2.增加了数据存储与IO的内容,使用了SharedPreferences保存数据 3.保存数据为: 总盘数,猜中的盘数 4.使用了Simp

猜数字游戏

功能:产生一个随机数,猜随机数的大小,机会只有3次,并且如果猜错了,焦点自动返回.使用到的接口:ActionListener FocusListener; 代码: package com.niit.guessgame; import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.

LeetCode:Bulls and Cows - 猜数字游戏

1.题目名称 Bulls and Cows(猜数字游戏) 2.题目地址 https://leetcode.com/problems/bulls-and-cows/ 3.题目内容 英文:You are playing the following Bulls and Cows game with your friend: You write a 4-digit secret number and ask your friend to guess it, each time your friend g