石头剪刀布Java实现
java实现石头剪刀布过程
首先来看石头剪刀布的所有可能情况,具体如下图
第一种思路是穷举所有可能,使用if条件语句,略显呆板和麻烦。
第二种思路,因为计算机存的是数字,所以我们可以从数字角度来找规律:
在这里我们用
0代表石头;
1代表剪刀;
2代表布;
那我们的猜拳游戏可以变为比较两个变量A和B:
变量A和B相等时,平局。
如果用B+1除以3得到的余数与变量A相等,则玩家B获胜
其余情况都是A获胜代码实现如下
分为玩家类和裁判类:
玩家:
/*
* 玩家
*/
public class Player {
private String name;
public Player(String name) {
this.name = name;
}
public Player() {
}
//出拳
public int getHand() {
//Math.random() -- 返回0和1之间的伪随机数 可能为0,但总是小于1,[0,1)
int i = (int)(Math.random() * 3);
if(i == 0) {
System.out.println(this.toString() + "出石头");
}
if(i == 1) {
System.out.println(this.toString() + "出剪刀");
}
if(i == 2) {
System.out.println(this.toString() + "出布");
}
return i;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "玩家" + this.name;
}
public static void main(String[] args) {
Player player = new Player("A");
System.out.println(player.getHand());
}
}
裁判:
/*
* 裁判
*/
public class Judge {
//判断胜负
public void getWinner(int a, int b) {
if(a == b) {
System.out.println("平局");
} else if((b + 1) % 3 == a) {
System.out.println("B获胜");
} else {
System.out.println("A获胜");
}
}
}
游戏测试:
public class Test {
//测试
public static void main(String[] args) {
Player player1 = new Player("A");
Player player2 = new Player("B");
Judge judge = new Judge();
System.out.println("猜拳开始");
judge.getWinner(player1.getHand(), player2.getHand());
}
}
结果展示:
- 总结
以上就是石头剪刀布游戏的粗略模拟,思路主要还是尽量站在计算机角度去思考,计算机的任何数据都是以数字存储。
石头剪刀布Java实现的更多相关文章
- P1328_生活大爆炸版石头剪刀布(JAVA语言)
题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第8集中出现了一种石头剪刀布的升级版游戏. 升级版游戏在传统的 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- JAVA取随机数,石头剪刀布实例
一.取随机数: import java.util.Random; //导入随机数 public class Test{ public static void main(String[] args){ ...
- 从零开始学java(小游戏 石头剪刀布)
Game.java package com.java;import java.util.Scanner;public class Game { private Player player ...
- 石头剪刀布的JAVA小程序 供初学者参考
package youxi; public class Player { private String name; private double score; public Player(String ...
- Java石头剪刀布小游戏
package com.neusoft.test; import java.awt.BorderLayout; import java.awt.Choice; import java.awt.Colo ...
- Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
import java.util.Scanner; public class Main{ private static int[] duel(int playerA, int playerB){ in ...
- Java纸牌小demo以及日历小demo
//卡牌类 public class Card { //定义卡牌的点数 public static final String[] cardName = { "3", "4 ...
- 猜拳游戏三局两胜------java实现代码
package com.javasm.exerices02; import java.util.ArrayList; import java.util.List; import java.util.R ...
随机推荐
- Java读properties文件中文乱码问题的解决方法
java读properties文件,包含中文字符的主要有两种: 1.key中包含中文字符的(value中也有可能包含) 2.key中不包含中文字符的(value中有可能包含) 1.key中包含中文字符 ...
- ubuntu14.04 Samba服务无法访问 可能没有权限 指定的网络名不再可用的问题
按常规配置后,在windows资源管理器中登陆samba服务器,看得到分享目录却无法打开,弹出"无法访问.您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限.指定的 ...
- 2018.10.15 bzoj4570: [Scoi2016]妖怪(凸包)
传送门 不得不说这题有点东西啊. 看到题第一眼二分,用二次函数求范围来进行checkcheckcheck,20分滚粗了233. 于是开始思考正解. 发现可以把每只怪物的二元组属性看成二维坐标. 这时对 ...
- 2018.09.18 atcoder Many Formulas(搜索)
传送门 感觉自己搜索能力退化了,这种弱智搜索写了整整5min,这样下去比赛会凉的. 看来得多练练题了. 代码: #include<bits/stdc++.h> #define ll lon ...
- 2018.08.30 游戏(概率dp)
题目描述 Alice 和 Bob 两个人正在玩一个游戏,游戏有很多种任务,难度为 p 的任务(p是正整数),有 1/(2^p) 的概率完成并得到 2^(p-1) 分,如果完成不了,得 0 分.一开始每 ...
- 2018.08.28 洛谷P4556 [Vani有约会]雨天的尾巴(树上差分+线段树合并)
传送门 要求维护每个点上出现次数最多的颜色. 对于每次修改,我们用树上差分的思想,然后线段树合并统计答案就行了. 注意颜色很大需要离散化. 代码: #include<bits/stdc++.h& ...
- 2018.07.08 hdu4521 小明系列问题——小明序列(线段树+简单dp)
小明系列问题--小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Proble ...
- Criteria查询
1.Criteria表达式 Criteria c=session.createCriteria(User.class); List result=c.list(); Iterator it=resul ...
- 百度Webuploader 大文件分片上传(.net接收)
版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...
- Hdu1896 Stones(优先队列) 2017-01-17 13:07 40人阅读 评论(0) 收藏
Stones Time Limit : 5000/3000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submis ...