我对Python中的类很新。在编写战舰游戏时,我遇到了一个问题,就是选择计算机船只位置的随机x,y坐标和计算机的攻击坐标。我很困惑是否在其中一个函数中生成随机数作为局部变量,或者作为Class属性或实例属性。
最初我想创建一个实例属性(如下),但是我没有定义rand_x。我尝试创建一个生成随机数的Battleship函数,但每次调用它时都会返回相同的坐标对。唯一的方法是为随机#s创建局部变量吗?因为我将不止一次地使用随机生成器,所以不必重复该代码会很好。
感谢您的耐心等待。
编辑:我在随机性函数中包含了更多代码,并在随机性函数中用size
替换了self.size
。
例如,Battleship(4,2,0,0)可能会给我一个[{2,1],[2,1]的hitlist
我想在{{1}内随机#s }。
hitlist
答案 0 :(得分:2)
我认为这是因为您使用random.choice
而不是size
致电self.size
。
即
rand_x = random.choice(range(self.size))
另外,您在哪里定义self.rand
?当然你在试图打印它的构造函数中遇到问题了吗?
编辑 - 对以下评论作出回应:
如果您希望hitlist
填充self.numberships
对独立的随机数对,请将plotships
方法写为:
def plotships(self):
"""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(randomness()) #random number from function randomness
print(hitlist)
return hitlist
答案 1 :(得分:0)
要获得随机数,您可以导入随机库。
您可以使用它来初始化您班级实例上的(X,Y)坐标。
import random
Battleship(size, numberships, random.randint(0, WIDTH), random.randint(0, HEIGHT))
我假设你有屏幕的宽度和高度可用。希望能帮助到你。