用java编写猜拳游戏 最后统计玩了多少次 自己和电脑积分是多少。最后是谁获胜

用java编写猜拳游戏 最后统计玩了多少次 自己和电脑积分是多少。最后是谁获胜,第1张

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表示石头、剪子、布。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9880945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存