首页 理论教育 使用IDEA模拟石头剪刀布游戏

使用IDEA模拟石头剪刀布游戏

时间:2023-10-18 理论教育 版权反馈
【摘要】:该游戏分为两种角色:玩家和电脑,玩家通过键盘输入“石头”或“剪刀”或“布”,电脑随机产生“石头”或“剪刀”或“布”,然后比较玩家输入的和电脑随机产生的两个值,给出比赛结果。第5~9行代码使用switch语句,将随机产生的整数转换成“石头”“剪刀”“布”的字符串。程序运行后出现提示语句:请输入石头、剪刀或布,然后输入石头,回车输出“电脑赢了”,程序结束了。else语句,根据a的值来判断是继续游戏,还是退出游戏。

使用IDEA模拟石头剪刀布游戏

【例2-2】 该游戏分为两种角色:玩家和电脑,玩家通过键盘输入“石头”或“剪刀”或“布”,电脑随机产生“石头”或“剪刀”或“布”,然后比较玩家输入的和电脑随机产生的两个值,给出比赛结果。

首先,创建玩家角色。我们用Player 类代表玩家,该类有player Value 属性,有playerScanner方法。代码如下:

第6行代码使用了Java提供的Scanner类,该类有next()方法、nextInt()方法、next Double()方法,分别用于接收从键盘输入的字符串、整数和小数。第7行代码使用了Scanner类中的next()方法用以接收从键盘输入的字符串,并将该字符串赋值给player Value变量。另外,使用Java提供的Scanner类,必须导入Scanner类所在的包,所以就出现了第1行代码。

然后,创建电脑角色。我们用Computer类代表电脑,该类有computer Value 属性及computerScanner方法。代码如下:

第4行代码中使用了Java提供的Math类中的random 方法。Math.random()随机产生0~1的浮点数,Math.random()*(m-n+1)+1随机产生的是[n,m]的浮点数,其中n、m 是指整数。(int)(Math.random()*(m-n+1)+1)经过将Math.random()*(m-n+1)+1随机产生的浮点数强制转换为整数,(int)(Math.random()*(m-n+1)+1)随机产生的就是[n,m]的整数。故第4行代码随机产生了1、2、3中的任意一个整数。第5~9行代码使用switch语句,将随机产生的整数转换成“石头”“剪刀”“布”的字符串。

接下来,创建比较类。我们用Compare类来代表比较,该类有result属性及compare方法。代码如下:

第3行代码的compare方法有两个参数,分别代表玩家输入和电脑输入的值。第4~12行代码使用了if…else if…else语句,比较两值,返回结果。(www.xing528.com)

最后,创建测试类Example2_2,代码如下:

上述代码的运行结果为:

Example2_2类为含有main方法的测试类,第3行代码创建一个玩家player,第4行代码创建一个电脑computer,第5行代码创建一个比较对象compare,第6行和第7行代码通过对象调用方法得到player Value和computer Value,第7行代码通过computer对象调用方法得到比较结果。

程序运行后出现提示语句:请输入石头、剪刀或布,然后输入石头,回车输出“电脑赢了”,程序结束了。如果还想继续玩游戏,只能重新运行Example2_2,这样很麻烦,有没有办法可以不重新运行项目,还可以继续玩游戏呢?当然有,这就必须使用循环语句了。将Example2_2.java内容修改为Example2_2(1).java,代码如下:

上述代码的运行结果如下:

第7~21行代码为一条while语句,该语句的循环条件为true,直到执行到第18行代码游戏才会退出,否则游戏会一直继续。第4、5、6行代码分别创建了玩家、电脑、比较对象。第8、9、10、11行代码分别获得玩家输入、电脑输入进行比较,并输出比较结果,第12行代码,输出提示语句,如果想继续玩游戏,请输入1,退出请输入0。第14行代码接收从键盘输入的整数并存储到变量a中,第15~20行是一个if…else if…else语句,根据a的值来判断是继续游戏,还是退出游戏。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