gpt4 book ai didi

java - 刽子手显示发现的信件

转载 作者:行者123 更新时间:2023-12-01 14:43:12 25 4
gpt4 key购买 nike

我目前正在用 java 编写一个刽子手控制台游戏,到目前为止还没有遇到任何问题。

我现在遇到了一个我似乎无法解决的问题。

我有不同单词的数组,简单、中等和困难,并根据所选的难度随机从它们中获取一个单词。然后我将该单词转换为 *,以便玩家看不到这些字符。

然后要求用户提供字母,程序会通知用户字母是否正确。但问题是,如果 * 在单词中,我似乎无法将其更改为字母。例如,如果单词是“bee”并且玩家选择了 b,我希望 * 更改为 b

有人可以帮我指出正确的方向吗?

刽子手类:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hangman;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

/**
*
* @author Adam2_000
*/
public class Hangman {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {


String player = "";
String selection;
int turn = 12;
List<String> wordBox = new ArrayList<String>();
boolean hangman = false;
Scanner scan = new Scanner(System.in);

//New instances of class and arrays
words words = new words();
String easyWords1[] = words.easyWords;
String mediumWords1[] = words.mediumWords;
String hardWords1[] = words.hardWords;
Random random = new Random();


System.out.println("Welcome to Hangman version 1");
System.out.println("Please choose a difficulty");
System.out.println("A: Easy");
System.out.println("B: Medium");
System.out.println("C: Hard");

System.out.println(" _________ ");
System.out.println("| | ");
System.out.println("| 0 ");
System.out.println("| /|\\ ");
System.out.println("| / \\ ");
System.out.println("| ");
System.out.println("| ");


char iChoice;

do {
selection = scan.nextLine().toUpperCase();
} while (selection.isEmpty());
iChoice = selection.charAt(0);
if (iChoice != 'X') {
switch (iChoice) {

case 'A':
System.out.println("You have choosen easy:");
//Get and print random string from easyWords
int selectA = random.nextInt(easyWords1.length);
String replaceAllEasy = easyWords1[selectA].replaceAll("\\S", "*");
// Print the randomly selected word and its length
System.out.println("Random String selected: " + replaceAllEasy);
System.out.println("This word contains " + easyWords1[selectA].length() + " letters");

//while hangman == false continue to ask player for letters
while (hangman == false) {
System.out.println("Turns remaining: " + turn);
System.out.println("Please choose a letter A-Z :");
String easyChosenLetter = scan.next();

if (wordBox.contains(easyChosenLetter)) {
System.out.println("Letter alreay choosen please choose another letter");
} else {
wordBox.add(easyChosenLetter);
}

if (easyWords1[selectA].contains(easyChosenLetter)) {

System.out.println("Wordbox letters are: " + wordBox);
System.out.println("Yes!");
turn--;
} else {
System.out.println("Wordbox letters are: " + wordBox);
System.out.println("No!");
turn--;
}

if (turn == 0) {
hangman = true;
}

while (hangman == true) {
System.out.println("You lose!");
System.exit(0);
}

}
break;

case 'B':
System.out.println("You have choosen Medium");
//Get and print random string from mediumWords
int selectB = random.nextInt(mediumWords1.length);
String replaceAllMedium = mediumWords1[selectB].replaceAll("\\S", "*");
// Print the randomly selected word and its length
System.out.println("Random String selected: " + replaceAllMedium);
System.out.println("This word contains " + mediumWords1[selectB].length() + " letters");

//while hangman == false continue to ask player for letters
while (hangman == false) {
System.out.println("Turns remaining: " + turn);
System.out.println("Please choose a letter A-Z :");
String mediumChosenLetter = scan.next();

if (wordBox.contains(mediumChosenLetter)) {
System.out.println("Letter alreay choosen please choose another letter");
} else {
wordBox.add(mediumChosenLetter);
}

wordBox.add(mediumChosenLetter);
if (easyWords1[selectB].contains(mediumChosenLetter)) {
System.out.println("Wordbox letters are: " + wordBox);
System.out.print("Yes!");
turn--;

} else {
System.out.println("Wordbox letters are: " + wordBox);
System.out.println("No!");
turn--;
}

if (turn == 0) {
hangman = true;
}

while (hangman == true) {
System.out.println("You lose!");
System.exit(0);
}

}
break;

case 'C':
System.out.println("You have choosen Hard");
//Get and print random string from hardWords
int selectC = random.nextInt(hardWords1.length);
String replaceAllHard = hardWords1[selectC].replaceAll("\\S", "*");
// Print the randomly selected word and its length
System.out.println("Random String selected: " + replaceAllHard);
System.out.println("This word contains " + hardWords1[selectC].length() + " letters");

//while hangman == false continue to ask player for letters
while (hangman == false) {
System.out.println("Turns remaining: " + turn);
System.out.println("Please choose a letter A-Z :");
String hardChosenLetter = scan.next();

if (wordBox.contains(hardChosenLetter)) {
System.out.println("Letter alreay choosen please choose another letter");
} else {
wordBox.add(hardChosenLetter);
}

wordBox.add(hardChosenLetter);
if (easyWords1[selectC].contains(hardChosenLetter)) {
System.out.println("Wordbox letters are: " + wordBox);
System.out.print("Yes!");
turn--;

} else {
System.out.println("Wordbox letters are: " + wordBox);
System.out.println("No!");
turn--;
}

if (turn == 0) {
hangman = true;
}

while (hangman == true) {
System.out.println("You lose!");
System.exit(0);
}


}
break;



}

}
}
}

单词类别:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hangman;

import java.lang.reflect.Array;
import java.util.Random;

/**
*
* @author Adam2_000
*/
public class words extends Hangman {

String[] easyWords = {"Bee", "Car", "Fish", "Shed"};
String[] mediumWords = {"House", "Sheep", "Castle", "Phone"};
String[] hardWords = {"Octagon", "Crocodile", "Chocolate", "Motorbike"};

public String[] getEasyWords() {
return easyWords;
}

public void setEasyWords(String[] easyWords) {
this.easyWords = easyWords;
}

public String[] getMediumWords() {
return mediumWords;
}

public void setMediumWords(String[] mediumWords) {
this.mediumWords = mediumWords;
}

public String[] getHardWords() {
return hardWords;
}

public void setHardWords(String[] hardWords) {
this.hardWords = hardWords;
}

@Override
public String toString() {
return "words{" + "easyWords=" + easyWords + ", mediumWords=" + mediumWords + ", hardWords=" + hardWords + '}';
}
}

最佳答案

您必须将字符串“***”替换为“B**”,而不是更改字符串的第一个字符。 Java 中的字符串是不可变的

String oldstr = "***";
String newstr = 'B'+oldstr.substring(1,2);

也许字符串不是此任务的正确数据结构。也许您想使用字符数组之类的东西并编写自己的 print 函数。

即使是包含这些字符数组的 Word 类也是一个好主意,因为每个对象都可以有自己的索引,告诉您还剩下多少个 *猜测等

<小时/>

Word类的半伪代码。这实际上使用了String。未经测试。

public class Word{

private String name;

private String guessedSoFar;

public String getGuessedSoFar(){
return guessedSoFar;
}

public void changeIndexWith(String achar, int index){
String temp = name.substring(0,index) + achar + name.substring(index+1, name.length();
guessedSoFar = temp;
}

public void setName(String n){
name = n;
}

public String getName(){
return name;
}
}

关于java - 刽子手显示发现的信件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15730154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com