使用java实现猜拳小游戏

使用Java实现猜拳小游戏

概述

在本篇攻略中,我们将使用Java编写一个猜拳小游戏,让玩家与计算机进行猜拳对抗。猜拳规则如下:

  • 剪刀(scissors)败给石头(rock),胜过布(paper)
  • 石头(rock)胜过剪刀(scissors),败给布(paper)
  • 布(paper)胜过石头(rock),败给剪刀(scissors)

游戏结束后,将统计双方获胜的次数,并输出游戏结果。

步骤

  1. 创建一个Java项目,并新建一个名为Game的类

  2. 在Game类中定义常量rock、paper、scissors,分别代表石头、布和剪刀。代码如下:

public class Game {
    private final int ROCK = 0;
    private final int PAPER = 1;
    private final int SCISSORS = 2;
}
  1. 在Game类中添加一个play方法,该方法将用于处理猜拳过程。既然是与计算机进行对抗,那么我们必须随机产生计算机的出拳,该如何实现呢?我们可以使用Java中的Random类,使用其nextInt方法随机生成0、1、2三个数字,依次代表石头、布和剪刀。代码如下:
import java.util.Random;

public class Game {
    private final int ROCK = 0;
    private final int PAPER = 1;
    private final int SCISSORS = 2;

    private int computerAnswer;

    public void play(int userAnswer) {
        // 电脑随机出拳
        Random random = new Random(System.currentTimeMillis());
        computerAnswer = random.nextInt(3);
    }
}
  1. 接下来,我们需要比较双方出拳的胜负。为了简化代码,我们可以将出拳的胜负关系抽象为一个2维数组,如下所示:
private final int[][] results = {
        {0, -1, 1},
        {1, 0, -1},
        {-1, 1, 0}};

其中,results[0]代表玩家出石头是的胜负情况,results[1]代表玩家出布是的胜负情况,results[2]代表玩家出剪刀是的胜负情况,对应的值分别为0、-1、1, 分别代表平局、输、赢。比如,如果玩家出石头,电脑出剪刀,就需要查找results[0][2],结果为1,代表玩家获胜。代码如下:

public void play(int userAnswer) {
    Random random = new Random(System.currentTimeMillis());
    computerAnswer = random.nextInt(3);
    int result = results[userAnswer][computerAnswer];
    switch (result) {
        case 0 -> System.out.println("平局");
        case 1 -> System.out.println("电脑获胜");
        case -1 -> System.out.println("玩家获胜");
    }
}
  1. 现在我们已经完成了猜拳的实现,但是游戏还没有结束。我们需要让玩家可以反复进行游戏。为了达到这个目的,我们可以使用循环结构。代码如下:
import java.util.Scanner;

public class Game {
    private final int[][] results = {
            {0, -1, 1},
            {1, 0, -1},
            {-1, 1, 0}};
    private final int ROCK = 0;
    private final int PAPER = 1;
    private final int SCISSORS = 2;

    private int computerAnswer;

    public void play(int userAnswer) {
        Random random = new Random(System.currentTimeMillis());
        computerAnswer = random.nextInt(3);
        int result = results[userAnswer][computerAnswer];
        switch (result) {
            case 0 -> System.out.println("平局");
            case 1 -> System.out.println("电脑获胜");
            case -1 -> System.out.println("玩家获胜");
        }
    }

    public static void main(String[] args) {
        Game game = new Game();
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请输入你要出的拳:0表示石头,1表示布,2表示剪刀");
            int userAnswer = scanner.nextInt();
            if (userAnswer < 0 || userAnswer > 2) {
                System.out.println("输入错误,请重新输入");
                continue;
            } else {
                game.play(userAnswer);
            }
            System.out.println("是否再来一局?请输入y或n");
            String tryAgain = scanner.next();
            if (tryAgain.equalsIgnoreCase("n")) {
                break;
            }
        }
        System.out.println("游戏结束");
    }
}

上述代码中,我们添加了一个while循环结构,来保证玩家反复进行游戏。同时,我们还通过Scanner类,允许玩家通过输入的方式选择自己的出拳。最后,我们还增加了一个判断,询问玩家是否愿意再玩一次。如果玩家输入的是“n”,就会退出循环,游戏结束。

示例说明

以下是玩家与计算机进行一局猜拳的示例输出:

请输入你要出的拳:0表示石头,1表示布,2表示剪刀
1
电脑获胜
是否再来一局?请输入y或n
y
请输入你要出的拳:0表示石头,1表示布,2表示剪刀
2
平局
是否再来一局?请输入y或n
n
游戏结束

