Уведомления

Группа в Telegram: @pythonsu

#1 Март 27, 2009 21:20:28

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Приколы рандома

Есть поле 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
Но почему-то все деревья в результате кидаются в одну клетку. В чем прикол?



Офлайн

#2 Март 27, 2009 22:25:22

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Приколы рандома

import random

Офлайн

#3 Март 27, 2009 22:31:14

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Приколы рандома

sypper-pit
конечно, я об этом не забыл. Но все равно такая лажа.



Офлайн

#4 Март 27, 2009 22:47:48

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  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)



Офлайн

#5 Март 28, 2009 11:20:45

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Приколы рандома

Андрей Светлов

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



Офлайн

#6 Март 28, 2009 11:27:08

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Приколы рандома

Кажись, сам начал понимать… Просто создаются ссылки на один и тот же объект? То есть конструктор срабатывает один раз? Тогда как сделать?



Офлайн

#7 Март 28, 2009 15:28:01

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Приколы рандома

Думать. Смотреть на код. Можно его куда-нибудь на pastebin или dumpz.org с приведением ссылки и просьбой глянуть - если уж совсем туго.



Офлайн

#8 Март 30, 2009 18:03:48

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Приколы рандома

Enchantner
Кажись, сам начал понимать… Просто создаются ссылки на один и тот же объект? То есть конструктор срабатывает один раз? Тогда как сделать?
Скорее наоборот, твои деревья создаются, а потом сразу уничтожаются, поскольку ты перезатираешь ссылки на них:
tree = Tree(x_tree,y_tree).
В твоём примере останется только последнее дерево.



Офлайн

#9 Март 31, 2009 09:25:45

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

Приколы рандома

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)]



Отредактировано (Март 31, 2009 09:30:02)

Офлайн

#10 Апрель 2, 2009 00:57:24

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Приколы рандома

Вопрос на внимательность, блин :-). Сам так и не допер.

..bw



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version