Форум сайта python.su
0
Есть поле 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
Офлайн
6
import random
Офлайн
0
sypper-pit
конечно, я об этом не забыл. Но все равно такая лажа.
Офлайн
14
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)
Офлайн
0
Андрей Светлов
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
Офлайн
0
Кажись, сам начал понимать… Просто создаются ссылки на один и тот же объект? То есть конструктор срабатывает один раз? Тогда как сделать?
Офлайн
14
Думать. Смотреть на код. Можно его куда-нибудь на pastebin или dumpz.org с приведением ссылки и просьбой глянуть - если уж совсем туго.
Офлайн
0
EnchantnerСкорее наоборот, твои деревья создаются, а потом сразу уничтожаются, поскольку ты перезатираешь ссылки на них:
Кажись, сам начал понимать… Просто создаются ссылки на один и тот же объект? То есть конструктор срабатывает один раз? Тогда как сделать?
Офлайн
0
EnchantnerЗасовывай tree в какой-нибудь контейнер, иначе у тебя все перетирается. Где-то, так:
tree = Tree(x_tree,y_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)]
Отредактировано (Март 31, 2009 09:30:02)
Офлайн
20
Вопрос на внимательность, блин :-). Сам так и не допер.
..bw
Офлайн