java猜拳游戏排行榜
创始人
2024-06-10 16:01:34
0

一、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编写一个猜拳游戏

importjava.util.Scanner;

publicclassGame{

privateScannerscan=newScanner(System.in);

privateStringrule[]={"","剪刀","石头","布"};

privateStringrole[]={"","刘备","孙权","曹操"};

privateComputercomputer;

privateUseruser;

privateintroundCount;

privateGame(){

roundCount=0;

}

publicstaticvoidmain(String[]args){

Gamegame=newGame();

game.start();

}

publicvoidstart(){

computer=newComputer();

System.out.println("--欢迎进入游戏世界--");

System.out.println("********************");

System.out.println("**猜拳,开始**");

System.out.println("********************");

System.out.println();

System.out.println("出拳规则:1.剪刀2.石头3.布");

System.out.print("请选择角色(1:刘备2.孙权3.曹操)");

intuserRole=scan.nextInt();

if(userRole>=1&&userRole<=3){

user=newUser(role[userRole]);

System.out.println();

System.out.print("要开始吗?(y/n)");

Stringstart=scan.next();

if(start.equals("y")){

round();

}

elseif(start.equals("n")){

}

}

}

privatevoidround(){

roundCount++;

System.out.println();

System.out.print("请出拳:1.剪刀2.石头3.布(输入相应数字):");

intuserRule=user.round();

if(userRule>=1&&userRule<=3){

intcomputerRule=computer.round();

judge(userRule,computerRule);

System.out.println();

System.out.print("是否开始下一轮(y/n):");

Stringnext=scan.next();

if(next.equals("y")){

round();

}

elseif(next.equals("n")){

end();

}

}

}

privatevoidjudge(intur,intcr){

System.out.println("你出拳:"+rule[ur]);

System.out.println("电脑出拳:"+rule[cr]);

if(ur==cr){

System.out.println("结果:和局,真衰!嘿嘿,等着瞧吧!");

}

elseif((ur==1&&cr==3)||

(ur==2&&cr==1)||

(ur==3&&cr==2)){

System.out.println("结果:你赢了!");

user.win();

}

else{

System.out.println("结果:你输了!");

computer.win();

}

}

privatevoidend(){

System.out.println("--------------------------------------");

System.out.println(user.getName()+"VS"+computer.getName());

System.out.println("对战次数:"+roundCount);

if(computer.getWin()==user.getWin()){

System.out.println("结果:打成平手,下次再和你一分高下!");

}

elseif(computer.getWin()>user.getWin()){

System.out.println("结果:你输了!电脑赢了"+computer.getWin()+"次!");

}

else{

System.out.println("结果:你赢了!你赢了"+user.getWin()+"次!");

}

System.out.println("--------------------------------------");

}

classComputer{

privateintwin;

privateStringname;

publicComputer(){

win=0;

name="匿名";

}

publicintround(){

return(int)(System.currentTimeMillis()%3)+1;//随机返回1、2、3

}

publicStringgetName(){

returnname;

}

publicvoidwin(){

win++;

}

publicintgetWin(){

returnwin;

}

}

classUser{

privateintwin;

privateStringname="";

publicUser(Stringname){

this.name=name;

win=0;

}

publicintround(){

returnscan.nextInt();

}

publicStringgetName(){

returnname;

}

publicvoidwin(){

win++;

}

publicintgetWin(){

returnwin;

}

}

}

刚刚写好的,应该满足你的题目要求。赢了和输了的提示信息题目里没有是我自己随便写的。

一、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("本局无效");

}

java猜拳游戏排行榜

}

}

对局5局的运行结果:

我这里就只能统计当前游戏的数据了,如果你想统计多局游戏总的胜率信息,那么需要将每一局的比赛结果写到txt文件里,最终根据txt文件内容统计即可。

二、用java编写一个猜拳游戏

importjava.util.Scanner;

