我正在努力用我目前所知的Python编写一个简单的Hangman游戏(我正在以艰难的方式学习Python),到目前为止我有这个:
from sys import argv
import random
script_name, dict_file = argv
hang_list = open(dict_file).read().splitlines()
hang_list = filter(None, hang_list)
word = random.choice(hang_list)
guesses = ''
def compare_words():
global guesses
new_word = ''
for char in word:
if char in guesses:
new_word += char
else:
new_word += "_"
return new_word
def test_letter():
global guesses
letter = raw_input("Guess a letter: ")
guesses += letter
new_word = compare_words()
print "\nCurrent guesses: %s" % guesses
print "%s\n\n" % new_word
if new_word == word:
print "You won!"
else:
test_letter()
test_letter()
Run Code Online (Sandbox Code Playgroud)
我还没有实施评分系统(小菜一碟),但我的布局有问题.如你所知,这将打印"当前猜测:"和每次新词; 但是,我想要的是四行看起来像:
Guess a letter:
Guesses: abczy
__c__b_
Run Code Online (Sandbox Code Playgroud)
并让这三条线不断更新.但是,我无法弄清楚如何使打印替换标准输出.我相信我需要使用\r转义字符,但我已经尝试将它放在各个地方,但无法让它工作.那么,我应该如何修改它以使其替换?我宁愿不清楚,因为它仍然使事情有点混乱; 我想换掉那里的东西.谢谢!
\r 字符是回车符,这意味着它将把光标返回到当前行的开头。如果你想重画光标所在的线,那没问题,但如果你想重画其他线,那就不行了。
要执行您想要的操作,您需要使用终端库,例如 Linux 上的curses 或Windows 上的控制台API。如果您只是在 Linux 上工作,并且想要一种更简单的方法来访问颜色、光标移动和无回显的输入,那么您可能会比尝试 bless 更糟糕(https://pypi.python.org/pypi/blessed/)。
如果你需要一个跨平台 API 来完成这类事情,目前还没有纯 Python 的方法来处理这一切,但我正在研究一种方法。https://github.com/peterbrittain/asciimatics中的 Screen 类以跨平台的方式涵盖了上述所有功能。
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |