Advertisement
Guest User

Untitled

a guest
Apr 4th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.99 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. from Tkinter import*
  4. import random, time
  5.  
  6. def newlife():
  7.     print 'New Life!'
  8.     canvas.delete('all')
  9.     condA=[[random.randrange(2) for x in range(n)] for y in range(n)]
  10.     condB=[[0 for x in range(n)] for y in range(n)]
  11.     for x in range(n):
  12.         for y in range(n):
  13.             if condA[x][y]:
  14.                 canvas.create_rectangle(x*d, y*d, (x+1)*d, (y+1)*d, width=2, fill='blue')
  15.             else:
  16.                 canvas.create_rectangle(x*d, y*d, (x+1)*d, (y+1)*d, width=2, fill='green')
  17.     return (condA, condB)
  18.  
  19. def life(condA, condB):
  20.     generation=0
  21.     print  'Generation =',generation
  22.     while generation<10:
  23.         generation+=1
  24.         tk.update_idletasks()
  25.         time.sleep(0.5)
  26.         canvas.delete('all')
  27.         for x in range(n):
  28.             for y in range(n):
  29.                 env=0
  30.                 if x!=0 and y!=0:
  31.                     env+=condA[x-1][y-1]
  32.                 if x!=n-1 and y!=n-1:
  33.                     env+=condA[x+1][y+1]
  34.                 if x!=0 and y!=n-1:
  35.                     env+=condA[x-1][y+1]
  36.                 if x!=n-1 and y!=1:
  37.                     env+=condA[x+1][y-1]
  38.                 if x!=0:
  39.                     env+=condA[x-1][y]
  40.                 if x!=n-1:
  41.                     env+=condA[x+1][y]
  42.                 if y!=0:
  43.                     env+=condA[x][y-1]
  44.                 if y!=n-1:
  45.                     env+=condA[x][y+1]
  46.                 if env==3:
  47.                     condB[x][y]=1
  48.                     canvas.create_rectangle(x*d, y*d, (x+1)*d, (y+1)*d, width=2, fill='green')
  49.                 else:
  50.                     condB[x][y]=0
  51.                     canvas.create_rectangle(x*d, y*d, (x+1)*d, (y+1)*d, width=2, fill='blue')
  52.         print 'Generation =',generation
  53.         listcompare=0
  54.         for x in range(n):
  55.             for y in range(n):
  56.                 if condA[x][y]!=condB[x][y]:listcompare+=1
  57.         if listcompare==0:break
  58. #       condA=condB
  59.         condA=[[condB[x][y] for x in range(n)]for y in range(n)]
  60.  
  61. def start():
  62.     condA,condB=newlife()
  63.     life(condA,condB)
  64.  
  65. def close():
  66.     quit()
  67.  
  68. n,d = 10,15
  69.  
  70. tk = Tk()
  71. frame = Frame(tk, relief=RIDGE, borderwidth=2)
  72. frame.pack(fill=BOTH,expand=1)
  73. canvas = Canvas(frame, width=n*d+2, height=n*d+2, bg='white')
  74. canvas.pack(expand=NO, fill=BOTH)
  75. button = Button(frame,text="Start",command=start)
  76. button.pack(side=LEFT)
  77. button=Button(frame, text="Close", command=close)
  78. button.pack(side=LEFT)
  79. tk.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement