draw_karel.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. from graphics import Canvas
  2. from karel_asset import * # https://git.h0v1n8.nl/Stanford/karel_asset
  3. from time import sleep
  4. Constants
  5. CANVAS_WIDTH = 420
  6. CANVAS_HEIGHT = 270
  7. canvas = Canvas(CANVAS_WIDTH, CANVAS_HEIGHT)
  8. def main():
  9. background = canvas.create_rectangle(
  10. 0,
  11. 0,
  12. CANVAS_WIDTH,
  13. CANVAS_HEIGHT,
  14. "grey",
  15. "black"
  16. )
  17. while True: # Infinite loop
  18. # Draw Western quadrant
  19. karel_east = draw_karel(canvas, 35, 35, colour="random", background="random")
  20. karel_east_mirrored = draw_karel(canvas, 85, 35, orientation="east-flipped", colour="random", background="random")
  21. karel_west = draw_karel(canvas, 135, 35, orientation="west", colour="random", background="random")
  22. karel_west_mirrored = draw_karel(canvas, 185, 35, orientation="west-flipped", colour="random", background="random")
  23. karel_north = draw_karel(canvas, 35, 85, orientation="north", colour="random", background="random")
  24. karel_north_mirrored = draw_karel(canvas, 85, 85, orientation="north-flipped", colour="random", background="random")
  25. karel_south = draw_karel(canvas, 135, 85, orientation="south", colour="random", background="random")
  26. karel_south_mirored = draw_karel(canvas, 185, 85, orientation="south-flipped", colour="random", background="random")
  27. karel_east2 = draw_karel(canvas, 35, 135, colour="random", background="random")
  28. karel_east2_mirrored = draw_karel(canvas, 85, 135, orientation="east-flipped", colour="random", background="random")
  29. karel_west2 = draw_karel(canvas, 135, 135, orientation="west", colour="random", background="random")
  30. karel_west_mirrored2 = draw_karel(canvas, 185, 135, orientation="west-flipped", colour="random", background="random")
  31. karel_north2 = draw_karel(canvas, 35, 185, orientation="north", colour="random", background="random")
  32. karel_north_mirrored2 = draw_karel(canvas, 85, 185, orientation="north-flipped", colour="random", background="random")
  33. karel_south2 = draw_karel(canvas, 135, 185, orientation="south", colour="random", background="random")
  34. karel_south_mirored2 = draw_karel(canvas, 185, 185, orientation="south-flipped", colour="random", background="random")
  35. karel_east3 = draw_karel(canvas, 35, 235, colour="random", background="random")
  36. karel_east_mirrored3 = draw_karel(canvas, 85, 235, orientation="east-flipped", colour="random", background="random")
  37. karel_west3 = draw_karel(canvas, 135, 235, orientation="west", colour="random", background="random")
  38. karel_west_mirrored3 = draw_karel(canvas, 185, 235, orientation="west-flipped", colour="random", background="random")
  39. # Wait one second
  40. sleep(1)
  41. # Draw Eastern quadrant
  42. karel_east4 = draw_karel(canvas, 235, 35, colour="random", background="random")
  43. karel_east_mirrored4 = draw_karel(canvas, 285, 35, orientation="east-flipped", colour="random", background="random")
  44. karel_west4 = draw_karel(canvas, 335, 35, orientation="west", colour="random", background="random")
  45. karel_west_mirrored4 = draw_karel(canvas, 385, 35, orientation="west-flipped", colour="random", background="random")
  46. karel_north4 = draw_karel(canvas, 235, 85, orientation="north", colour="random", background="random")
  47. karel_north_mirrored4 = draw_karel(canvas, 285, 85, orientation="north-flipped", colour="random", background="random")
  48. karel_south4 = draw_karel(canvas, 335, 85, orientation="south", colour="random", background="random")
  49. karel_south_mirored4 = draw_karel(canvas, 385, 85, orientation="south-flipped", colour="random", background="random")
  50. karel_east5 = draw_karel(canvas, 235, 135, colour="random", background="random")
  51. karel_east5_mirrored = draw_karel(canvas, 285, 135, orientation="east-flipped", colour="random", background="random")
  52. karel_west5 = draw_karel(canvas, 335, 135, orientation="west", colour="random", background="random")
  53. karel_west_mirrored5 = draw_karel(canvas, 385, 135, orientation="west-flipped", colour="random", background="random")
  54. karel_north5 = draw_karel(canvas, 235, 185, orientation="north", colour="random", background="random")
  55. karel_north_mirrored5 = draw_karel(canvas, 285, 185, orientation="north-flipped", colour="random", background="random")
  56. karel_south5 = draw_karel(canvas, 335, 185, orientation="south", colour="random", background="random")
  57. karel_south_mirored5 = draw_karel(canvas, 385, 185, orientation="south-flipped", colour="random", background="random")
  58. karel_east6 = draw_karel(canvas, 235, 235, background="pink")
  59. karel_east_mirrored6 = draw_karel(canvas, 285, 235, orientation="east-flipped", colour="random", background="random")
  60. karel_west6 = draw_karel(canvas, 335, 235, orientation="west", colour="random", background="random")
  61. karel_west_mirrored6 = draw_karel(canvas, 385, 235, orientation="west-flipped", colour="random", background="random")
  62. # Wait one second
  63. sleep(1)
  64. big_karel_east = draw_karel(canvas, 110, 135, 200)
  65. # Wait one second
  66. sleep(1)
  67. big_karel_west_flipped = draw_karel(canvas, 310, 135, 200, orientation="west-flipped", colour="white", transparent=True)
  68. # Wait one second
  69. sleep(1)
  70. # Slide Karels out of the canvas
  71. for i in range(int(CANVAS_WIDTH / 5)):
  72. karel_east = orientation_move_asset(karel_east, "forward", 5)
  73. karel_east_mirrored = orientation_move_asset(karel_east_mirrored, "forward", 5)
  74. karel_west = orientation_move_asset(karel_west, "forward", 5)
  75. karel_west_mirrored = orientation_move_asset(karel_west_mirrored, "forward", 5)
  76. karel_north = orientation_move_asset(karel_north, "forward", 5)
  77. karel_north_mirrored = orientation_move_asset(karel_north_mirrored, "forward", 5)
  78. karel_south = orientation_move_asset(karel_south, "forward", 5)
  79. karel_south_mirored = orientation_move_asset(karel_south_mirored, "forward", 5)
  80. karel_east2 = orientation_move_asset(karel_east2, "forward", 5)
  81. karel_east2_mirrored = orientation_move_asset(karel_east2_mirrored, "forward", 5)
  82. karel_west2 = orientation_move_asset(karel_west2, "forward", 5)
  83. karel_west_mirrored2 = orientation_move_asset(karel_west_mirrored2, "forward", 5)
  84. karel_north2 = orientation_move_asset(karel_north2, "forward", 5)
  85. karel_north_mirrored2 = orientation_move_asset(karel_north_mirrored2, "forward", 5)
  86. karel_south2 = orientation_move_asset(karel_south2, "forward", 5)
  87. karel_south_mirored2 = orientation_move_asset(karel_south_mirored2, "forward", 5)
  88. karel_east3 = orientation_move_asset(karel_east3, "forward", 5)
  89. karel_east_mirrored3 = orientation_move_asset(karel_east_mirrored3, "forward", 5)
  90. karel_west3 = orientation_move_asset(karel_west3, "forward", 5)
  91. karel_west_mirrored3 = orientation_move_asset(karel_west_mirrored3, "forward", 5)
  92. karel_east4 = orientation_move_asset(karel_east4, "forward", 5)
  93. karel_east_mirrored4 = orientation_move_asset(karel_east_mirrored4, "forward", 5)
  94. karel_west4 = orientation_move_asset(karel_west4, "forward", 5)
  95. karel_west_mirrored4 = orientation_move_asset(karel_west_mirrored4, "forward", 5)
  96. karel_north4 = orientation_move_asset(karel_north4, "forward", 5)
  97. karel_north_mirrored4 = orientation_move_asset(karel_north_mirrored4, "forward", 5)
  98. karel_south4 = orientation_move_asset(karel_south4, "forward", 5)
  99. karel_south_mirored4 = orientation_move_asset(karel_south_mirored4, "forward", 5)
  100. karel_east5 = orientation_move_asset(karel_east5, "forward", 5)
  101. karel_east5_mirrored = orientation_move_asset(karel_east5_mirrored, "forward", 5)
  102. karel_west5 = orientation_move_asset(karel_west5, "forward", 5)
  103. karel_west_mirrored5 = orientation_move_asset(karel_west_mirrored5, "forward", 5)
  104. karel_north5 = orientation_move_asset(karel_north5, "forward", 5)
  105. karel_north_mirrored5 = orientation_move_asset(karel_north_mirrored5, "forward", 5)
  106. karel_south5 = orientation_move_asset(karel_south5, "forward", 5)
  107. karel_south_mirored5 = orientation_move_asset(karel_south_mirored5, "forward", 5)
  108. karel_east6 = orientation_move_asset(karel_east6, "forward", 5)
  109. karel_east_mirrored6 = orientation_move_asset(karel_east_mirrored6, "forward", 5)
  110. karel_west6 = orientation_move_asset(karel_west6, "forward", 5)
  111. karel_west_mirrored6 = orientation_move_asset(karel_west_mirrored6, "forward", 5)
  112. # Wait a hundreth of a second
  113. sleep(0.01)
  114. # Erase Karels
  115. erase_asset(karel_east)
  116. erase_asset(karel_east_mirrored)
  117. erase_asset(karel_west)
  118. erase_asset(karel_west_mirrored)
  119. erase_asset(karel_north)
  120. erase_asset(karel_north_mirrored)
  121. erase_asset(karel_south)
  122. erase_asset(karel_south_mirored)
  123. erase_asset(karel_east2)
  124. erase_asset(karel_east2_mirrored)
  125. erase_asset(karel_west2)
  126. erase_asset(karel_west_mirrored2)
  127. erase_asset(karel_north2)
  128. erase_asset(karel_north_mirrored2)
  129. erase_asset(karel_south2)
  130. erase_asset(karel_south_mirored2)
  131. erase_asset(karel_east3)
  132. erase_asset(karel_east_mirrored3)
  133. erase_asset(karel_west3)
  134. erase_asset(karel_west_mirrored3)
  135. erase_asset(karel_east4)
  136. erase_asset(karel_east_mirrored4)
  137. erase_asset(karel_west4)
  138. erase_asset(karel_west_mirrored4)
  139. erase_asset(karel_north4)
  140. erase_asset(karel_north_mirrored4)
  141. erase_asset(karel_south4)
  142. erase_asset(karel_south_mirored4)
  143. erase_asset(karel_east5)
  144. erase_asset(karel_east5_mirrored)
  145. erase_asset(karel_west5)
  146. erase_asset(karel_west_mirrored5)
  147. erase_asset(karel_north5)
  148. erase_asset(karel_north_mirrored5)
  149. erase_asset(karel_south5)
  150. erase_asset(karel_south_mirored5)
  151. erase_asset(karel_east6)
  152. erase_asset(karel_east_mirrored6)
  153. erase_asset(karel_west6)
  154. erase_asset(karel_west_mirrored6)
  155. # Slide big Karels into each other, first half
  156. for i in range(int((310 - 110) / 2)):
  157. big_karel_east = relative_move_asset(big_karel_east, 1)
  158. big_karel_west_flipped = relative_move_asset(big_karel_west_flipped, -1)
  159. # Wait a hundreth of a second
  160. sleep(0.01)
  161. # Wait one second
  162. sleep(1)
  163. # Invert big Karels
  164. big_karel_east = recolour_asset(big_karel_east, "white", "black")
  165. # Wait one second
  166. sleep(1)
  167. big_karel_west_flipped = recolour_asset(big_karel_west_flipped, "black")
  168. # Wait one second
  169. sleep(1)
  170. # Slide big Karels out of each other, second half
  171. for i in range(int((310 - 110) / 2)):
  172. big_karel_east = relative_move_asset(big_karel_east, 1)
  173. big_karel_west_flipped = relative_move_asset(big_karel_west_flipped, -1)
  174. sleep(0.02)
  175. # Wait one second
  176. sleep(1)
  177. # Rotate big Karels eight times
  178. for i in range(8):
  179. big_karel_east = rotate_asset(big_karel_east, "left")
  180. big_karel_west_flipped = rotate_asset(big_karel_west_flipped, "right")
  181. # Wait three tenth of a second
  182. sleep(0.3)
  183. # Wait one second
  184. sleep(1)
  185. # Erase big Karels
  186. erase_asset(big_karel_east)
  187. erase_asset(big_karel_west_flipped)
  188. if __name__ == '__main__':
  189. main()