我试图编写代码,通过命令行与一个人对着计算机玩Pig骰子游戏
对于计算机的播放器,我使用3D numpy阵列来存储基于信息当前得分 AI_1_current ,存储分数 AI_1_bank 的游戏策略对手的分数 human_bank 。
这个想法是,每转一圈,计算机都会检查策略数组,如果索引[AI_1_current,AI_1_bank,human_bank]的值等于0,它将继续滚动,如果它等于1 ,它将保留目前的分数。
现在,我遇到的问题是,计算机轮流的功能是不正确地读取阵列,而不是在应该的时候进行存储。
我有这个代码来设置数组:
AI_1_strategy = numpy.zeroes((100,100,100))
for i in range(10, 100):
for j in range(10, 100):
for k in range(10, 100):
AI_1_strategy[i, j, k] = 1
理想情况下,如果i,j或k大于或等于10,计算机将每转一圈
然后我有了这个代码来检查数组:
if AI_1_strategy[AI_1_bank, AI_1_current, human_bank] == 1:
AI_1_bank += AI_1_current # add current points to the bank
AI_1_current = 0
time.sleep(3) # 3 second delay
if AI_1_bank >= 100: # win condition
print "AI_1 WINS!"
else:
AI_current = 0 # sets current points to 0
print "AI has banked"
pig_human() # moves to the player's turn
else:
time.sleep(3) # 3 second delay
print "AI_1 chose to keep rolling"
pig_AI_1() # AI takes another roll
尽管有这段代码,但计算机仍然无法一直保存。
如果我这样做,也会出现问题:
AI_1_strategy = numpy.ones((100,100,100))
for i in range(10, 100):
for j in range(10, 100):
for k in range(10, 100):
AI_1_strategy[i, j, k] = 0
除非是这种情况,否则无论得分如何,它都会在每次转弯时存入,当i,j或k达到10时,它应该真正停止存储。
如果有人能帮助我,我非常感激,我不知道我做错了什么。
感谢。
答案 0 :(得分:0)
看起来你正在犯一个小的逻辑错误。
我有这个代码来设置数组:
AI_1_strategy = numpy.zeroes((100,100,100)) for i in range(10, 100): for j in range(10, 100): for k in range(10, 100): AI_1_strategy[i, j, k] = 1
理想情况下,如果i,j或k大于或等于10,计算机将每转一圈
这是不正确的:i,j和k中的每一个都必须> = 10才能从此数组中读取1。