这是我到目前为止的代码,我的老师希望游戏在你猜到一个数字时“翻转X”,当它们匹配时,保持不变,但当数字不同时,数字“翻转”并再次成为X。他想让游戏在所有数据都被曝光的时候说“你赢了”。在
import random
visual=[['X','X','X','X','X'],['X','X','X','X','X'],['X','X','X','X','X'],['X','X','X','X','X'],['X','X','X','X','X']]
data=[[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]
random.shuffle(data[0])
random.shuffle(data[1])
random.shuffle(data[2])
random.shuffle(data[3])
random.shuffle(data[4])
while True:
print(visual[0])
print(visual[1])
print(visual[2])
print(visual[3])
print(visual[4])
user_input_1 = int(input('enter a number 0 thru 4 to pick your first X position: '))
user_input_2 = int(input('enter a number 0 thru 4 to pick your first Y position: '))
user_input_3 = int(input('enter a number 0 thru 4 to pick your second X position: '))
user_input_4 = int(input('enter a number 0 thru 4 to pick your second Y position: '))
if data[user_input_1][user_input_2] == data[user_input_3][user_input_4]:
visual[user_input_1][user_input_2] = str(data[user_input_1][user_input_2])
visual[user_input_3][user_input_4] = str(data[user_input_3][user_input_4])
print(visual[0])
print(visual[1])
print(visual[2])
print(visual[3])
print(visual[4])
print('Congratulations you won the game!')
break
关于您的代码的一些建议:
以下是我所理解的游戏中的离散步骤:
您的代码成功地初始化了电路板(步骤1),洗牌数据(2),输入循环(3),打印电路板(4),并询问猜测(5)(6)。在
以下是一些关于您缺少的部分的指导:
在得到输入后,您总是希望打印带有分隔缝(7)的板。要做到这一点,你需要先用你写的文章更新视觉效果:
然后打印你的图像。这不需要在if语句中发生,因为您总是希望打印显示的板。
之后,如果用户未命中(8),则需要将其交换回X。你基本上已经写了这个条件。您需要检查数据板中是否有误,如果是,请将这些图像交换回X:
^{pr2}$旁注:理想情况下,您需要清除先前的板印,以测试内存。这部分有点棘手。没有简单的方法可以在不使用操作系统命令的情况下清除分隔缝的打印,这些命令几乎肯定超出了类的范围。我会和你的老师商量一下翻身的期望值。在
如果您对如何使用Python中的操作系统命令实现这一点感兴趣,here是一篇相关的StackOverflow帖子。你需要导入操作系统和导入时间。打印显示后,使用time.sleep(number_of_seconds)给用户多少秒的时间来记忆位置,然后使用操作系统对于linux/mac os或操作系统('CLS')供windows清除屏幕。再说一遍,这不太可能是你老师想要的。
现在让我们来处理获胜条件(9)。当前您正在使用“while True:”并暂停。虽然在这种情况下这可能是功能性的,但是应该尽量避免使用“whiletrue:”(有很多原因可以解释为什么here是一篇针对一个原因的帖子)。像“while”、“do while”和“for”这样的循环结构具有内置的停止条件,每次循环时都会检查这些条件。在这个程序中,你的停止条件是棋盘完全暴露(这就是你如何知道游戏结束,用户不再需要猜测)。所以,在这之前,你希望while循环继续运行。如下所示:
有多种方法可以检查您的获胜条件尚未满足。一种选择是,如果视觉板与数据板仍不相同,则您知道您尚未获胜:
总之,TLDR:
如果您感兴趣的话,还有一些小的地方可以改进您的代码:对缩进非常警惕,do-while循环在这里更合适(您能想出原因吗?),您可以编写函数和循环,以减少大量重复代码(如打印视觉效果时)。但这对你来说已经足够了。在
相关问题 更多 >
编程相关推荐