Форум сайта python.su
Есть поле 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
Офлайн
import random
Офлайн
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)
Офлайн
Андрей Светлов
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
Офлайн
Кажись, сам начал понимать… Просто создаются ссылки на один и тот же объект? То есть конструктор срабатывает один раз? Тогда как сделать?
Офлайн
Думать. Смотреть на код. Можно его куда-нибудь на pastebin или dumpz.org с приведением ссылки и просьбой глянуть - если уж совсем туго.
Офлайн
EnchantnerСкорее наоборот, твои деревья создаются, а потом сразу уничтожаются, поскольку ты перезатираешь ссылки на них:
Кажись, сам начал понимать… Просто создаются ссылки на один и тот же объект? То есть конструктор срабатывает один раз? Тогда как сделать?
Офлайн
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)
Офлайн
Вопрос на внимательность, блин :-). Сам так и не допер.
..bw
Офлайн