使用java实现猜拳小游戏

yizhihongxing

使用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日

相关文章

  • 分析Tomcat的工作原理

    分析Tomcat的工作原理 Tomcat是什么 Tomcat是一个开源的Java Servlet容器,Web服务器软件,由Apache软件基金会开发。它使得Java代码可以在Web服务器上运行,是Web应用程序的开发和部署的重要组件。 工作原理 接收请求 Tomcat通过监听指定端口,侦听客户端请求。当客户端请求到达时,Tomcat会创建一个Socket对象…

    Java 2023年5月19日
    00
  • Springboot配置返回日期格式化五种方法详解

    Springboot配置返回日期格式化五种方法详解 在Springboot开发中,经常会用到日期格式化,在处理时间日期类型的数据比较麻烦,需要对日期实现格式化。本文将从不同的维度,介绍五种Springboot配置返回日期格式化的方法。 1. 使用@JsonFormat注解实现格式化 使用Spring的@JsonFormat注解来实现日期的格式化输出,它可以放…

    Java 2023年5月20日
    00
  • java获取昨天日期字符串的方法

    下面是详细讲解“java获取昨天日期字符串的方法”的完整攻略。 一、获取昨天日期字符串的基本方法 要获取昨天的日期字符串,我们可以先获取当前日期,然后将日期往前推一天,再格式化成字符串。具体步骤如下: 获取当前日期 使用java.util.Date类可以获取当前日期。代码如下: Date today = new Date(); 往前推一天 使用java.ut…

    Java 2023年5月20日
    00
  • JSP spring boot / cloud 使用filter防止XSS

    下面是详细的JSP Spring Boot/Cloud使用Filter防止XSS的攻略: 什么是XSS攻击 XSS(Cross Site Scripting)攻击是一种非常常见的互联网应用程序攻击,攻击者通过注入恶意脚本代码,在受害者的浏览器中运行这些脚本,从而窃取用户的个人信息或者执行其他危险操作。该攻击方式十分危险,能够威胁到用户的隐私和信息安全,目前已…

    Java 2023年6月15日
    00
  • 关于Java集合框架面试题(含答案)上

    关于Java集合框架面试题(含答案)上 为什么需要学习Java集合? 在Java编程中,集合是非常常见的一种数据结构,几乎每个Java程序员都必须掌握Java集合框架。Java集合包含了许多不同种类的集合类,例如ArrayList、LinkedList、HashSet、TreeSet、HashMap等等。这些集合类处理复杂数据结构时非常有用,因此掌握Java…

    Java 2023年5月26日
    00
  • 体验Java 1.5中面向(AOP)编程

    下面是详细讲解“体验Java 1.5中面向(AOP)编程”的完整攻略。 背景 在Java 1.5中引入了注解和泛型等新特性,同时也提供了对面向切面编程(AOP)的支持,使得在Java中实现AOP变得更加容易和灵活。 AOP介绍 AOP是一种编程思想,将程序中的各种横向逻辑(如日志、权限控制、事务管理等)提取出来,形成切面,通过将切面和业务逻辑进行织入,实现了…

    Java 2023年6月15日
    00
  • Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办

    为了解决”Mybatis使用MySQL模糊查询时输入中文检索不到结果”的问题,我们需要在Mybatis配置文件中进行一些特定的设置。 1.在Mybatis的配置文件中添加如下代码: <configuration> <settings> <setting name="jdbcTypeForNull" value…

    Java 2023年6月1日
    00
  • java基于jdbc实现简单学生管理系统

    首先需要明确几个概念: JDBC:Java数据库连接,是一个用于执行SQL语句的Java API。 MySQL:一个开源的关系型数据库。 IDEA:一个常用的Java开发工具。 下面是基于JDBC实现简单学生管理系统的步骤: 1. 创建表 首先需要创建一张学生表,表的结构可以由以下字段组成: 学生ID 学生姓名 学生年龄 学生性别 学生班级 可以使用以下SQ…

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