Guest User

Untitled

a guest
Jun 28th, 2015
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. import pygame
  2. import random
  3. from random import randint
  4. pygame.init()
  5.  
  6. class Cell(pygame.sprite.Sprite):
  7. def __init__(self, size, color, speed, posx, posy):
  8. super().__init__()
  9. self.size = size
  10. self.color = color
  11. self.speed = speed
  12. self.posx = posx
  13. self.posy = posy
  14.  
  15. self.image = pygame.Surface([size, size])
  16. self.image.fill(WHITE)
  17. self.image.set_colorkey(WHITE)
  18. pygame.draw.circle(self.image, color, [posx, posy], size)
  19. self.rect = self.image.get_rect()
  20.  
  21. print('Cell initialized')
  22. def reproduce(self):
  23. return (SizeMutation(self.size), ColorMutation(self.color), SpeedMutation(self.speed))
  24.  
  25. def ColorMutation(parent_color):
  26. new_red = parent_color[0]
  27. new_green = parent_color[1]
  28. new_blue = parent_color[2]
  29. new_red += randint(-10, 10)
  30. new_green += randint(-10, 10)
  31. new_blue += randint(-10, 10)
  32. if new_red > 255:
  33. new_red -= (new_red - 255)
  34. elif new_red < 0:
  35. new_red += abs(new_red)
  36. if new_green > 255:
  37. new_green -= (new_green - 255)
  38. elif new_green < 0:
  39. new_green += abs(new_green)
  40. if new_blue > 255:
  41. new_blue -= (new_blue - 255)
  42. elif new_blue < 0:
  43. new_blue += abs(new_blue)
  44. return (new_red, new_green, new_blue)
  45.  
  46. def SpeedMutation(parent_speed):
  47. speed_multiplier = random.uniform(0.8, 1.2)
  48. return round(parent_speed * speed_multiplier, 2)
  49.  
  50. def SizeMutation(parent_size):
  51. size_multiplier = random.uniform(0.9, 1.1)
  52. return round(parent_size * size_multiplier, 2)
  53.  
  54. WHITE = (255, 255, 255)
  55. BLACK = (0, 0, 0,)
  56. RED = (255, 0, 0)
  57. GREEN = (0, 255, 0)
  58. BLUE = (0, 0, 255)
  59.  
  60. window_size = 700, 500
  61. screen = pygame.display.set_mode(window_size)
  62. pygame.display.set_caption("Evolution")
  63.  
  64. done = False
  65. clock = pygame.time.Clock()
  66.  
  67. cell_list = pygame.sprite.Group()
  68. a = Cell(5, GREEN, 2, 200, 200)
  69. cell_list.add(a)
  70.  
  71. while not done:
  72. for event in pygame.event.get():
  73. if event.type == pygame.QUIT:
  74. done = True
  75. screen.fill(WHITE)
  76.  
  77.  
  78. cell_list.draw(screen)
  79.  
  80. pygame.display.flip()
  81. clock.tick(60)
Advertisement
Add Comment
Please, Sign In to add comment