#python #class #random #pgzero
#python #класс #Случайный #pgzero
Вопрос:
Я хочу иметь возможность перетасовывать / повторно рандомизировать числа, которые являются выходными данными. Есть ли какой-либо способ сделать это из любого места в коде? Вот класс, на который я ссылаюсь:
class Foe(Actor): #v constructor v
def __init__(self, image):
super().__init__(image)
self.rotation = random.uniform(-2.5, 2.5)
firside = random.randint(1, 8) #picks a random number between 1 and 8 (starting point)
secside = random.randint(1, 8) #"------------------------------------" (ending point)
while firside == secside or secside == firside 1 or secside == firside - 1 or firside == 8 and secside == 1 or firside == 1 and secside == 8: #keeps randomizing the secside variable till its not the same as the firside or not a number close to it
secside = random.randint(1, 8)
if firside == 1: #the starting point is in the top right of the screen (top right till top middle) and this code picks a random position between these point
self.fx = random.randint(0, 425)
self.fy = -40
if secside == 1: #the ending point is in the top right of the screen (top right till top middle) and this code picks a random position between these point
self.dx = random.randint(0, 425)
self.dy = -40
if firside == 2: #north left
self.fx = random.randint(426, 850)
self.fy = -40
if secside == 2:
self.dx = random.randint(426, 850)
self.dy = -40
if firside == 3: #west right
self.fx = 880
self.fy = random.randint(0, 212)
if secside == 3:
self.dx = 880
self.dy = random.randint(0, 212)
if firside == 4: #west left
self.fx = 880
self.fy = random.randint(213, 425)
if secside == 4:
self.dx = 880
self.dy = random.randint(213, 425)
if firside == 5: #south right
self.fx = random.randint(0, 425)
self.fy = 465
if secside == 5:
self.dx = random.randint(0, 425)
self.dy = 465
if firside == 6: #south left
self.fx = random.randint(426, 850)
self.fy = 465
if secside == 6:
self.dx = random.randint(426, 850)
self.dy = 465
if firside == 7: #east right
self.fx = -40
self.fy = random.randint(0, 212)
if secside == 7:
self.dx = -40
self.dy = random.randint(0, 212)
if firside == 8: #east left
self.fx = -40
self.fy = random.randint(213, 425)
if secside == 8:
self.dx = -40
self.dy = random.randint(213, 425)
if main_menu == False:
foeResetter()
(код выбирает случайную позицию для появления противника и случайную позицию для позиции назначения противника)
Заранее спасибо за любую помощь, которую вы предоставляете 🙂
Комментарии:
1. Что вы подразумеваете под «повторением этого класса»? Вы можете создать столько экземпляров класса, сколько захотите. Прочитайте об объектах экземпляра и классе .
2. Я хочу иметь возможность повторно рандомизировать переменные внутри класса. Как бы я это сделал?
3. Каждый раз, когда вы создаете новый экземпляр, атрибуты экземпляра получают новые случайные значения.