使用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中SSM框架实现增删改查功能代码详解

    让我来详细讲解Java中SSM框架实现增删改查功能代码的攻略,包括以下几个部分: SSM框架简介 数据库建表和配置文件 DAO层代码示例 Service层代码示例 Controller层代码示例 1. SSM框架简介 SSM框架是指Spring+SpringMVC+MyBatis三个框架的整合,三个框架各自担任不同角色,共同完成项目的开发。其中,Spring…

    Java 2023年5月19日
    00
  • 基于Java中throw和throws的区别(详解)

    基于Java中throw和throws的区别(详解) throw关键字 在Java中,可以使用throw关键字手动抛出一个异常对象。使用throw时,需要提供一个抛出的异常对象,该异常对象必须是Throwable类的子类,可以是Java内置的异常类,也可以是自定义的异常类。 示例代码: void methodA(int num) throws Illegal…

    Java 2023年5月27日
    00
  • Spring Bean的8种加载方式总结

    Spring Bean的8种加载方式总结 在Spring框架中,Bean是我们经常使用的核心概念之一。Spring提供了多种Bean加载方式,以适应不同的场景和需求。本文将对Spring Bean的8种加载方式进行详细讲解,并通过示例说明。 1. 通过XML文件加载Bean 最传统的方式是使用XML文件来定义Bean。我们可以在XML中使用<bean&…

    Java 2023年5月31日
    00
  • 线程状态包括哪些?

    以下是关于线程状态的完整使用攻略: 什么是线程状态? 线程状态是指线程在不同的执行阶段处的状态。在 Java 中,线程状态主要有以下几种: 新建状态(New):当线程对象被创建时,它处于新建状态。 就状态(Runnable):当线程对象调用 start() 方法后,它处于就绪状态,等待系统分配 CPU 时间片。 运行状态():当线程获得 CPU 时间片后,它…

    Java 2023年5月12日
    00
  • Java 数据结构与算法系列精讲之红黑树

    红黑树 简介 红黑树是一种自平衡二叉搜索树,它是被广泛使用的一种数据结构,在计算机领域中用于实现高效的查找、插入和删除操作。其名字的由来是因为每个节点都有一个被标记为红色或黑色的属性,又因为它是二叉搜索树,因此在插入、删除操作后,它会自动调整以保持平衡状态。 红黑树的定义 红黑树最重要的两个属性是: 每个节点或者是黑色,或者是红色。 根节点是黑色。 每个叶节…

    Java 2023年5月26日
    00
  • javascript计算当月剩余天数(天数计算器)示例代码

    这里就为你详细讲解一下 “javascript计算当月剩余天数(天数计算器)示例代码”的完整攻略吧。 一、前置知识 在开始编写这个 JavaScript 计算当月剩余天数的样例代码之前,你需要了解以下几个前置知识: JavaScript 基础语法:了解 JavaScript 基本数据类型、运算符、条件语句、循环语句等基础语法。 Date 对象:了解 Java…

    Java 2023年6月15日
    00
  • Spring WebMVC初始化Controller流程详解

    下面是关于“Spring WebMVC初始化Controller流程详解”的完整攻略,包含两个示例说明。 Spring WebMVC初始化Controller流程详解 在Spring WebMVC中,Controller是处理HTTP请求的核心组件。在本文中,我们将详细介绍Spring WebMVC初始化Controller的流程。 步骤1:扫描Contro…

    Java 2023年5月17日
    00
  • Java 实现完整功能的学生管理系统实例

    关于“Java 实现完整功能的学生管理系统实例”的攻略,可以按照以下步骤进行: 1. 确认需求和功能 在设计学生管理系统之前,我们需要先明确系统所需实现的具体功能,例如:添加学生、删除学生、查询学生信息、修改学生信息等。并且需要对每个功能进行详细的分析和细化,以便后续的开发工作。在此环节中,我们可以使用 UML 等工具进行建模和分析。 2. 数据库的设计 针…

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