java - 如何在我的代码中实现 GUI?

标签 java user-interface

所以我刚刚完成了这个我为了好玩而做的项目。我对 GUI 有基本的了解,但还不是很深入,也没有真正将其应用到我的项目之一中。我不确定如何将这一切实现到我的代码中,但是人们可以给我建议或至少为我指出正确的方向吗?

这款游戏是 HangMan。

代码: 公共(public)课刽子手 {

public static void main(String[] args) {
    Scanner sc = new Scanner (System.in);
    String mysteryGuess = "hello";
    String userGuess = "";
    int wrongGuesses = 0;
    boolean[] guessed = new boolean[mysteryGuess.length()];

    System.out.println("Hello and welcome to Hang Man!");
    loop:
    for(;;){
        String[] wordAsArray = convertToStringArray(mysteryGuess);

        for (int i = 0; i<wordAsArray.length;i++)
            if(wordAsArray[i].equals(userGuess))
                guessed[i]=true;
        System.out.println("Word so far:" + visibleWord(wordAsArray,guessed));
        System.out.println("What is your guess?");
        userGuess = sc.next();
        boolean guessResult = guess(userGuess,wordAsArray,guessed);
        if (guessResult==(true))
            System.out.println("Correct");
        else{
            System.out.println("Incorrect");
            wrongGuesses++;
        }
        if (didWin(guessed)==true)
            break loop;
    }
    System.out.println("Good Job! The word was " + mysteryGuess);
    System.out.println("You only got " + wrongGuesses + " wrong!");
}


//This method creates an array version of the parameter word
//For example, if word contained the data "hello", then this method
//would return {"h", "e", "l", "l", "o"}
//Parameters:   word - a single word
//Returns:      an array containing each letter in word
public static String[] convertToStringArray(String word) {
    String [] pWord = new String [word.length()];
    for (int i = 0; i<pWord.length; i++){
        pWord[i] = word.substring(i,i+1);
    }
    return pWord;

}


//This method determines whether the player has won the game of HangMan
//Parameters:   guessed - array of boolean values
//Returns:      true - if every value in guessed is true
//              false - if at least one value in guessed is false
public static boolean didWin(boolean[] guessed) {
    boolean bGuess = true;
    loop:
    for (int i = 0; i<guessed.length;i++){
        if(guessed[i]==false){
            bGuess = false;
            break loop;
        }


    }
        return bGuess;
}


//This method determines what portion of the hidden word is visible
//For example, if the parameters are as follows:
//     wordAsArray: {"h", "e", "l", "l", "o"}
//     guessed: {true, false, false, false, true}
//Then the method should return "h???o"
//Parameters:   wordAsArray - the individual letters to be guessed
//              guessed - array of boolean values; a true value means the corresponding letter has been guessed
//Returns:      A string representing how much of the word has been guessed (unguessed letters are represented by ?'s)
public static String visibleWord(String[] wordAsArray, boolean[] guessed) {
    String visibleWord="";
    String[] holder = new String [wordAsArray.length];
    for (int i = 0; i<holder.length;i++)
        holder[i]=wordAsArray[i];
    for(int i = 0; i<holder.length;i++){
        if (guessed[i] == true)
            holder[i]=holder[i];
        if (guessed[i] == false)
            holder[i]="?";
    }
    for(int i = 0; i<holder.length;i++){
        visibleWord=visibleWord+holder[i];
    }
    return visibleWord;
}


//This method checks to see if a player has made a successful guess in the game of Hang Man
//For example, if the parameters are as follows:
//     letter: "e"
//     wordAsArray: {"h", "e", "l", "l", "o"}
//     guessed: {true, false, false, false, true}
//Then the guessed array would be changed to:
//      guessed: {true, true, false, false, true}
//And the method would return false
//Parameters:   letter - the letter that the user has just guessed
//              wordAsArray - an array of individual letters that are to be guessed
//              guessed - array of boolean values; a true value means the corresponding letter has been guessed
//Returns:  true - if letter matches an unguessed letter in wordAsArray
//          false - otherwise
public static boolean guess(String letter, String[] wordAsArray, boolean[] guessed) {
    boolean appearsAtLeastOnce=false;
    for(int i = 0; i<wordAsArray.length;i++)
        if(letter.equalsIgnoreCase(wordAsArray[i])){
            guessed[i] = true;
            appearsAtLeastOnce=true;
        }
    return appearsAtLeastOnce;



}

感谢您的宝贵时间!

最佳答案

如果您以前从未制作过 GUI 程序,那么尝试将控制台程序转换为 GUI 程序并不是一件容易的事。您需要了解事件驱动编程。我建议你看看Swing tutorials

<小时/>

不过有一些提示。如果您想要一个“半gui”程序。您可以仅使用 JOptionPane 作为输入。假设您想获得一个数字输入。你会做这样的事情

String numberString = JOptionPane.showInputDialog(null, "Enter a Number");
int number = Integer.parseInteger(numberString);

完成第一行后,输入 Pane 会自动弹出。寻求意见。结果是一个字符串,因此您必须解析它以获得一个数字。

此外,如果您只想显示一条消息,只需使用

JOptionPane.showMessageDialog(null, message);

您可以这样做并显示一些结果。在上面的情况下,当您只想显示一条消息时,您不需要将其设置为等于任何内容。因此,您可以只使用 JOPtionpane.showMesageDialog(),而不是 System.out.println(),而不是 scan.next(),您将使用 JOptionPane.showInputDialog()

关于java - 如何在我的代码中实现 GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21059430/

相关文章:

java - 在 Web 应用程序(jsp、Tomcat 和 MySQL)中使用 jdbc 连接

java - 为什么静态变量在线程之间共享

在一个线程上创建的 C# 控件不能作为另一线程上控件的父级

java - NoClassDefFoundError:使用Gradle创建可运行的* .jar时出现org/slf4j/LoggerFactory

Java 反射 : Difference between getMethods() and getDeclaredMethods()

java - 创建 HttpsSession 时如何更改 DefaultSessionTrackingModes

user-interface - 如何在 float 中使卡中的小部件居中对齐

user-interface - Netbeans 6.8 上的功能测试

java - JTextField 永久位置/位置?

android - 如何让文字发光?