Python战舰随机数发生器

时间:2016-09-19 17:25:39

标签: python

我对Python中的类很新。在编写战舰游戏时,我遇到了一个问题,就是选择计算机船只位置的随机x,y坐标和计算机的攻击坐标。我很困惑是否在其中一个函数中生成随机数作为局部变量,或者作为Class属性或实例属性。

最初我想创建一个实例属性(如下),但是我没有定义rand_x。我尝试创建一个生成随机数的Battleship函数,但每次调用它时都会返回相同的坐标对。唯一的方法是为随机#s创建局部变量吗?因为我将不止一次地使用随机生成器,所以不必重复该代码会很好。

感谢您的耐心等待。

编辑:我在随机性函数中包含了更多代码,并在随机性函数中用size替换了self.size

例如,Battleship(4,2,0,0)可能会给我一个[{2,1],[2,1]的hitlist我想在{{1}内随机#s }。

hitlist

2 个答案:

答案 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))

我假设你有屏幕的宽度和高度可用。希望能帮助到你。