gpt4 book ai didi

python - 战舰 python ,轮流重置棋盘

转载 作者:行者123 更新时间:2023-11-28 17:49:08 27 4
gpt4 key购买 nike

我正在制作战舰游戏,一切正常。但是由于我加入了一个回合系统,游戏无法正常运行。游戏有两个棋盘(一个是隐藏的,另一个是“公开的”,对手可以看到(所以没有船只)。隐藏的有效,但公众每回合都会重置,所以你看不到你之前的命中率。

下面的代码用于“攻击”序列,当然还有用于回合的 while 循环。那么,您对正确实现转弯系统有何建议?我只需要从函数中获取有关“公共(public)”板的信息。

    def napad(osebni_board):

board = [] #this is the public board, the 'private' one is defined in another function (the board is called osebni_board)
for x in range(0,5):
board.append([" "] * 5)
x=0
while x<1 :
napad_vrstica=streljaj_vrstica()
napad_stolpec = streljaj_stolpec()
osebni_board_priverjanje = list(itertools.chain(*osebni_board))

if napad_vrstica <= len(board)-1 and napad_stolpec <= len(board[0])-1 and "S" in osebni_board_priverjanje:
print osebni_board_priverjanje
if osebni_board[napad_vrstica][napad_stolpec]=="S":
osebni_board[napad_vrstica][napad_stolpec]="" #osebnemu boardu se element S spremeni v element H, zato, da ponovni stren ni razumljen kot zadetek
board[napad_vrstica][napad_stolpec]="H"
osebni_board_priverjanje = list(itertools.chain(*osebni_board))

print True
print "Kapitan, vase koordinate so se izkazale za tocne. Sovrazna ladja je uspesno potopljena!"
print_board(board)
if "S" not in osebni_board_priverjanje:
print_board(board)
print "game over"
break

elif board[napad_vrstica][napad_stolpec]=="H":
print "Ladja na koordinatah {},{} je ze bila potopljena, kapitan {}!".format(napad_vrstica, napad_stolpec, ime)



elif osebni_board[napad_vrstica][napad_stolpec]=="M":
print "Na koordinate {},{} ste ze streljali, kapitan {}!".format(napad_vrstica, napad_stolpec, ime)



else:
board[napad_vrstica][napad_stolpec]="M"
osebni_board[napad_vrstica][napad_stolpec]="M"
print "Zadetek neuspesen, kapitan {}!\n".format(ime)
print_board(board)

else:
mrtvi = random.randint(100, 10000)
print "Kapitan! Zadeli smo obalo! {} mrtvih!\nPoskusite znova!".format(mrtvi)
x+=1

return osebni_board_priverjanje

转向系统:

igralec = 0
while True:
if igralec%2==0:
print "Na vrsti je igralec 1"
napad_igralec_1=napad(igralec_2)

else:
print "Na vrsti je igralec 2"
napad_gralec_2=napad(igralec_1)
igralec+=1
print igralec

最佳答案

我不确定,因为我无法理解变量名,但是在你的 napad 函数的开头,你设置了 board = [],这样将删除 board 中的所有内容。而且它看起来像 board 是一个局部变量,所以无论你做什么它都会在每次函数结束时消失。如果我理解你的代码是正确的,那么每次你调用 napad 时,你似乎都在将私有(private)板载入公共(public)板,但如果每次你这样做,你都是从 board = [ ],那么公共(public)板将没有持久化状态。当您执行 board[napad_vrstica][napad_stolpec]="M" 之类的操作时,您只是在局部变量 board 中设置一个元素,当 napad 功能结束。要解决所有这些问题,您需要在 napad 函数之外创建一次公共(public)板,用空白对其进行初始化,然后引用该公共(public)板(作为全局变量或将其作为参数)从你的 napad 函数中。

关于python - 战舰 python ,轮流重置棋盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517870/

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