我对Python中的类比较陌生。在编写一个战舰游戏时,我遇到了一个问题:随机选择x,y坐标作为计算机舰船的位置和计算机的攻击坐标。我不知道是将随机数生成为某个函数中的局部变量,还是生成类属性或实例属性。在
最初我想创建一个实例属性(如下),但我发现rand_x没有定义。我尝试创建一个生成随机数的战列舰函数,但每次调用它时都返回相同的一对坐标。唯一的方法是为随机变量创建一个局部变量吗?因为我将不止一次地使用随机生成器,所以最好不要重复这些代码。在
谢谢你的耐心。在
编辑:我用随机函数包含了更多代码,并用self.size
替换了随机函数中的size
。在
例如,战列舰(4,2,0,0)可能会给我一个hitlist
的[[2,1],[2,1]],我想要随机的在里面hitlist
。在
import random
hitlist=[]; #a global variable
class Battleship(object):
""" Ship object container. A game where the user tries to destroy the enemy's ships User tries to guess computer's position x and y """
def __init__(self, size, numberships,position_x,position_y):
self.position_x=position_x
self.position_y=position_y
self.numberships=numberships
self.size = size
def plotships(self,r):
"""input is integer coordinates for ships and output is an array of arrays with battleship locations CREATES THE HITLIST DONT REPEAT"""
print('plotships function running')
for i in range(self.numberships):
hitlist.append(r) #random number from function randomness
print(hitlist)
return hitlist
def randomness(self):
rand_x=random.choice(range(self.size))
rand_y=random.choice(range(self.size))
randcoord=[rand_x,rand_y]
return randcoord
#Game Interface
size=int(input('Gameboard size'))
numberships=int(input('Waiting for Number of enemy ships'))
b=Battleship(size,numberships,0,0)
random=b.randomness() #create a random x y coordinate
b.plotships(random) #create a hitlist
我想这是因为你用}调用{}。在
size
而不是{即
另外,你在哪里定义
self.rand
?你肯定在构造器打印它时遇到了问题?在编辑-回应以下评论:
如果您想用
^{pr2}$hitlist
填充self.numberships
对独立随机数对,请将plotships
方法编写为:为了得到一个随机数,你可以导入随机库。在
可以使用它初始化类实例上的(X,Y)坐标。在
我假设你有屏幕的宽度和高度。希望有帮助。在
相关问题 更多 >
编程相关推荐