public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(Systemin);
int sman = 0;
int scomputer = 0;
int sping = 0;
int i = 1;
for ( ; i > 0; i++) {
Systemoutprintln("第"+i+"次猜拳,1:剪刀;2:石头;3:布;4:不玩了;");
//玩家的 *** 作
int game = scannernextInt();
if(game == 4){
break;
}
if(game > 4 || game < 1){
Systemoutprintln("输入不合法;");
try {
Threadsleep(1500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
i--;
continue;
}
//生成电脑结果
Random random = new Random();
int auto = randomnextInt(3)+1;
if ((game == 1 && auto == 4) || (game == 2 && auto == 1) || (game == 3 && auto == 2)){//判断玩家胜的条件
sman++;
Systemoutprintln("玩家:"+ result(game) + ";电脑:" + result(auto) + ";玩家胜");
}else if ((game == 1 && auto == 2) || (game == 2 && auto == 3) || (game == 3 && auto == 1)){//判断电脑省的条件
scomputer++;
Systemoutprintln("玩家:"+ result(game) + ";电脑:" + result(auto) + ";电脑胜");
}else {
sping++;
Systemoutprintln("玩家:"+ result(game) + ";电脑:" + result(auto) + ";平");
}
}
String result = "";
if(sman > scomputer){
result = "胜";
}else if(sman == scomputer){
result = "平";
}else {
result = "负";
}
Systemoutprintln("共游戏"+ (i-1) +"局游戏,玩家胜:"+sman+";电脑胜:"+scomputer+";平:"+sping+";玩家"+result);
}
public static String result(int val) {
String value = "" ;
if(val == 1){
value = "剪刀";
}else if(val == 2){
value = "石头";
}else if(val == 3){
value = "布";
}else {
value = "未知";
}
return value;
}
package day1;
import javautilRandom;
import javautilScanner;
public class GuessNumber {
public GuessNumber() {
int count=0;
int yourNum;
int rand=generateNum();
long t1=SystemcurrentTimeMillis();
Scanner sc=new Scanner(Systemin);
Systemoutprintln("输入你猜的数:");
yourNum = scnextInt();
//当随即产生的数步等于你输入的数就一直玩下去
while(yourNum!=rand){
if(yourNum>rand){
Systemoutprintln("++++++真难过,你猜的数大了!++++++++");
yourNum = scnextInt();
}
if(yourNum<rand){
Systemoutprintln("++++++真难过,你猜的数小了!++++++++");
yourNum = scnextInt();
}
count++;
}
long t2=SystemcurrentTimeMillis();
long time=(t2-t1)/1000;
Systemoutprintln("++++++恭喜你猜对了!++++++++");
Systemoutprintln("本次游戏用了"+time+"秒!");
Systemoutprintln("共猜了"+count+"次!继续加油哦!");
}
//产生随即数
public int generateNum(){
int rand;
Random r=new Random();
rand=rnextInt(50);
return rand;
}
public static void main(String[] args){
new GuessNumber();
}
}
这个应该很简单。您是初学者吗?明天用电脑把代码贴上去。
用我自己的方法写了一个,看LZ喜欢不喜欢
12是石头,23是剪子,31是布first表示第一个人。second表示第二个人!
import javautilRandom;
public class Print {
public static void main(String[] args) {
//"12"是石头,“23”是剪子,“31”是布
String[] a = {"12", "23", "31"};
Random r = new Random ();
String first = a[rnextInt(3)];
String second = a[rnextInt(3)];
Systemoutprintln("12是石头,23是剪子,31是布first表示第一个人。second表示第二个人!\n---------");
if (firstequals(second)) {
Systemoutprintln(first + "--" + second + ",(前面是first,后一个是second)" + ":平了");
} else if (firstcharAt(1) == secondcharAt(0)) {
Systemoutprintln("出拳情况:" + first + "--" + second + ",(前面是first,后一个是second)" + "\n结果判断:" + result1(first,second));
} else if (firstcharAt(0) == secondcharAt(1)) {
Systemoutprintln("出拳情况:" + first + "--" + second + ",(前面是first,后一个是second)" + "\n结果判断:" + result2(first,second));
}
}
public static String result1 (String f, String s) {
if (fequals("12") && sequals("23")) {
return "first石头 胜 second剪子";
} else if (fequals("23") && sequals("31")) {
return "first剪子 胜 second布";
} else {
return "first布 胜 second石头";
}
}
public static String result2 (String f, String s) {
if (fequals("12") && sequals("31")) {
return "first石头 输 second布";
} else if (fequals("23") && sequals("12")) {
return "first剪子 输 second石头";
} else {
return "first布 输 second剪子";
}
}
}
为了让游戏有参与感,并体现java面对对象的思想,我先创建一个Player选手类,包含选手的名字playerName还有出拳方法guess()。出拳时采用随机获取0、1和2的方式分别代表石头、剪刀和布,代码如下:
public class Player {
private String playerName;
public Player(String playerName) {
thisplayerName = playerName;
}
public String getPlayerName() {
return playerName;
}
//出拳方法 0-石头 1-剪刀 2-布
public int guess() {
//随机获取0、1、2
int num = new Random()nextInt(3);
if (num == 0) {
Systemoutprint("选手" + thisplayerName + "出的是石头 ");
} else if (num == 1) {
Systemoutprint("选手" + thisplayerName + "出的是剪刀 ");
} else if (num == 2) {
Systemoutprint("选手" + thisplayerName + "出的是布 ");
}
return num;
}
}
然后在主类中,首先要输入对局的总数,然后创建两名选手进行pk,在pk()方法中制定了获胜规则,详见代码注释。最终统计并利用BigDecimal计算胜率(BigDecimal可以很完美的解决整数除法及其四舍五入保留小数的问题):
public class Main {
public static void main(String[] args) {
Systemoutprintln("请输入本局局数:");
Scanner scanner = new Scanner(Systemin);
int sum = scannernextInt();
//创建结果数组,resultArray[0]代表p1的获胜局数,resultArray[1]代表p2的获胜局数,resultArray[2]代表平局局数
int[] resultArray = new int[3];
//创建两名选手
Player p1 = new Player("张三");
Player p2 = new Player("李四");
for (int i = 0; i < sum; i++) {
//根据总局数进行pk
int result = pk(p1, p2);
if (result == 1) {
resultArray[0]++;
} else if (result == -1) {
resultArray[1]++;
} else {
resultArray[2]++;
}
}
Systemoutprintln("");
Systemoutprintln("最终结果统计:");
Systemoutprintln("选手[" + p1getPlayerName() + "]获胜局数为:" + resultArray[0] + ",胜率为:" +
new BigDecimal(resultArray[0])multiply(new BigDecimal(100)divide(new BigDecimal(sum), 2, BigDecimalROUND_HALF_UP)) + "%");
Systemoutprintln("选手[" + p2getPlayerName() + "]获胜局数为:" + resultArray[1] + ",胜率为:" +
new BigDecimal(resultArray[1])multiply(new BigDecimal(100)divide(new BigDecimal(sum), 2, BigDecimalROUND_HALF_UP)) + "%");
Systemoutprintln("平局局数为:" + resultArray[2] + ",平局率为:" +
new BigDecimal(resultArray[2])multiply(new BigDecimal(100)divide(new BigDecimal(sum), 2, BigDecimalROUND_HALF_UP)) + "%");
}
//0-石头 1-剪刀 2-布
//return 0:平局 1:p1获胜 -1:p2获胜
private static int pk(Player p1, Player p2) {
Systemoutprintln("--------------------");
int a = p1guess();
int b = p2guess();
Systemoutprint("\n对局结果:");
//出拳相同平局
if (a == b) {
Systemoutprintln("平局");
return 0;
}
//p1获胜条件:p1出石头时p2出剪刀,p1出剪刀时p2出步,p1出布时p2出石头
else if ((a == 0 && b == 1) || (a == 1 && b == 2) || (a == 2 && b == 0)) {
Systemoutprintln("选手[" + p1getPlayerName() + "]获胜");
return 1;
}
//p2获胜条件:p1出石头时p2出布,p1出剪刀时p2出石头,p1出布时p2出剪刀
else if ((a == 0 && b == 2) || (a == 1 && b == 0) || (a == 2 && b == 1)) {
Systemoutprintln("选手[" + p2getPlayerName() + "]获胜");
return -1;
} else {
//因为规定了随机数产生0、1、2,所以其实不会走到本分支
throw new IllegalArgumentException("本局无效");
}
}
}
对局5局的运行结果:
我这里就只能统计当前游戏的数据了,如果你想统计多局游戏总的胜率信息,那么需要将每一局的比赛结果写到txt文件里,最终根据txt文件内容统计即可。
Systemoutprintln("你出的是:"+Marks+"电脑出的是:"+Marks1"-_-是平局");
丢了一个+号,Marks1后面一个+号没写,
Systemoutprintln("你出的是:"+Marks+"电脑出的是:"+Marks1+"-_-是平局");
以上就是关于用java编写猜拳游戏 最后统计玩了多少次 自己和电脑积分是多少。最后是谁获胜全部的内容,包括:用java编写猜拳游戏 最后统计玩了多少次 自己和电脑积分是多少。最后是谁获胜、急求JAVA程序 以实现猜数游戏。、急求一个JAVA编程,“编写一个猜拳游戏,分别用0、1、2表示石头、剪子、布。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)