「用java编写猜拳游戏」用java编写猜拳游戏教案
本篇文章给大家谈谈用java编写猜拳游戏,以及用java编写猜拳游戏教案对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
Java使用循环,实现猜拳游戏统计多少局及胜率?
为了让游戏有参与感,并体现java面对对象的思想,我先创建一个Player选手类,包含选手的名字playerName还有出拳方法guess()。出拳时采用随机获取0、1和2的方式分别代表石头、剪刀和布,代码如下:
public class Player {
private String playerName;
public Player(String playerName) {
this.playerName = playerName;
}
public String getPlayerName() {
return playerName;
}
//出拳方法 0-石头 1-剪刀 2-布
public int guess() {
//随机获取0、1、2
int num = new Random().nextInt(3);
if (num == 0) {
System.out.print("选手" + this.playerName + "出的是石头 ");
} else if (num == 1) {
System.out.print("选手" + this.playerName + "出的是剪刀 ");
} else if (num == 2) {
System.out.print("选手" + this.playerName + "出的是布 ");
}
return num;
}
}
然后在主类中,首先要输入对局的总数,然后创建两名选手进行pk,在pk()方法中制定了获胜规则,详见代码注释。最终统计并利用BigDecimal计算胜率(BigDecimal可以很完美的解决整数除法及其四舍五入保留小数的问题):
public class Main {
public static void main(String[] args) {
System.out.println("请输入本局局数:");
Scanner scanner = new Scanner(System.in);
int sum = scanner.nextInt();
//创建结果数组,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]++;
}
}
System.out.println("");
System.out.println("最终结果统计:");
System.out.println("选手[" + p1.getPlayerName() + "]获胜局数为:" + resultArray[0] + ",胜率为:" +
new BigDecimal(resultArray[0]).multiply(new BigDecimal(100).divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP)) + "%");
System.out.println("选手[" + p2.getPlayerName() + "]获胜局数为:" + resultArray[1] + ",胜率为:" +
new BigDecimal(resultArray[1]).multiply(new BigDecimal(100).divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP)) + "%");
System.out.println("平局局数为:" + resultArray[2] + ",平局率为:" +
new BigDecimal(resultArray[2]).multiply(new BigDecimal(100).divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP)) + "%");
}
//0-石头 1-剪刀 2-布
//return 0:平局 1:p1获胜 -1:p2获胜
private static int pk(Player p1, Player p2) {
System.out.println("--------------------");
int a = p1.guess();
int b = p2.guess();
System.out.print("\n对局结果:");
//出拳相同平局
if (a == b) {
System.out.println("平局");
return 0;
}
//p1获胜条件:p1出石头时p2出剪刀,p1出剪刀时p2出步,p1出布时p2出石头
else if ((a == 0 b == 1) || (a == 1 b == 2) || (a == 2 b == 0)) {
System.out.println("选手[" + p1.getPlayerName() + "]获胜");
return 1;
}
//p2获胜条件:p1出石头时p2出布,p1出剪刀时p2出石头,p1出布时p2出剪刀
else if ((a == 0 b == 2) || (a == 1 b == 0) || (a == 2 b == 1)) {
System.out.println("选手[" + p2.getPlayerName() + "]获胜");
return -1;
} else {
//因为规定了随机数产生0、1、2,所以其实不会走到本分支
throw new IllegalArgumentException("本局无效");
}
}
}
对局5局的运行结果:
我这里就只能统计当前游戏的数据了,如果你想统计多局游戏总的胜率信息,那么需要将每一局的比赛结果写到txt文件里,最终根据txt文件内容统计即可。
java猜拳游戏 (3局2胜)
package Demo;
import java.util.Random;
import java.util.Scanner;
public class Demo12 {
public static void main(String[] args) {
String[] str = { "石头", "剪刀", "布" };
Random ram = new Random();
int y, n, i;
while (true) {
System.out.println("菜单:\n1、开始猜拳 \n9、退出");
Scanner scan = new Scanner(System.in);
System.out.print("请选择:");
String s = scan.nextLine();
if ("1".equals(s.trim())) {
y = 0;
n = 0;
i = 0;
while (true) {
try {
System.out.println("请出拳:1、石头 2、剪刀 3、布");
int s1 = Integer.parseInt(scan.nextLine());
if (s1 0 s1 4) {
System.out.println("你 出:" + str[s1 - 1]);
int s2 = ram.nextInt(3);
System.out.println("我 出:" + str[s2]);
if (s1 == (s2 + 1)) {
System.out.println("这次是平局");
} else if ((s1 == 1 s2 == 1)
|| (s1 == 2 s2 == 2)
|| (s1 == 3 s2 == 0)) {
System.out.println("这次你赢了!");
y++;
} else if ((s1 == 1 s2 == 2)
|| (s1 == 2 s2 == 0)
|| (s1 == 3 s2 == 1)) {
System.out.println("这次你输了!");
n++;
}
if (i == 2) {
if (y n) {
System.out.println("你赢了 " + y + ":" + n);
} else if (y n) {
System.out.println("你输了 " + y + ":" + n);
} else {
System.out.println("平局 " + y + ":" + n);
}
break;
}
i++;
} else {
System.out.println("输入有误!");
}
} catch (Exception ex) {
System.out.println("输入有误!");
}
}
} else if ("9".equals(s.trim())) {
System.out.println("退出成功");
return;
} else {
System.out.println("指令错误~");
}
}
}
}
菜单:
1、开始猜拳
9、退出
请选择:2
指令错误~
菜单:
1、开始猜拳
9、退出
请选择:1
请出拳:1、石头 2、剪刀 3、布
2
你 出:剪刀
我 出:布
这次你赢了!
请出拳:1、石头 2、剪刀 3、布
4
输入有误!
请出拳:1、石头 2、剪刀 3、布
3
你 出:布
我 出:布
这次是平局
请出拳:1、石头 2、剪刀 3、布
1
你 出:石头
我 出:石头
这次是平局
你赢了 1:0
菜单:
1、开始猜拳
9、退出
请选择:9
退出成功
用java如何编写一个猜拳游戏?
我之前写了个猜拳游戏的源代码,不过没你想的这么精彩。你才给5分就给你你自己修改了,应该很简单的。要多给点分我可以帮你修改。\x0d\x0aimport java.util.Scanner;\x0d\x0aimport java.util.Random;\x0d\x0apublic class caiquan\x0d\x0a{\x0d\x0afinal int jiandao=0;\x0d\x0afinal int shitou=1;\x0d\x0afinal int bu=2;\x0d\x0a\x0d\x0apublic static void main(String[] args)\x0d\x0a{\x0d\x0aString yn="y";\x0d\x0awhile (yn.equals("y"))\x0d\x0a {\x0d\x0a Scanner scanner = new Scanner(System.in);\x0d\x0a System.out.println("欢迎玩猜拳游戏。请输入0,1,2:0表示剪刀,1表示石头,2表示布");\x0d\x0a int a = scanner.nextInt();\x0d\x0a\x0d\x0a Random rd = new Random();\x0d\x0a int b = rd.nextInt(3); \x0d\x0a\x0d\x0a switch (b)\x0d\x0a {\x0d\x0a case 0:\x0d\x0a {\x0d\x0a System.out.println("系统出的是剪刀");\x0d\x0a switch(a)\x0d\x0a {\x0d\x0a case 0:System.out.println("平");break;\x0d\x0a case 1:System.out.println("赢");break;\x0d\x0a case 2:System.out.println("输");break;\x0d\x0a }\x0d\x0a }\x0d\x0a break;\x0d\x0a case 1:\x0d\x0a {\x0d\x0a System.out.println("系统出的是石头");\x0d\x0a switch(a)\x0d\x0a {\x0d\x0a case 0:System.out.println("输");break;\x0d\x0a case 1:System.out.println("平");break;\x0d\x0a case 2:System.out.println("赢");break;\x0d\x0a }\x0d\x0a }\x0d\x0a break;\x0d\x0a case 2:\x0d\x0a {\x0d\x0a System.out.println("系统出的是布");\x0d\x0a switch(a)\x0d\x0a {\x0d\x0a case 0:System.out.println("赢");break;\x0d\x0a case 1:System.out.println("输");break;\x0d\x0a case 2:System.out.println("平");break;\x0d\x0a }\x0d\x0a }\x0d\x0a }\x0d\x0a Scanner ynn = new Scanner(System.in);\x0d\x0a System.out.println("是否继续?是请输入y,否则输入n。");\x0d\x0a yn=ynn.next();\x0d\x0a }\x0d\x0a}\x0d\x0a}
关于用java编写猜拳游戏和用java编写猜拳游戏教案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。