用java语言编写石头剪刀布获胜法_石头剪刀布小游戏(Java语言实现)-轻松一刻...

本文介绍了如何使用Java编程实现石头剪刀布游戏。通过创建用户、电脑和游戏类,模拟人与电脑之间的对决。电脑的选择通过随机数生成,用户输入通过Scanner获取。游戏采用五局三胜制,若平局则询问用户是否继续。
摘要由CSDN通过智能技术生成

小时候大家都玩过石头剪刀布吧,相信大家对游戏规则都已经了然入心了吧,如果有不知道的我还是说一下吧:剪刀和石头,出石头赢了, 石头和布,出布的赢了,剪刀和布,出剪刀的赢了。

好了游戏规则就不多说了,直接说游戏实现:

我们模拟人与电脑玩剪刀石头布的游戏,人的输入,由 Scanner 键盘端输入,电脑由随机数生成。

我用面向对象思想进行设计:

主体代码如下:

public class GameComputerOOP {

public static void main(String[] args) {

Computer cmp = new Computer();

User user = new User();

Game game = new Game();

game.play(user, cmp);

}

}

声明了用户实例和电脑实例以及游戏实例,最终从游戏实例中返回我们想要的结果。

在game.play()中要传入两个参数,分别是用户和电脑的。

晒出关键代码:

电脑类

class Computer{

public String choose(){

int random;

int random1;

random = (int) (Math.random()*10)%2;

random1 = (int) (Math.random()*10)%2;

random = random + random1;

String[] computer = {"剪刀","石头","布"};

return computer[random];

}

}

这是电脑类,有一个 choose 方法,返回值为 String类型,两个随机数,每个随机数生成结果在(0-1)之间,这样做的目的在于,让两个数加起来随机在0-2之内。为什么这样做呢? 因为我在下面声明了一个 字符型数组数组下标只有 0-2, 这样就可以实现电脑随机出 剪刀,石头,布的需求了。

用户类:

class User{

public String choose(String n){

return n;

}

用户类里面有个方法:用户这边是用户从键盘输入,所以,输入以后,从方法返回相应的结果就好了。

游戏类:

class Game{

public void play(User user, Computer cmp){

Scanner input = new Scanner(System.in);

int bout=1;

int flag = 1;

String userChoose;

String compChoose = null;

int computerCount = 0;

int userCount = 0;

boolean end = true;

while(end){

while(bout < 6){

System.out.println("当前是第"+ bout + "回合");

System.out.println("请在剪刀、石头、布内选择你的输入:");

userChoose = input.next();

userChoose = user.choose(userChoose);

compChoose =cmp.choose();

System.out.println("玩家选择了:"+userChoose);

System.out.println("电脑选择了:"+compChoose);

int countUser=0;

int countComputer =0;

//System.out.println(user.equals(computer[random])); // 测试代码

//System.out.println(user == "剪刀");

//System.out.println(user.equals("剪刀") & computer.equals("石头")); // 测试代码

if(userChoose.equals(compChoose)){

System.out.println("本局打成平手");

}else if(userChoose.equals("剪刀") && compChoose.equals("石头") ){

//System.out.println("电脑赢了");

countComputer++;

computerCount++;

System.out.println(computerCount);

}else if(userChoose.equals("石头") && compChoose.equals("布")){

//System.out.println("电脑赢了");

countComputer++;

computerCount++;

}else if(userChoose.equals("布") && compChoose.equals("剪刀")){

//System.out.println("电脑赢了");

countComputer++;

computerCount++;

}else if(userChoose.equals("石头") && compChoose.equals("剪刀")){

//System.out.println("电脑赢了");

countUser++;

userCount++;

}else if(userChoose.equals("布") && compChoose.equals("石头")){

//System.out.println("电脑赢了");

countUser++;

userCount++;

}else if(userChoose.equals("剪刀") && compChoose.equals("布")){

//System.out.println("电脑赢了");

countUser++;

userCount++;

}

else {

System.out.println("对不起,系统正在升级,请稍后重试!->1");

}

if(countUser>countComputer){

System.out.println("本局用户胜利了,当前比分为:"+"用户:"+userCount+" VS " + "电脑:"+computerCount);

}else if(countUser

System.out.println("本局电脑胜利了,当前比分为:"+"用户:"+userCount+" VS " + "电脑:"+computerCount);

}else if(countUser==countComputer){

System.out.println("本局平手,当前比分为:"+"用户:"+userCount+" VS " + "电脑:"+computerCount);

}else{

System.out.println("对不起,系统正在升级,请稍后重试 ->2");

}

flag++;

bout++;

}

System.out.println();

System.out.println();

System.out.println();

System.out.println();

System.out.println();

System.out.println();

System.out.println("**************************公布游戏最终结果*********************************");

if(userCount>computerCount){

System.out.println("用户最后胜利,最终的比分为:"+"用户 :"+userCount+" VS " + "电脑:"+computerCount);

end = false;

}else if(userCount

System.out.println("电脑最后胜利,最终的比分为:"+"用户: "+userCount+" VS " + "电脑:"+computerCount);

end = false;

}else if(userCount==computerCount){

System.out.println("平手,本回合最终的比分为:"+"用户: "+userCount+" VS " + "电脑:"+computerCount);

System.out.println("请输入您是否还想继续加时赛:是:请输入:yes 否:的话请输入 : no :");

String select = input.next();

if(select.equals("no")){

end=false;

}

bout++;

}else{

System.out.println("对不起,系统正在升级,请稍后重试 ->3");

}

}

}

}

游戏类的主体实现:

两个while循环,第一个while循环用来处理平局结果的,当游戏进行五局三胜以后,并没有分出胜负,则需要用户决定是否继续进行加时赛(加场次比赛)。我用了一个 布尔类型 end 作为结束标记,如果用户和电脑打成平手,则会让用户输入是否依然继续比赛,当用户输入“Yes”时,则继续进行比赛,bout(回合的意思)++, 这样会让第二个while循环,继续循环。这样就实现了增加场次的比赛机制。如果用户不想继续比赛,则让end 置为 false,则结束循环。

第二个while 循环进行比赛场次控制,有两种计数;一种是 computerCount ,userCount,这两个是用来控制用户总回合数的计数,比如用户五局之内赢了三次这个是要用这 userCount来 体现,电脑那边则用 computerCount来体现。

还有一个就是countUser,countComputer 这个是用来统计每局内的次数,每次循环要进行重新赋值。内容比较用equals方法。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值