问题描述:

一、主要功能:
.电脑与人互动,实现“剪刀、石头、布”的游戏;
1.1 角色登陆:
********************
***欢迎进入猜拳游戏***
********************
请选择一个角色:
.安培晋三 .奥巴马 .普京
1.2 角色选定后,游戏开始:
角色已选定,欢迎您,奥巴马!游戏开始!
请出拳:
.石头 .剪刀 .布
奥巴马出拳:石头
匿名出拳:石头
此局双方平手!
是否继续?/0
.比赛结束时,给出比赛结果:
比赛结束,本场比赛共进行了6局!
奥巴马胜利了0局!
匿名胜利了4局!
双方平手:2局!
太臭了!回家卖红薯吧! . 可根据现实生活逻辑进行适当调整。

代码实现:

/**
* 用户选择类
*/
public class Progress { private static int n = 1;//用户选择角色
private static int m = 1;//用户出拳
private static int nm = 0;//比赛总场数
private static String [] str = {"安培晋三 ","奥巴马","普京"};//角色
private static int i;//是否继续
private static BiSai bs;//结果处理类 public static void main(String[] args) { System.out.println("********************\n***欢迎进入猜拳游戏***\n********************");
System.out.println("请选择一个角色:\n1.安培晋三\t 2.奥巴马\t 3.普京");
System.out.print("请输入:");
Scanner in = new Scanner(System.in);
//用户选择角色
do {
if(n<=0||n>=4){
System.out.print("输入的字符非法,请从新输入:");
}
n = in.nextInt();
} while (n<=0||n>=4);
System.out.println("角色选定,欢迎您,"+str[n-1]+"!游戏开始!");
System.out.println("出拳规则:1:石头\t 2:剪刀\t 3:布"); //用户开始进行比赛
bs = new BiSai();
do {
nm +=1;
System.out.println("猜拳大赛,第"+nm+"回合");
System.out.print("请出拳:");
m = in.nextInt();
if(m<=0||m>=4){
do {
System.out.print("输入的字符非法,请从新输入:");
m = in.nextInt();
} while (m<=0||m>=4);
}
String s = bs.getQuan(m);
System.out.println(str[n-1]+"出拳:"+s);
int t = bs.getPrograme(m);
switch (t) {
case 1:
System.out.println("此局平手");
break;
case 2:
System.out.println(str[n-1]+"胜利");
break;
case 3:
System.out.println("匿名获胜");
break; default:
break;
}
System.out.print("是否继续?1/0:");
i = in.nextInt();
do {
if(i!=1&&i!=0){
System.out.print("输入的字符非法,请从新输入:");
i = in.nextInt();
}
} while (i!=0&&i!=1);
} while (i==1);
bs.getJiGuo(str[n-1], nm);//比赛结果
} }
/**
* 结果评定类
*/
public class BiSai { private static int n = 0;//机器获胜次数
private static int m = 0;//机器平的次数
private static int nm = 0;//机器败的次数
private static int mn = 0;//机器出的拳 public int getPrograme(int i){
int flag = 0;
Random r = new Random();
mn = r.nextInt(3);
System.out.println("匿名出拳:"+ getQuan(mn+1));
if(i==mn+1){
m +=1;
flag = 1;
}else{
if((i==1&&mn+1==2)||(i==2&&mn+1==3)||(i==3&&mn+1==1)){
nm +=1;
flag = 2;
}else{
n +=1;
flag = 3;
}
}
return flag;
} public void getJiGuo(String s, int j){
System.out.println("比赛结束,本场比赛共进行"+j+"局!");
System.out.println(s+"胜利了"+nm+"局");
System.out.println("匿名胜利了"+n+"局");
System.out.println("双方平手了"+m+"局");
if(nm>n){
System.out.println("手气太棒了,可以去买彩票了!");
}else{
if(nm<n){
System.out.println("太臭了!回家卖红薯吧!");
}else{
System.out.println("还不错,平分秋色!");
}
}
} public String getQuan(int q){
String s = "";
switch (q) {
case 1:
s = "石头";
break;
case 2:
s = "剪刀";
break;
case 3:
s = "布";
break; default:
break;
}
return s;
} }

运行结果:

  

