java面向对象基础(猜数字小游戏)
嗨!收到一张超级美丽的风景图,愿你每天都能顺心!
再谈猜数字小游戏
一、需要实现的效果
先想好小游戏需要实现的效果,由计算机随机生成一个1到100的整数,这个数是我们看不见的,而我们需要去猜这个数,如果猜错了会提示是猜大了还是猜小了,直到猜对了,游戏才会结束。
二、无界面效果,只实现功能(没有用面向对象的编程思想)
需要用到的有Random来控制生成随机数。由Scanner来控制键盘输入。就可以实现这个效果。话不多说,接下来看代码。
import java.util.Random;
import java.util.Scanner;
public class guess_figure {
public static void main(String[] args) {
//生成一个随机数
Random random = new Random();
//Random方法取头不取尾
int random_number = random.nextInt(101);
//Scanner输入流
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入一个0~100的随机整数");
int figure = scanner.nextInt();
if (figure < random_number) {
System.out.println("数字小了");
}
else if (figure == random_number) {
System.out.println("数字对了");
//释放scanner,避免占用空间
scanner.close();
break;
}
else {
System.out.println("数字大了");
}
}
}
}
看下终端的输出结果:
三、无界面效果,只实现功能(使用了面向对象的编程思想)
细心的小伙伴一定发现了,这串代码全是在主函数中实现的,这显然不合适java面向的编程思想,我们不妨创建一个类,在这个类中创建方法去使用我们要用的Scanner与Random。最后在主函数中创建一个对象,来调用这个类中的方法。话不多说,上代码。
import java.util.Random;
import java.util.Scanner;
public class guess_figure {
//private 封装数据成员
private Scanner scanner;
private Random random;
public guess_figure() {
this.scanner = new Scanner(System.in);
this.random = new Random();
}
public int scanner_int() {
return scanner.nextInt();
}
public int nextInt() {
return random.nextInt(101);
}
public void output() {
int random_number = nextInt();
while (true) {
System.out.println("请输入一个0~100的随机整数");
int figure = scanner_int();
if (figure < random_number) {
System.out.println("数字小了");
} else if (figure == random_number) {
System.out.println("数字对了");
// 释放scanner,避免占用空间
scanner.close();
break;
} else {
System.out.println("数字大了");
}
}
}
public static void main(String[] args) {
guess_figure shk = new guess_figure();
shk.output();
}
}
结果与上述终端代码大同小意。很明显,这串代码的主函数只有一个对象和一个方法。方便我们更加直观的理解代码,并且容易修改代码,假若我想要加大难度选择1到1000之间的一个数就只需要修改nextInt方法里将random.nextInt(101)修改成random.nextInt(1001),就可以实现。
接下来我们来一个模块一个模块的分析一下这串代码
public guess_figure() {
this.scanner = new Scanner(System.in);
this.random = new Random();
}
这串代码初始化了两个对象scanner和random
public int scanner_int() {
return scanner.nextInt();
}
定义一个方法,返回输入的值。
public int nextInt() {
return random.nextInt(101);
}
定义一个方法返回随机生成的数的值
public int nextInt() {
return random.nextInt(101);
}
public void output() {
int random_number = nextInt();
while (true) {
System.out.println("请输入一个0~100的随机整数");
int figure = scanner_int();
if (figure < random_number) {
System.out.println("数字小了");
} else if (figure == random_number) {
System.out.println("数字对了");
// 释放scanner,避免占用空间
scanner.close();
break;
} else {
System.out.println("数字大了");
}
}
}
这里就是最重要的输出部分了,整体思路和第一个代码差不多,只不过小小的调用了前面的两个方法。
四、带有界面的猜数字小游戏
前面两串代码看起来是不是挺简单的,接下来我们上升一点难度,制作一个界面,在界面当中去实现我们所需要的功能,那么首先我们要去考虑一下什么可以制作界面,其实不难想到,java图形界面设计的容器(JFrame)注:若对JFrame不了解的友友们可以去查百度或者搜API
我们来一步一步去完成。
1、创建界面
直接使用JFrame中的方法
setTitle("猜数字游戏");//设置标题
setSize(300,200);//设置窗口大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用来关闭窗口
2、由于我们的界面还需要按钮来确定,别急,我们可以直接使用以下代码来实现,使用我们的JPanel,用于创建模板。
JPanel panel=new JPanel();
setContentPane(panel);
创建了一个新的JPanel实例,他包含了按钮和文本框,接下来调用setContentPane()方法,内容面板为panel。
通常这两行代码用于创建初始化图形界面窗口内容,友友们可以记住他。
3、界面有了之后就要生成随机数,想必生成随机数怎么写大家已经烂熟于心了把
Random random = new Random();
int random_number = random.nextInt(101);
4、接下来就是整体的输出了,不过有所不同的是,我们不是使用Scanner去控制输入了,因为我们是在消息框中去输入。可以使用一下代码。所以我们可以使用JOptionPane,它当中的方法可以创建对话框并在对话框中输入
// 显示请求用户输入内容的问题消息对话框,它以 parentComponent 为父级。
String input = JOptionPane.showInputDialog("请输入一个0~100的随机整数");
// 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
int figure = Integer.parseInt(input);
JOptionPane可以非常方便地创建一些简单的对话框
showInputDialog输入对话框,提示要求输入某些信息。
由于接下来要输入的是一个整数,所以要将对话框中的字符型转换成整型。
5、判断是否猜对,又是经典的条件判断语句。这里要使用showMessageDialog方法来指定消息框内容是大了还是小了。
if (figure < random_number) {
//指定消息框内容
JOptionPane.showMessageDialog(null, "数字小了");
}
else if (figure == random_number) {
JOptionPane.showMessageDialog(null, "数字对了,你赢了");
break;
}
else {
JOptionPane.showMessageDialog(null, "数字大了");
}
6、最后一步,在主函数创建一个对象
guess_figure game = new guess_figure();
//设置对象可见,通过窗口显示
game.setVisible(true);
整体代码演示
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class guess_figure extends JFrame {
public guess_figure() {
//设置界面标题大小,以及关闭程序
setTitle("猜数字游戏");
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//方便更改JFrame中的内容面板,实现动态更行GUI界面
JPanel panel=new JPanel();
setContentPane(panel);
//生成随机数
Random random = new Random();
int random_number = random.nextInt(1001);
while (true) {
// 显示请求用户输入内容的问题消息对话框,它以 parentComponent 为父级。
String input = JOptionPane.showInputDialog("请输入一个0~1000的随机整数");
// 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
int figure = Integer.parseInt(input);
if (figure < random_number) {
//指定消息框内容
JOptionPane.showMessageDialog(null, "数字小了");
}
else if (figure == random_number) {
JOptionPane.showMessageDialog(null, "数字对了,你赢了");
break;
}
else {
JOptionPane.showMessageDialog(null, "数字大了");
}
}
}
public static void main(String[] args) {
guess_figure game = new guess_figure();
//设置对象可见,通过窗口显示
game.setVisible(true);
}
}
看看带有界面的效果展示
结语
本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言,如果给小伙伴们带来了一些收获,请留下你的小赞,你的点赞和关注将会成为博主分享每日学习的动力。