简单的公牛和牛java游戏

时间:2016-01-18 08:23:46

标签: java methods

我尝试创建一个简单的简单公牛和奶牛游戏(https://en.wikipedia.org/wiki/Bulls_and_Cows)。这场比赛是为了我的学校项目。我的知识是有限的,所以我需要使用循环,IF-else结构和其他简单的函数来制作游戏。

编写的代码在某种程度上有效 - 生成代码并理解该数字被引用,但并未表明有多少牛和公牛在错误的假设中。

如果有人指出我正确的方向,我会很高兴:)提前致谢

import java.util.Random;
import java.util.Scanner;

public class BCgame{

    public static void main(String[] args){
        Random r= new Random();
        int number= 0;
        int trynum = 0;
        while(uniq(number= (r.nextInt(9000) + 1000)));
        String targetStr = number +"";
        boolean game = true;
        Scanner input = new Scanner(System.in);
        do{
            System.out.println(number);
            int bulls = 0;
            int cows = 0;
            System.out.print("Guess a number: ");
            int guess;
            guess = input.nextInt();
            if (uniq(guess)  || guess < 1000) continue;
            trynum++;
            String guessStr = guess + "";
            for(int i= 0;i < 4;i++){
                if(guessStr.charAt(i) == targetStr.charAt(i)){
                    bulls++;
                }else if(targetStr.contains(guessStr.charAt(i)+"")){
                    cows++;
                }
            }
            if(bulls == 4){
                game = false;
            }else{
                System.out.println(cows+" Cows and "+bulls+" Bulls.");
            }
        }while(game);
        System.out.println("You won after "+trynum+" guesses!");
    }

    public static boolean uniq(int num){
        String checknum = num+"";
        if(checknum.charAt(0) == checknum.charAt(1)) return false;
            else if(checknum.charAt(1) == checknum.charAt(2)) return false;
                else if(checknum.charAt(2) == checknum.charAt(3)) return false;
    return true;
    };
}

1 个答案:

答案 0 :(得分:1)

您已经使用Rosetta示例(http://rosettacode.org/wiki/Bulls_and_cows#Java)走了很长一段路。继续努力吧。

实验是学习语言的关键,因此请确保您了解每条线的作用并测试结果。

另外,了解如何使用调试工具查看哪些行的行为与您期望的不同,然后尝试理解原因。

如果您遇到特定声明,请发布。否则,这个问题太不明确了,特别是当罗塞塔有一个适合你的工作案例时。