这是一个刽子手游戏,逻辑很好-单词填写正确,刽子手会越来越多地被每个单词绞死。然而,“图形”对于用户来说有点困难,正如您在下面的输出中所看到的:
3
[ .----------------.
| .--------------. |
| | _______ | |
| | |_ __ \ | |
| | | |__) | | |
| | | __ / | |
| | _| | \ \_ | |
| | |____| |___| | |
| | | |
| '--------------' |
'----------------' , .----------------.
| .--------------. |
| | ____ ____ | |
| | |_ || _| | |
| | | |__| | | |
| | | __ | | |
| | _| | | |_ | |
| | |____||____| | |
| | | |
| '--------------' |
'----------------' , .----------------.s
| .--------------. |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| '--------------' |
'----------------'\, .----------------.s
| .--------------. |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| '--------------' |
'----------------'\, .----------------.
| .--------------. |
| | ____ | |
| | .' `. | |
| | / .--. \ | |
| | | | | | | |
| | \ `--' / | |
| | `.____.' | |
| | | |
| '--------------' |
'----------------' , .----------------.s
| .--------------. |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| '--------------' |
'----------------'\, .----------------.s
| .--------------. |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| '--------------' |
'----------------'\, .----------------.
| .--------------. |
| | _______ | |
| | |_ __ \ | |
| | | |__) | | |
| | | __ / | |
| | _| | \ \_ | |
| | |____| |___| | |
| | | |
| '--------------' |
'----------------' , .----------------.
| .--------------. |
| | ____ | |
| | .' `. | |
| | / .--. \ | |
| | | | | | | |
| | \ `--' / | |
| | `.____.' | |
| | | |
| '--------------' |
'----------------' , .----------------.s
| .--------------. |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| '--------------' |
'----------------'\]
怎么能把它弄平?下面的三个框显示了如何创建它的相关代码。
if (word.contains(guess)) {
for (int location = 0; location < word.length(); location++) {
String letter = String.valueOf(word.charAt(location));
if (letter.equalsIgnoreCase(guess)) {
progressOnWord.set(location, guess);
}
}
numberCorrect++;
p(numberCorrect);
}
当存在正确的单词时,上述代码将填充ArrayList progressOnWord。progressOnWord以“0000000000”开头,即单词中有多少个字符可供猜测,就有多少个零。如果猜到了正确的字母,则用正确的字母填充,例如:
上述当前阶段的“rh00o00ro0”。然后将其转换为ASCII:如果字符串为0,则将ASCII块空白添加到ASCIIform,即progressOnWord的ASCII形式。例如,如果progressOnWord是rh00o00ro0,那么ASCII块将是您在上面看到的。空白设置是不分青红皂白的,它不关心空白是什么位置,它只是将所有的0设置为空白。
for (int j = 0; j < progressOnWord.size(); j++) {
String wordPlace = progressOnWord.get(j);
if (wordPlace.equals("0")) {
ASCIIform.set(j, ASCIIblank);
}
这句话是有区别的,它确保字母在正确的位置。
for (int k = 0; k < lowercase.length; k++) {
String letter = String.valueOf(lowercase[k]);
String ASCIIletter = ASCIIalphabet[k];
if (wordPlace.equalsIgnoreCase(letter)) {
ASCIIform.set(j, ASCIIletter);
}
}
}
请注意,这两段代码是连续的,但在这里为了便于注释而分开。那么回到问题上来:为什么每个块都在一条新线上,如何修复?它从ArrayList获取块
public static String[] getASCIIalphabet() {
String[] ASCIIalphabet = {
"""
.----------------.\s
| .--------------. |
| | __ | |
| | / \\ | |
| | / /\\ \\ | |
| | / ____ \\ | |
| | _/ / \\ \\_ | |
| ||____| |____|| |
| | | |
| '--------------' |
'----------------'\s""",
"""
.----------------.\s
| .--------------. |
| | ______ | |
| | |_ _ \\ | |
| | | |_) | | |
| | | __'. | |
| | _| |__) | | |
| | |_______/ | |
| | | |
| '--------------' |
'----------------'\s"""
};
ArrayList的格式可能是问题所在吗?就像你有
"0",
"1",
"2",
在ArrayList中,它会打印以下内容吗?
0
1
2
我不这么认为。是因为增加了区块吗?他们被1加1,因为他们猜测,这是造成堆叠?或者它是块本身中的某个字符-在字母表数组列表中的文本块中,它可能是
\s
?
为了提供更多关于Daniel回答的细节,
StringBuilder。追加(字符c)
和ArrayList。正在使用set(int索引、字符串元素)
。
代码如下:
for (int j = 0; j < progressOnWord.size(); j++) {
String wordPlace = progressOnWord.get(j);
if (wordPlace.equals("0")) {
ASCIIform.set(j, ASCIIblank);
}
如上所述,由于0是占位符,当遇到0时,它将替换为ASCII块空白:
'----------------'
| .--------------. |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| '--------------' |
'----------------'\,
for (int k = 0; k < lowercase.length; k++) {
String letter = String.valueOf(lowercase[k]);
String ASCIIletter = ASCIIalphabet[k];
if (wordPlace.equalsIgnoreCase(letter)) {
ASCIIform.set(j, ASCIIletter);
}
}
上面的代码在循环中遍历字母表,循环遍历单词中的每个字符。例如,对于“rhinoceros”:如果进度为rh00o00ro0,则检查r是否为0。不,然后它继续迭代a,b,c。。。z、 直到找到r。当它在字母表中找到r时,它会注意到r在进行中的0点,并注意到r是字母表中的第18个字母,然后将ASCII字中的0点设置为ASCII块字母表中的第18个字符串:
[ .----------------.
| .--------------. |
| | _______ | |
| | |_ __ \ | |
| | | |__) | | |
| | | __ / | |
| | _| | \ \_ | |
| | |____| |___| | |
| | | |
| '--------------' |
'----------------' ,
有必要使用
ArrayList.set(int index, String元素)
方法,因为角色的位置在这个游戏中很重要。
相反,
StringBuilder。在创建ASCII转换的演示时使用append(char c)
;如果用户输入“rhinoceros”,它将以上面看到的ASCII块样式打印完整的单词“rhinoceros”,以便用户体验“图形”样式。代码如下:
for (int i = 0; i < allCaps.length(); i++) {
char c = allCaps.charAt(i);
for (int j = 0; j < uppercase.length; j++) {
char bigChar = uppercase[j];
String ASCIIblock = getASCIIalphabet()[j];
if (c == bigChar) ASCIIword.append(ASCIIblock);
}
}
值得注意的是,
StringBuilder。append()
和数组列表。set()
产生相同的结果:堆叠。有没有办法将append()
或set()
设置为“侧边”?默认情况下,append()
和set()
方法堆叠字母;看起来它一定是ArrayList中的文本块格式。虽然水平通常是默认值,但是否可以在水平方向强制执行此任意附加/设置,以导致R----
我现在明白你的问题了,问题是你在绘制每个字符后都要追加行,这意味着你不能回到同一行来绘制另一个字符,所以你可以将字符中的每一行都保存在String数组中(String[]
)在您的原始ArrayList中,因此它将是ArrayList
final int numberOfLines = 11;
for (int i = 0; i < numberOfLines; i++) {
for (int j = 0; j < asciiForm.size(); j++) {
String[] word = asciiForm.get(j);
System.out.print(word[i]);
}
System.out.println("\t");
}
角色在ArrayList中的外观示例:
asciiForm.add(
new String[] {
" .----------------. ",
"| .--------------. |",
"| | _______ | |",
"| | |_ __ \\ | |",
"| | | |__) | | |",
"| | | __ / | |",
"| | _| | \\ \\_ | |",
"| | |____| |___| | |",
"| | | |",
"| '--------------' |",
" '----------------' "
}
);
我得到的输出:
注意:我没有将所有字符添加到ArrayList中,因为这样做对我来说是不必要的,我只添加了R和H
我有一个5页的pdf文件,每页有一个表,我需要提取。我需要从每一页提取所有的表,并将它们保存为数据帧文件,所有使用python,所以我转换了文件,使用tabula的csv文件 文件输出的主要问题。csv是指有几个额外的逗号。 实例 当我将csv文件转换成行/列时,我得到了一些行偏移 注意:dataframe应该有6列,其中包含空字段。我猜额外的逗号来自pdf文件中的空格。如何从csv文件中删除额外
我使用使用捕获的计数器从容器中删除一半元素,如下所示。用编译的C 20 输出出乎意料。对于向量,删除了一个额外的元素: 我打印出结果,看起来是意外删除的元素 虽然这通常不是erase_if的正常用法,但我仍然很好奇为什么它只发生在向量上,而不发生在其他贴图上。我猜这和迭代器类型shenanigan有关。如果有人能详细解释,我将不胜感激。
问题内容: 如何使用Java删除文本文件的前两行? 问题答案: 这是番石榴解决方案: 是的,整个文件都被读到内存中,因此不要尝试使用庞大的服务器日志文件。
我在SwiftUI中有一个InsertGroupedListStyle列表,并注意到iOS 15中添加了额外的顶部填充。如何控制或删除此项? 以下是iOS 14: iOS15:
我有一个带有声明的XML文件,需要使用XSLT将其删除,用于我使用的样式表版本=“2.0” 我拥有的xml文件(输入) 我需要的输出