Python战舰随机数发生器

2024-10-02 00:42:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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

Tags: 函数selfforinputsize属性defposition
2条回答

我想这是因为你用size而不是{}调用{}。在

rand_x = random.choice(range(self.size))

另外,你在哪里定义self.rand?你肯定在构造器打印它时遇到了问题?在

编辑-回应以下评论:

如果您想用hitlist填充self.numberships对独立随机数对,请将plotships方法编写为:

^{pr2}$

为了得到一个随机数,你可以导入随机库。在

可以使用它初始化类实例上的(X,Y)坐标。在

import random

Battleship(size, numberships, random.randint(0, WIDTH), random.randint(0, HEIGHT))

我假设你有屏幕的宽度和高度。希望有帮助。在

相关问题 更多 >

    热门问题