05 Java代码实现一个小游戏(剪刀石头布)和一个简易的万年历

2024-03-18 16:40

本文主要是介绍05 Java代码实现一个小游戏(剪刀石头布)和一个简易的万年历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

石头剪刀布游戏仅仅使用switch语句

万年历-仅仅使用方法调用和for循环

一个小游戏和一个简单的万年历的代码实现

        • 5.1 一个简单的剪刀石头布小游戏
          • 5.1.1 需求:实现以下界面
          • 5.1.2 代码实现
        • 5.2 万年历
          • 5.2.1 需求 输入年份和月份,输出简单的万年历日历,如下
          • 5.2.2 代码实现

5.1 一个简单的剪刀石头布小游戏
5.1.1 需求:实现以下界面
************************************************************
欢迎XXX进入猜拳游戏
1.石头 2.剪刀 3.布 0.退出
************************************************************
请输入数字:
/*
此时等待用户输入数字,每个数字代表不同的效果,整个程序只有当用户输入0时才可以退出 否则不允许停止程
序,当用户输入
1-3之间某个数字的时候,需要和电脑系统AI进行猜拳对比,并对用户输出反馈效果
查看如果做 1~3之间数据获取操作
*/
************************************************************
欢迎XXX进入猜拳游戏
1.石头 2.剪刀 3.布 0.退出
************************************************************
请输入数字:
1
如果赢了 提示 恭喜你赢了
如果输了 提示 你输了
如果平局 提示 平局再来
//输入提示语句之后 需要再次显示 以下界面
************************************************************
欢迎XXX进入猜拳游戏
1.石头 2.剪刀 3.布 0.退出
************************************************************
请输入数字:
/*
当用户输入0是,猜拳游戏结束,输出以下界面,需要打印谁玩的,完了多少局,赢了多少场,胜率是多少
*/
排行榜
******************************************************************
姓名 总局数 赢场 胜率
XXX 0 0 xx%
5.1.2 代码实现
  1. 提供程序必要的一些信息(记录游戏总局数,胜场数,储存玩家输入的数据,储存电脑输入的数据)
  2. 编写游戏核心(输出游戏界面,接受玩家输入数据,判断输赢)
  3. 注意输赢条件判断
