Найти - Пользователи
Полная версия: Приколы рандома
Начало » Python для новичков » Приколы рандома
1 2
Enchantner
Есть поле 11 на 9 клеток, по которому я пытаюсь рандомно расставить деревья:

while trees_count <= 10:
x_tree = randrange(1,11)
y_tree = randrange(1,9)
tree = Tree(x_tree,y_tree)
trees_count += 1
Но почему-то все деревья в результате кидаются в одну клетку. В чем прикол?
sypper-pit
import random
Enchantner
sypper-pit
конечно, я об этом не забыл. Но все равно такая лажа.
Андрей Светлов
Enchantner
Скорее всего Tree кривой
>>> import random
>>> for i in range(10):
... print (random.randrange(1, 11), random.randrange(1, 9))
...
(5, 2)
(5, 1)
(7, 6)
(5, 5)
(9, 5)
(6, 4)
(7, 2)
(7, 2)
(9, 7)
(6, 5)
Enchantner
Андрей Светлов
class Tree(pygame.sprite.Sprite):
def __init__(self, cX, cY):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect = load_image('tree.bmp', -1)
screen = pygame.display.get_surface()
self.area = screen.get_rect()
self.rect.topleft = (cX-1)*50, (cY-1)*50
Enchantner
Кажись, сам начал понимать… Просто создаются ссылки на один и тот же объект? То есть конструктор срабатывает один раз? Тогда как сделать?
Андрей Светлов
Думать. Смотреть на код. Можно его куда-нибудь на pastebin или dumpz.org с приведением ссылки и просьбой глянуть - если уж совсем туго.
Viper
Enchantner
Кажись, сам начал понимать… Просто создаются ссылки на один и тот же объект? То есть конструктор срабатывает один раз? Тогда как сделать?
Скорее наоборот, твои деревья создаются, а потом сразу уничтожаются, поскольку ты перезатираешь ссылки на них:
tree = Tree(x_tree,y_tree).
В твоём примере останется только последнее дерево.
balu
Enchantner
tree = Tree(x_tree,y_tree)
Засовывай tree в какой-нибудь контейнер, иначе у тебя все перетирается. Где-то, так:
from random import *
Tree = lambda x, y: (x, y)
q = [Tree(randrange(1, 11), randrange(1, 9)) for i in range(10)]
print q

>> [(1, 3), (6, 3), (7, 2), (9, 8), (9, 7), (2, 7), (3, 8), (10, 4), (4, 2), (1, 8)]
bw
Вопрос на внимательность, блин :-). Сам так и не допер.

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB