Thanks for your remarks, Alan.
And " Law of Demeter" was something new and useful for me.
This is corrected code (I hope I've understand all your remarks right):
 
 
 
# -*- coding: windows-1251 -*-

import random, time, Tkinter

class Agent:
    def __init__ (self, x=100, y=100):
        self.name = random.randint(0, 100000)
        self.x = x
        self.y = y
       
    def __repr__ (self):
        return str(self.name)

    def step (self):
        old_x, old_y = self.x, self.y
        change_x, change_y = self.rand_vec()
        self.x, self.y = old_x + change_x, old_y + change_y
       
    def rand_vec(self):
        return random.randint(-5, 5), random.randint(-5, 5)

    def display(self, canvas):
        canvas.coords(self.ID, self.x, self.y)


class Environment:
    def __init__ (self):
        self.alive_agents = []

    def step(self):
        for obj in self.alive_agents:
            obj.step()

    def add_agent(self, agent):
#        print agent.name, ' was added to environment'
        self.alive_agents.append(agent)

    def show_env (self, canvas):
        for agent in env.alive_agents:
            agent.display(canvas)


class GraphEnvironment(Tkinter.Frame):

    def __init__ (self, root):

        self.root = root
        self.background = "" width=200, height=200, background="">       
        for agent in env.alive_agents:
            agent.ID=self.background.create_image (100, 100, anchor=Tkinter.NW, image=picture)
       
        self.background.pack(fill=Tkinter.BOTH,expand=Tkinter.YES)

        self.root.after(100,self.NextDay)

    def NextDay(self):
        env.step()
        env.show_env(self.background)
        self.root.after(50,self.NextDay)

 

print '\tBORN'

env = Environment()
for obj in range(100):
    child = Agent()
#    print child, ' was born'
    env.add_agent(child)

print '\tGRAPH LIFE'

root=Tkinter.Tk()
picture =Tkinter.PhotoImage(file="HolyGrail.gif")
GraphEnvironment(root)
root.mainloop()

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to