【问题标题】:Java Guessing Number Game(Not with Scanner)Java猜数字游戏(不带扫描仪)
【发布时间】:2018-12-09 11:28:24
【问题描述】:

所以它就像一个基本的服务器/客户端游戏,但数字必须由客户端生成,并且客户端必须进行逻辑猜测,例如,如果服务器对 5 说“输入较小的数字”和“输入更大的数字” number”改为0,客户的猜测必须在0到5之间。这部分该怎么做?

【问题讨论】:

  • 欢迎。对于 Stack Overflow,您的问题非常广泛。你得到的答案不是你真正的问题的答案,这也是一个迹象。 Stack Overflow 更适合解决更具体的问题。

标签: java server client


【解决方案1】:

如果您的问题是服务器/客户端实现,那么您应该学习一点关于套接字的知识:

https://docs.oracle.com/javase/tutorial/networking/sockets/index.html

【讨论】:

  • 我的问题是逻辑上生成数字,我的意思是客户必须记住它猜到的旧数字,并根据旧数字猜测一个新数字
【解决方案2】:

如果您正在苦苦挣扎的是客户“猜测”部分,最简单的实现是简单地在您认为“太高”的最小数字和您知道的“太低”的最大数字之间保持中间值,类似:

public class NumberGuessingClientExample {

public static void main(String[] args) {
    new NumberGuessingClient(new ServerStub()).findNumber();
}

public static class NumberGuessingClient {
    private int min = Integer.MIN_VALUE;
    private int max = Integer.MAX_VALUE;
    private final NumberGuessingServer server;

    public NumberGuessingClient(NumberGuessingServer server) {
        this.server = server;
    }

    public int findNumber() {
        Result result = null;
        int value = nextGuess();
        while ((result = server.makeGuess(value)) != Result.CORRECT) {
            System.out.println(value + " = " + result);
            if (result == Result.TOO_HIGH) {
                max = value - 1;
            } else if (result == Result.TOO_LOW) {
                min = value + 1;
            }
            value = nextGuess();
        }
        System.out.println(value);
        return value;
    }

    private int nextGuess() {
        return (int) ((((long) max - (long) min) / 2) + min);
    }
}

public interface NumberGuessingServer {
    Result makeGuess(int value);
}

public static class ServerStub implements NumberGuessingServer {

    private static final int RESULT = 3;

    public Result makeGuess(int value) {
        if (value > RESULT) {
            return Result.TOO_HIGH;
        }
        if (value < RESULT) {
            return Result.TOO_LOW;
        }
        return Result.CORRECT;
    }

}

public enum Result {
    CORRECT, TOO_HIGH, TOO_LOW
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多