JAVA基础代码分享--模拟人机猜拳系统的更多相关文章

  1. JAVA基础代码分享--DVD管理

    问题描述 为某音像店开发一个迷你DVD管理器,最多可存6张DVD,实现碟片的管理. 管理器具备的功能主要有: 1.查看DVD信息. 菜单选择查看功能,展示DVD的信息. 2.新增DVD信息 选择新增功 ...

  2. JAVA基础代码分享--学生成绩管理

    问题描述: 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10  等级为’A’   成绩>=最高分-20  等级为’B’ 成绩>=最高分-30  等级为’C’ ...

  3. JAVA基础代码分享--求圆面积

    问题描述 用户输入圆的半径,计算并显示圆的面积 代码分享 /** * @author hpu-gs * 2015/11/25 */ public class Circle { public stati ...

  4. Java基础_通过模拟售票情景解决线程不安全问题

    用代码来模拟铁路售票系统,实现通过四个售票点发售某日某次列车的100张车票,一个售票点用一个线程表示 第一种方法:通过继承Thread类的方法创建线程 package com.Gary1; publi ...

  5. 如何学习java?Java基础知识点分享

    面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...

  6. [Java基础]代码块及java反编译

    块的作用域:   块(即复合语句)是指一对花括号括起来的若干条简单的java语句.块确定了变量的作用域.一个块可以嵌套在另一个块中.但是,在嵌套的两个块中声明同名的变量时应注意,块中变量申明在块外变量 ...

  7. Java基础学习分享

    一.Java介绍 Java是由原Sun公司(现已被甲骨文公司收购)于1991年开发的编程语言,初衷是为智能家电的程序设计提供一个分布式代码系统.为了使整个系统与平台无关,采用了虚拟机器码方式,虚拟机内 ...

  8. nuxt项目打包上线,以及nuxt项目基础代码分享

    nuxt的项目部署到线上环境,有多种方法,这里分享我使用的方法,一步步照着配置,就可以配置成功~ (1)项目先执行npm run build 打包好   (2)服务器安装node 和pm2依赖 服务器 ...

  9. 2019.12.06 java基础代码

    操作系统中默认码表是:gbk      (一个中文字符占两个字节): utf-8(一个中文字符占三个字节): 数据库建库时的默认码表是:拉丁码表: (1)       public class 定义: ...

随机推荐

  1. XCode设置自己windows习惯的快捷键(比如Home、End键)

    Xcode的preference(command+,)中可以设置Key Bindings.绑定自己习惯的快捷键.实测系统快捷键设置同样名字也可以生效,但操作比较繁琐这里就不介绍了. 1.打开Xcode ...

  2. Apache InterfaceAudience

    InterfaceAudience 类包含三个注解类型,用来被说明被他们注解的类型的潜在的使用范围(audience).@InterfaceAudience.Public: 对所有工程和应用可用@In ...

  3. <十五>JDBC_使用 DBUtils 进行更新、查询操作

    详解待续... DBUtilsTest.java import java.sql.Connection;import java.sql.Date;import java.sql.ResultSet;i ...

  4. winhttp demo

    #include <string>#include <iostream>#include <windows.h>#include <winhttp.h> ...

  5. Logstash之multiline 插件

    input { stdin { codec => multiline { pattern => "^\[" negate => true what => & ...

  6. Mybatis generator的使用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  7. 带额外toggle()功能的jquery库

    <html><head><meta http-equiv="Content-Type" content="text/html;charset ...

  8. 大家一起Aop

    一.前言 1.在项目中无处不充斥着记录日志的代码,各种try catch,实在是有点看着不爽.这不,果断要想法子偷个懒儿. 二.摘要 鄙人不才,先总结一下个人想到的可实现AOP的几种思路: 1.通过继 ...

  9. SQL Server的镜像是基于物理块变化的复制 镜像Failover之后数据的预热问题

    SQL Server的镜像是基于物理块变化的复制 镜像Failover之后数据的预热问题 基于物理块变化的复制,没有并行也是很快的. 逻辑复制的日志是按事务结束的时间排序的,而物理复制是与事务无关的, ...

  10. ABP理论学习之审计日志

    返回总目录 本篇目录 介绍 配置 通过特性开启/关闭 注意 我项目中的例子 介绍 维基百科说: "审计跟踪(也叫审计日志)是与安全相关的按照时间顺序的记录,记录集或者记录源,它们提供了活动序 ...