问题描述:

一、主要功能:
.电脑与人互动,实现“剪刀、石头、布”的游戏;
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. python 时间转换

    def getDateTime(time_str): ''' 转换时间 :param time_str: :return: ''' if not isinstance(time_str,unicode ...

  2. xcode8 升级后注释快键键不能使用的解决方法

    1.这个是因为苹果解决xcode ghost.把插件屏蔽了.解决方法 命令运行:  sudo /usr/libexec/xpccachectl 然后必须重启电脑后生效 2.option+command ...

  3. 在RNN中使用Dropout

    dropout在前向神经网络中效果很好,但是不能直接用于RNN,因为RNN中的循环会放大噪声,扰乱它自己的学习.那么如何让它适用于RNN,就是只将它应用于一些特定的RNN连接上.   LSTM的长期记 ...

  4. Hibernate criteria 增加排序项

  5. myBatis中 collection 或 association 联合查询 中column 传入多个参数值

    下面是一个树形结构表自连接 联合查询 Demo <resultMap id="BaseResultMap"  type="com.maidan.daas.entit ...

  6. finally回收资源

    Java中的垃圾回收机制,也就是GC不会回收任何物理资源,垃圾回收机制只回收堆内存中对象所占用的内存,所以其他的物理资源需要用finally来回收. 如果try块中的某条语句引起了异常,该异常就会被c ...

  7. TP5与TP3.X对比

    首先声明本章节并非是指导升级旧的项目到5.0,而是为了使用3.X版本的开发者更快的熟悉并上手这个全新的版本.同时也强烈建议开发者抛弃之前旧的思维模式,因为5.0是一个全新的颠覆重构版本. 需要摒弃的3 ...

  8. IntelliJ IDEA 15 激活码 正版 可离线激活

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  9. 使用html5 地理位置技术 和 百度地图api查询当前位置

    使用了  zepto  和 requirejs define(['zepto'],function($){ var geolocation = { init:function(config,onSuc ...

  10. Git命令----放弃本地修改使用服务器上的代码

    git reset --hard FETCH_HEAD FETCH_HEAD表示上一次成功git pull之后形成的commit点.