-2
我正在研究我的最終編程項目,並試圖製作戰艦。我唯一需要做的就是編寫自動智能程序。到目前爲止,它的工作方式是猜測從1到11的兩個隨機整數,以在網格中選取一個隨機空間。一旦碰到什麼東西,我就制定了規則,以便它能檢查所有方面,直到它沉沒了整艘船。與此相關的問題是,那麼計算機一次只能輪到八圈。我需要以某種方式跳出這個功能,回到我的主要運行功能,然後重新開始下一個回合。有沒有辦法做到這一點,還是會有一個更好,完全不同的方式來輪流?在函數中斷和恢復?
這是我的轉身功能目前的樣子。 user_guess函數可以正常工作,然後檢查是否贏得了遊戲。思考()是純粹的審美,然後我得到我有疑問的comp_guess函數,然後檢查是否丟失。然後它會回想起來。
def turns():
user_guess()
if win_game==True:
return ('YOU WIN!')
thinking()
comp_guess()
if lose_game==True:
return ('YOU LOSE!')
turns()
那麼到目前爲止,我有我comp_guess功能是:
def comp_guess():
comp_in1=random.randrange(1,11)
comp_in2=random.randrange(1,11)
if (grid_two[comp_in1])[comp_in2]=='S':
(grid_two[comp_in1])[comp_in2]='X'
(grid_four[comp_in1])[comp_in2]='X'
else:
(grid_two[comp_in1])[comp_in2]='*'
(grid_four[comp_in1])[comp_in2]='*'
for f in grid_four:
print(' '.join(f))
grid_two是所有的船舶位置的存儲網格。 grid_four是顯示的那個,它只是跟蹤計算機的移動以及它們是否被擊中或未命中。
到目前爲止所做的一個具體示例將幫助我們更好地回答您的問題。但是,您應該有一個基於某些輸入邏輯/狀態選擇單個空間的函數。然後根據需要在另一個控制程序流程的函數中多次調用此函數。 – BlackVegetable
恐怕這會關閉,也許你想展示你的程序大綱。只是爲了跳入:即使沒有你的邏輯,你也需要在移動之間存儲狀態 - 否則你永遠不會知道你已經觸發了哪些字段。將其插入到程序的整體設計中,您就會知道在哪裏存儲有關碰到某些東西的信息。如果您不確定如何構建這個問題,那會產生一個更具體的問題,與代碼示例一起,在這裏可能更容易回答。 – Nicolas78
基於粗略掃描您的問題,聽起來您想要*協程*。 Python生成器可以作爲協程來實現。 [閱讀詳情](http://www.dabeaz.com/coroutines/index.html)。 – kojiro