现在我正在尝试将战舰棋盘游戏作为练习,并且我大部分时间都在使用带有一些杂项独立功能的类。下面的一切都是独立的。我无法完全理解它,如果我按列表中从最后一个到第一个的顺序攻击船只,这会起作用,但如果你以任何其他顺序进行,它会破坏说列表索引不存在。请帮忙。
基本上我的系统是每当一艘船被“击中”(移动与shipList中的位置相同)然后它添加一个hitList。这些功能是检查 hitList 中的任何项目是否与船舶的已知位置...在制造船舶对象时在单独的列表中创建。我已经尝试了 2 天来完成这项工作
def checkForSunk(shipList, hitList):
#Lists is something like this [[0,1],[0,2],[0,3]]
#ShipList[0] is list, [1] is name of ship
#ShipList is ALL ships.
print 'SHIPLIST : %s' % (shipList)
#[[[[0,1],[0,2],[0,3],[0,4],[0,5],[],[]], 'Destroyer'], [[[0,1],[0,2],[0,3],[0,4],[0,5],[],[]], 'Destroyer'], [[[0,1],[0,2],[0,3],[0,4],[0,5],[],[]], 'Destroyer']]
#[[[0,1],[0,2],[0,3],[0,4],[0,5],[],[]], 'Destroyer']
# 0 1
print 'HITLIST : %s ' % (hitList)
for j in range(len(shipList)):
for i in shipList[j][0]:
if i in hitList:
print 'True in ship # %s' % (shipList[j][1])
del shipList[j][0][shipList[j][0].index(i)] #Delete that part of the ship from the list.
#Check if there's any empty ships, and delete the ship if there are.
for j in range(len(shipList)):
print shipList[j] #Problem around here!!!!!!!!!!!!
if listIsEmpty(shipList[j][0]):
print '%s has been sunk!' % (shipList[j][1])
del shipList[j]
def isGameOver(shiplist):
if shiplist == []:
return True
else:
return False
def listIsEmpty(list):
for i in range(len(list)):
if list[i] != []: #If it finds anything thats not empty, return False. Else true
return False
else:
return True
我做错了吗?我应该物理删除列表吗?
谢谢