publicclassGame{

privateScannerscan=newScanner(System.in);

privateStringrule[]={"","剪刀","石头","布"};

privateStringrole[]={"","刘备","孙权","曹操"};

privateComputercomputer;

privateUseruser;

privateintroundCount;

privateGame(){

roundCount=0;

}

publicstaticvoidmain(String[]args){

Gamegame=newGame();

game.start();

}

publicvoidstart(){

computer=newComputer();

System.out.println("--欢迎进入游戏世界--");

System.out.println("********************");

System.out.println("**猜拳,开始**");

System.out.println("********************");

System.out.println();

System.out.println("出拳规则:1.剪刀2.石头3.布");

System.out.print("请选择角色(1:刘备2.孙权3.曹操)");

intuserRole=scan.nextInt();

if(userRole>=1&&userRole<=3){

user=newUser(role[userRole]);

System.out.println();

System.out.print("要开始吗?(y/n)");

Stringstart=scan.next();

if(start.equals("y")){

round();

}

elseif(start.equals("n")){

}

}

}

privatevoidround(){

roundCount++;

System.out.println();

System.out.print("请出拳:1.剪刀2.石头3.布(输入相应数字):");

intuserRule=user.round();

if(userRule>=1&&userRule<=3){

intcomputerRule=computer.round();

judge(userRule,computerRule);

System.out.println();

System.out.print("是否开始下一轮(y/n):");

Stringnext=scan.next();

if(next.equals("y")){

round();

}

elseif(next.equals("n")){

end();

}

}

}

privatevoidjudge(intur,intcr){

System.out.println("你出拳:"+rule[ur]);

System.out.println("电脑出拳:"+rule[cr]);

if(ur==cr){

System.out.println("结果:和局,真衰!嘿嘿,等着瞧吧!");

}

elseif((ur==1&&cr==3)||

(ur==2&&cr==1)||

(ur==3&&cr==2)){

System.out.println("结果:你赢了!");

user.win();

}

else{

System.out.println("结果:你输了!");

computer.win();

}

}

privatevoidend(){

System.out.println("--------------------------------------");

System.out.println(user.getName()+"VS"+computer.getName());

System.out.println("对战次数:"+roundCount);

if(computer.getWin()==user.getWin()){

System.out.println("结果:打成平手,下次再和你一分高下!");

}

elseif(computer.getWin()>user.getWin()){

System.out.println("结果:你输了!电脑赢了"+computer.getWin()+"次!");

}

else{

System.out.println("结果:你赢了!你赢了"+user.getWin()+"次!");

}

System.out.println("--------------------------------------");

}

classComputer{

privateintwin;

privateStringname;

publicComputer(){

win=0;

name="匿名";

}

publicintround(){

return(int)(System.currentTimeMillis()%3)+1;//随机返回1、2、3

}

publicStringgetName(){

returnname;

}

publicvoidwin(){

win++;

}

publicintgetWin(){

returnwin;

}

}

classUser{

privateintwin;

privateStringname="";

publicUser(Stringname){

this.name=name;

win=0;

}

publicintround(){

returnscan.nextInt();

}

publicStringgetName(){

returnname;

}

publicvoidwin(){

win++;

}

publicintgetWin(){

returnwin;

}

}

}

刚刚写好的,应该满足你的题目要求。赢了和输了的提示信息题目里没有是我自己随便写的。

相关内容

热门资讯

十八禁游戏排行榜 一、十八禁游戏制作公司ILLUSIONILLUSION(イリュージョン)是日本株式会社Eye One...
steam手柄游戏排行榜 一、steam十大必玩手柄游戏列表:1、《真人快打11》《真人快打11》(Mortal Kombat...
h iphone游戏排行榜 各位老铁们好,相信很多人对h iphone游戏排行榜都不是特别的了解,因此呢,今天就来为大家分享下关...
hgame游戏排行榜 大家好,hgame游戏排行榜相信很多的网友都不是很明白,包括《怪异恐剧院》:令人惊艳的HGame,相...
日本好玩h游戏排行榜 一、日本安卓h性游戏下载.很无语有这么难谁告知!!!您好:成人色情游戏是国家明令禁止的游戏,正规的应...
steam游戏排行榜怎么查 一、steam游戏排行榜在哪里看steam游戏排行榜通过官方网站点击进入Steam官网查看。Stea...
美国app游戏排行榜 一、手游排行榜2023前十名手游排行榜2023前十名:《蛋仔派对》《桃源深处有人家》《泰拉瑞亚》《弹...
td游戏排行榜 一、2023好玩的td游戏好玩的td手游2023年,随着技术的不断发展,各种趣味性质的TD游戏也相继...
最新消消乐类的游戏排行榜 一、消消乐游戏排行榜消消乐游戏排行榜如下:《开心消消乐》、《宾果消消消》、《海滨消消乐》、《旋转消消...
变态版游戏盒子排行榜下载 一、十大变态游戏盒子排行榜今天小编要为大家带来的是十大变态游戏盒子排行榜,都是全网高人气的bt手游平...