Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单UDP/TCP java Hangman_Java_Sockets_Networking_Tcp_Udp - Fatal编程技术网

简单UDP/TCP java Hangman

简单UDP/TCP java Hangman,java,sockets,networking,tcp,udp,Java,Sockets,Networking,Tcp,Udp,我的任务是使用UDP/TCP连接编写简单的游戏。我已经有了一个关于java的简单的刽子手游戏。我想在2个客户端或服务器客户端之间玩这个游戏。这是我的刽子手密码 package gameexample; import java.util.Arrays; import java.util.Scanner; public class Hangman{ public static void main(String[] args) { String[] words = {"writer", "t

我的任务是使用UDP/TCP连接编写简单的游戏。我已经有了一个关于java的简单的刽子手游戏。我想在2个客户端或服务器客户端之间玩这个游戏。这是我的刽子手密码

package gameexample;
import java.util.Arrays;
import java.util.Scanner;

public class Hangman{
public static void main(String[] args) {
    String[] words = {"writer", "that", "program"};
    // Pick random index of words array
    int randomWordNumber = (int) (Math.random() * words.length);
    // Create an array to store already entered letters
    char[] enteredLetters = new char[words[randomWordNumber].length()];
    int triesCount = 0;
    boolean wordIsGuessed = false;
    do {
    // infinitely iterate through cycle as long as enterLetter returns true
    // if enterLetter returns false that means user guessed all the letters
    // in the word e. g. no asterisks were printed by printWord
    switch (enterLetter(words[randomWordNumber], enteredLetters)) {
        case 0:
            triesCount++;
            break;
        case 1:
            triesCount++;
            break;
        case 2:
            break;
        case 3:
            wordIsGuessed = true;
            break;
    }
    } while (! wordIsGuessed);
    System.out.println("\nThe word is " + words[randomWordNumber] +
        " You missed " + (triesCount -findEmptyPosition(enteredLetters)) +
        " time(s)");
}
public static int enterLetter(String word, char[] enteredLetters)    {
    System.out.print("(Guess) Enter a letter in word ");
    // If-clause is true if no asterisks were printed so
    // word is successfully guessed
    if (! printWord(word, enteredLetters))
        return 3;
    System.out.print(" > ");
    Scanner input = new Scanner(System.in);
    int emptyPosition = findEmptyPosition(enteredLetters);
    char userInput = input.nextLine().charAt(0);
    if (inEnteredLetters(userInput, enteredLetters)) {
        System.out.println(userInput + " is already in the word");
        return 2;
    }
    else if (word.contains(String.valueOf(userInput))) {
        enteredLetters[emptyPosition] = userInput;
        return 1;
    }
    else {
        System.out.println(userInput + " is not in the word");
        return 0;
        }
}

asterisks were printed, otherwise return false */
public static boolean printWord(String word, char[] enteredLetters) {
    // Iterate through all letters in word
    boolean asteriskPrinted = false;
    for (int i = 0; i < word.length(); i++) {
        char letter = word.charAt(i);
        // Check if letter already have been entered bu user before
        if (inEnteredLetters(letter, enteredLetters))
            System.out.print(letter); // If yes - print it
        else {
            System.out.print('*');
            asteriskPrinted = true;
        }
    }
    return asteriskPrinted;
}

public static boolean inEnteredLetters(char letter, char[] enteredLetters) {
    return new String(enteredLetters).contains(String.valueOf(letter));
}


public static int findEmptyPosition(char[] enteredLetters) {
    int i = 0;
    while (enteredLetters[i] != '\u0000') i++;
    return i;
 }
}
package示例;
导入java.util.array;
导入java.util.Scanner;
公共级刽子手{
公共静态void main(字符串[]args){
String[]words={“writer”、“that”、“program”};
//选取单词数组的随机索引
int randomWordNumber=(int)(Math.random()*words.length);
//创建数组以存储已输入的字母
char[]enteredLetters=新字符[words[randomWordNumber].length()];
int-triesunt=0;
boolean wordIsGuessed=false;
做{
//只要enterLetter返回true,就可以无限循环
//如果enterLetter返回false,则表示用户猜测了所有字母
//例如,在word中,printWord没有打印任何星号
开关(输入字母(单词[randomWordNumber],输入字母)){
案例0:
triesCount++;
打破
案例1:
triesCount++;
打破
案例2:
打破
案例3:
wordIsGuessed=true;
打破
}
}而(!wordIsGuessed);
System.out.println(“\n单词为”+单词[randomWordNumber]+
“您错过了”+(triesCount-findEmptyPosition(输入字母))+
"时间";;
}
public static int enteredLetter(字符串字,字符[]enteredLetters){
System.out.print(“(猜测)在word中输入字母”);
//如果没有打印星号,则If子句为true
//单词猜对了
如果(!打印字(字,输入字母))
返回3;
系统输出打印(“>”);
扫描仪输入=新扫描仪(System.in);
int emptyPosition=findemptposition(输入字母);
char userInput=input.nextLine().charAt(0);
if(输入者(用户输入,输入字母)){
System.out.println(userInput+“已在word中”);
返回2;
}
else if(word.contains(String.valueOf(userInput))){
enteredLetters[emptyPosition]=用户输入;
返回1;
}
否则{
System.out.println(userInput+“不在单词中”);
返回0;
}
}
已打印星号,否则返回false*/
公共静态布尔打印字(字符串字,字符[]输入字母){
//遍历word中的所有字母
布尔星号打印=假;
for(int i=0;i

有谁能告诉我如何将这段代码写入客户机-服务器程序,让两名玩家轮流等待每次猜测?当其中一人猜到最后一个字母时,游戏就结束了。

嗯。。。问题是什么?网络方面的小提示:UDP是一种无连接协议。谢谢,编辑。我知道,但我有点不知道在这里使用什么是最好的。TCP有点浪费资源,因为您只需要小数据报。另一方面,您可能需要声明UDP不提供的可靠性级别。个人Id只是通过UDP实现一个ACK系统。至于其余的,您只需要提供三种类型的消息:初始字符串、角色选择和游戏结束,以及可选的ACK(如果您认为有必要)。“有人能告诉我如何编写此代码吗”-将程序编写(或转换)为客户机/服务器并不是一项小任务,当然太大了,不能用一个简单的答案来回答。@paul那么基本上我用UDP?