问题描述:

一、主要功能:
.电脑与人互动,实现“剪刀、石头、布”的游戏;
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. 使用nose 进行Python项目的自动化测试

    一.为什么使用nose? 编写测试更容易.nose可以自动识别继承于unittest.TestCase的测试单元,并执行测试,而且,nose也可以测试非继承于unittest.TestCase的测试单 ...

  2. mssql查询列名中包含特定字段的列

    CREATE TABLE itemdata_LANG ( itemno ) NOT NULL, itemname ), -- 产品名称 othername ), indications ), -- 适 ...

  3. BFS/DFS算法介绍与实现(转)

    广度优先搜索(Breadth-First-Search)和深度优先搜索(Deep-First-Search)是搜索策略中最经常用到的两种方法,特别常用于图的搜索.其中有很多的算法都用到了这两种思想,比 ...

  4. 基于webdriver的jmeter性能测试-Eclipse+Selenium+JUnit生成jar包

    续接 打开eclipse新建java项目,如下图所示: 输入项目名称后点击"完成"按钮,如下图所示: eclipse中新建一个java项目,如下图所示: 添加类库,如下图所示: 在 ...

  5. 2016/11/17 周四 <javascript的封装简单示例>

    这是一个简单的javascript代码封装的示例以及封装后的调用方法: var ticker={ n:0, add:function() { this.n++; }, show:function() ...

  6. USACO翻译:USACO 2014 FEB SILVER 三题

    USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...

  7. android布局实践——模仿微信主界面

    这是目前微信6.0版本的主界面 先来分析一波: 1.(top.xml)界面头部有一个微信(6)消息提醒    一个搜索图标   一个更多的的图标+,中间还有一段空白,我们可以弄两个textView(其 ...

  8. 设置Android Studio启动时可选最近打开过的工程

    Android Studio启动时,默认会打开最近关闭的工程. 如果想Android Studio在启动时,打开欢迎界面(Welcome to Android Studio界面),则可以通过设置Set ...

  9. ruby 访问新浪微博API post方式和get方式

    require 'net/https' require 'uri' def post_api(api, args) uri = URI.parse api http = Net::HTTP.new(u ...

  10. 装逼名词-ABA CAS SpinLock

    今天看wiki,看到一个提到什么什么会陷入 race condition & ABA problem.丫的我没听过ABA呀,那么我去搜了一下,如下: http://www.bubuko.com ...