package Case.Java;import java.util.Scanner;/*** @author yinying* @date 2023/1/8 13:49*/
public class RockPaperScissors {public static void main(String[] args) {//1.提供程序必要的一些信息Scanner input = new Scanner(System.in);int STotal = 0;// 记录游戏的总局数int SVictory = 0;//记录胜场int player_choose = 0;//存储玩家输入的数据int computer_choose = 0;//存储电脑输入的数据//2.编写游戏核心while (true){//打印输出的游戏界面System.out.println(" ************************************************************");System.out.println("欢迎进入猜拳游戏");System.out.println("1石头 2.剪刀 3.布 0.退出");System.out.println(" ************************************************************");System.out.println("请输入数字:");//接受用户输入数据player_choose = input.nextInt();//提供判断操作,因为用户输入0的时候退出程序if (player_choose == 0){//退出游戏打印排行榜界面System.out.println("\t\t\t\t\t\t\t\t\t\t排行榜");System.out.println("************************************************************");System.out.println("姓名"+"\t\t\t总局数"+"\t\t\t赢场"+"\t\t\t胜率");System.out.println("大宝"+"\t\t\t"+STotal+"\t\t\t"+SVictory+"\t\t\t"+ (((((double)SVictory)/((double)STotal)))*100)+"%");break;//结束死循环让程序结束}//如果玩家输入的不是0,证明玩家输入应该是【1,2,3】中间的一个值,所以总局数要+1STotal++;/*模拟电脑出拳  使用1,2,3 代表 石头、剪刀和布,模拟电脑出拳也应该是【1,2,3】之间的一个值Java中提供一个操作---随机数---工具类Math这个类中提供了一个方法randomrandom这个方法可以得到一个随机数据,但是这个随机数的初始范围是[0,1) 左闭右开区间 包括0,但是不包括1[0,3)+1-->[0+1,3+1)--->[1,4) -->范围 得到1~3之间但是不包含4*/computer_choose = ((int)Math.random()*3+1);//switch (computer_choose){case 1:System.out.println("电脑出拳是:石头");break;case 2:System.out.println("电脑出拳是:剪刀");break;case 3:System.out.println("电脑出拳是:布");break;}/*如何判断输赢?明确:玩家使用数字代表 石头、剪刀和布 【每一个出拳都是一个数字】胜利条件 石头> 剪刀 剪刀>布 布> 石头又因为输入都是数字,所以使用玩家输入数字与电脑所产生数据计算差值1-2 = -1 2-3 = -1 3-1 = 2只要计算差值得到-1和2就可以得到胜利平局条件 石头 == 石头 剪刀 == 剪刀 布 == 布又因为输入都是数字,所以使用玩家输入数字与电脑所产生数据计算差值1-1 =0 2-2 =0 3-3 =0只要计算差值得到0就是平局现在胜利条件也出现,平局条件也出现,剩余条件就是失败*/int win = player_choose-computer_choose;switch (win){case - 1:case 2:System.out.println("恭喜,你赢了!!! (#^.^#)");System.out.println("");//没有特殊意义就是好看//胜场+1SVictory++;break;case 0:System.out.println("平局,再来啊!!!!(*^▽^*)");System.out.println();break;default:System.out.println("你输了,还敢再来吗?O(∩_∩)O哈哈~");System.out.println();break;}}}}
5.2 万年历
5.2.1 需求 输入年份和月份,输出简单的万年历日历,如下
输入2022年1月
输出:星期⽇	星期⼀	星期⼆	星期三	星期四	星期五	星期六		
1		2		3		4		5		6		7		
8		9		10		11		12		13		14		
15		16		17		18		19		20		21		
22		23		24		25		26		27		28		
29		30		31	
5.2.2 代码实现
  1. 输出提示语句,并接受⽤户输⼊的年,⽉
  2. 计算总天数
  3. 计算星期
  4. 格式化日历输出
    • 打印格式表头
    • 输出年份(需要注意是否是闰年)、月份、天数
package Case.Java;import java.util.Scanner;/*** @author:yinying* @date 2023/1/8 17:22*/
public class PerpetualCalendar {public static void main(String[] args) {//1.先输出提示语句,并接受⽤户输⼊的年,⽉Scanner input = new Scanner(System.in);System.out.println("请输⼊年:");int year = input.nextInt();System.out.println("请输⼊⽉:");int month = input.nextInt();//2.计算总天数int totalDaysY = getFormNowYearTo1900TotalDays(year);int totalDaysM = getNowYearToDays(year, month);//3.计算星期(对7求余 得到的记过就是0~6 0就是星期⽇ 1-6分别对应星期⼀到星期六)int week = (totalDaysM+totalDaysY+1)%7;//4.格式化打印⽇历FormatCalendar(week, year, month);}/*** 格式化日历输出* @param week 星期数* @param year 年份* @param month ⽉份*/public static void FormatCalendar(int week,int year,int month) {//计数统计int cut = 0;//打印表头System.out.println("星期⽇\t星期⼀\t星期⼆\t星期三\t星期四\t星期五\t星期六\t\t");//计算⽉份第⼀天是星期⼏(空格的位置)for(int i = 1 ;i<=week;i++) {System.out.print("\t\t");cut++;//计数}//通过获取⽉份对应天数,计算打印出⽇历表中天数for(int i =1;i<=getNowMonthDays(year, month);i++) {//输出天数结果System.out.print(i+"\t\t");cut++;//计数//这个计数的作⽤就在这⾥了,根据给的图⽚可以发现每⼀⾏打印的内容是7个,也就是逢7换⾏,所以只要能整除开7就换⾏if(cut%7 == 0) {System.out.println();}}}/***  判断是否是润年*  @param year 年份*  @return true 是闰年 false 那不是闰年*/public static boolean isLeapYear(int year) {return (year%4==0 && year%100!=0)||(year%400==0);}/***  根据⽤户输⼊的⽉份来判断对应⽉份的天数*  @param year 年份*  @param month ⽉份*  @return 返回对应的天数*/public static int getNowMonthDays(int year,int month) {switch(month) {case 2:return isLeapYear(year) ? 29 : 28;case 4:case 6:case 9:case 11:return 30;default:return 31;}}/*** 计算距离1900年1⽉1⽇的总天数* @param year 年份* @return 总天数*/public static int getFormNowYearTo1900TotalDays(int year) {//定义变量存储总天数int sum = 0;for(int i = 1900 ;i<year;i++) {sum += isLeapYear(i) ? 366 : 365;}return sum;}/*** 计算输⼊⽉份到当前年份1⽉1⽇的总天数* @param year 年份* @param month ⽉份* @return 距离当前年份1⽉1⽇的总天数*/public static int getNowYearToDays(int year,int month) {//定义变量存储总天数int totalDays = 0;//计算距离1⽉1⽇的总天数for(int i = 1; i<month;i++) {totalDays += getNowMonthDays(year, i);}return totalDays;}
}

实现效果如下

在这里插入图片描述

这篇关于05 Java代码实现一个小游戏(剪刀石头布)和一个简易的万年历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/822962

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关