【发布时间】:2018-08-07 15:07:37
【问题描述】:
我正在制作战舰游戏。我创建了一个 Ship 类来给船一个位置。
创建类后,我必须创建所有实例,我想知道是否有办法自动化。
大部分程序是无关紧要的,但我将其保留以防万一它可能会影响它是否可以自动化。
import random
class Ship(object):
def __init__(self, length):
self.length = length
def direction(self):
vh = random.choice(['v','h'])
return vh
def location(self):
space = []
row = random.randint(0, 10-self.length)
column = random.randint(0, 10-self.length)
if self.direction == 'v':
for x in range(self.length):
space.append(f'{column}{row+x}')
else:
for x in range(self.length):
space.append(f'{column}{row+x}')
return space
ships_amount = {
'carrier' : 1,
'battleship' : 2,
'cruiser' : 3,
'destroyer' : 4
}
ships_length = {
'carrier' : 5,
'battleship' : 4,
'cruiser' : 3,
'destroyer' : 2
}
我想这样做:
carrier1 = Ship(ships_length['carrier'])
battleship1 = Ship(ships_length['battleship'])
battleship2 = Ship(ships_length['battleship'])
cruiser1 = Ship(ships_length['cruiser'])
cruiser2 = Ship(ships_length['cruiser'])
cruiser3 = Ship(ships_length['cruiser'])
destroyer1 = Ship(ships_length['destroyer'])
destroyer2 = Ship(ships_length['destroyer'])
destroyer3 = Ship(ships_length['destroyer'])
destroyer4 = Ship(ships_length['destroyer'])
但自动化
【问题讨论】:
-
你想得到什么结果?清单可以吗?您目前获得每艘船的命名变量。
-
你想遍历
ships_length吗? -
我已经尝试过迭代 ship_amount 并迭代每个键的数量值,然后为每艘船创建一个实例,但它不起作用
-
@doctorlove 我不明白你的意思是什么我想要结束。我只想创建实例。我可以稍后获取其他内容的位置。
-
是否有任何理由为每个对象创建单独的名称?有几种方法可以做到这一点,但如果您想稍后以编程方式访问它们,它并不是很有用。最好创建一个字典并使用名称作为键。
标签: python python-3.x class oop