在此示例中,玩家先出布,计算机出石头,所以计算机获胜。随后询问玩家是否继续,由于玩家输入的是"y",所以继续进行游戏。第二次玩家出剪刀,计算机也出剪刀,所以平局。随后询问玩家是否继续,由于玩家输入的是"n",所以退出游戏。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用java实现猜拳小游戏 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java一个数据整理的方法代码实例

    针对“java一个数据整理的方法代码实例”的完整攻略,我将详细讲解以下几个方面: 1.目标 首先,我们需要明确准备实现什么样的数据整理方法。例如,一个实际需求是我们需要从一份数据集中,提取出某个字段所对应的数据,并对其进行统计分析。那么,我们的目标就是实现一个函数,接收这份数据集和指定的字段名,返回经过处理后的结果。 2.实现思路 在明确目标后,我们需要考虑…

    Java 2023年5月23日
    00
  • Java SpringBoot 获取接口实现类汇总

    下面我会详细讲解“Java SpringBoot 获取接口实现类汇总”的攻略,分为以下几个步骤: 定义接口及实现类 使用注解@Autowired注入实现类 使用注解@ComponentScan扫描实现类 获取接口实现类列表 接下来具体讲述每个步骤,并提供两个示例。 1. 定义接口及实现类 首先,我们需要定义一个接口,并创建其的实现类。如下: public i…

    Java 2023年5月19日
    00
  • JSP基于JDBC的数据库连接类实例

    下面我将给出关于“JSP基于JDBC的数据库连接类实例”的完整攻略,希望可以对您有所帮助。 JSP基于JDBC的数据库连接类实例 JDBC(Java Database Connectivity)是Java语言中访问数据库的标准规范,通过JDBC可以实现与多种数据库的连接。在JSP中使用JDBC连接数据库是非常常见的一种操作。接下来将为您提供一些相关的实例: …

    Java 2023年5月20日
    00
  • 经典的Java面试题及回答集锦(基础篇)

    经典的Java面试题及回答集锦(基础篇)攻略 1. 介绍 本篇攻略是针对Java基础面试的常见问题及回答进行总结。经典的Java面试题及回答集锦主要分为六个部分,包括Java基础,集合,多线程,IO,JVM及框架。本篇攻略将重点关注Java基础的面试题。 2. Java基础的面试题及回答 2.1 基本数据类型 Q: Java有哪些基本数据类型?请列举。 Ja…

    Java 2023年5月19日
    00
  • Spring MVC 学习 之 – URL参数传递详解

    Spring MVC 学习之 – URL 参数传递详解 在 Spring MVC 中,我们可以通过 URL 参数传递来传递数据。本文将详细讲解 Spring MVC 中 URL 参数传递的使用,包括如何获取 URL 参数、如何使用 @PathVariable 注解获取路径参数、如何使用 @RequestParam 注解获取请求参数,并提供两个示例说明。 获取…

    Java 2023年5月18日
    00
  • java中File类的使用方法

    关于Java中的File类,我们可以从以下几个方面入手进行讲解。 什么是File类 Java中提供了一个File类,它代表着文件或目录的抽象表示。File类并不代表着文件或目录的内容,它只是文件或目录在操作系统中的一个抽象,可以用于操作文件或目录的元数据(metadata),如文件的大小,最后一次修改时间等。在Java中,可以对File对象进行读写操作,以便…

    Java 2023年5月20日
    00
  • 在Java的Struts框架下进行web编程的入门教程

    在Java的Struts框架下进行web编程的入门教程 什么是Struts框架? Struts框架是基于Java Servlet和Java Server Pages技术的Web应用框架,提供了处理用户请求和生成响应的框架。它是MVC开发模式的一种实现,能够更好地分离应用程序的模型、视图和控制器。Struts在Web应用开发中已经非常成熟,并且拥有丰富的生态圈…

    Java 2023年5月19日
    00
  • Java与Mysql锁相关知识总结

    下面我会对Java与MySQL锁相关知识进行总结,并提供两条示例说明。 Java与MySQL锁相关知识总结 常见的锁类型 1. 行级锁(Record Lock) 行级锁可以在单个数据行上进行加锁和解锁,只锁定某个数据行,可以多个事务在同一时间内操作不同的行数据,避免对其他不相关的事务产生影响。InnoDB存储引擎默认使用行级锁。 2. 表级锁(Table L…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部