Advertisement
Guest User

Weird thing

a guest
Jan 19th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.08 KB | None | 0 0
  1. import json
  2.  
  3. sc = 24
  4.  
  5. w, h = [80, 45]
  6. size(1920, 1080)
  7.  
  8. rat = loadImage("rat.png")
  9. apple = loadImage("apple.png")
  10.  
  11. img = createGraphics(1920, 1080)
  12. img.imageMode(CENTER)
  13.  
  14. def getDistance(ox, oy, dx, dy):
  15.     global img
  16.     disx = dx - ox
  17.     if (disx > w / 2):
  18.         disx -= w
  19.     if (disx < -w / 2):
  20.         disx += w
  21.    
  22.     disy = dy - oy
  23.     if (disy > h / 2):
  24.         disy -= h
  25.     if (disy < -h / 2):
  26.         disy += h
  27.    
  28.     return [disx, disy]
  29.  
  30. def drawRat(x, y, px, py):
  31.     acx = x * sc
  32.     acy = y * sc
  33.     r = 48
  34.    
  35.     variations = [[0, 0]]
  36.     if acx < r and acy < r:
  37.         variations.append([1, 1])
  38.         variations.append([1, 0])
  39.         variations.append([0, 1])
  40.     elif acy < r and acx > width - r:
  41.         variations.append([-1, 1])
  42.         variations.append([0, 1])
  43.         variations.append([-1, 0])
  44.     elif acy > height - r and acx > width - r:
  45.         variations.append([-1, -1])
  46.         variations.append([-1, 0])
  47.         variations.append([0, -1])
  48.     elif acy > height - r and acx < r:
  49.         variations.append([1, -1])
  50.         variations.append([1, 0])
  51.         variations.append([0, -1])
  52.     elif acy < r:
  53.         variations.append([0, 1])
  54.     elif acy > height - r:
  55.         variations.append([0, -1])
  56.     elif acx < r:
  57.         variations.append([1, 0])
  58.     elif acx > height - r:
  59.         variations.append([-1, 0])
  60.    
  61.     angle = -asin(y-py/sqrt(sq(y-py)+sq(x-px))) if sqrt(sq(y-py)+sq(x-px)) == 0 else HALF_PI
  62.    
  63.     for var in variations:
  64.         img.translate(acx + width * var[0], acy + height * var[1])
  65.         img.rotate(frameCount)
  66.         img.image(rat, 0, 0)
  67.         img.noStroke()
  68.         img.fill(255)
  69.         img.square(0, 0, 500)
  70.         img.rotate(-frameCount)
  71.         img.translate(-acx - width * var[0], -acy - height * var[1])
  72.  
  73. def drawFruit(x, y):
  74.     acx = x * sc
  75.     acy = y * sc
  76.     r = 24
  77.    
  78.     variations = [[0, 0]]
  79.     if acx < r and acy < r:
  80.         variations.append([1, 1])
  81.         variations.append([1, 0])
  82.         variations.append([0, 1])
  83.     elif acy < r and acx > width - r:
  84.         variations.append([-1, 1])
  85.         variations.append([0, 1])
  86.         variations.append([-1, 0])
  87.     elif acy > height - r and acx > width - r:
  88.         variations.append([-1, -1])
  89.         variations.append([-1, 0])
  90.         variations.append([0, -1])
  91.     elif acy > height - r and acx < r:
  92.         variations.append([1, -1])
  93.         variations.append([1, 0])
  94.         variations.append([0, -1])
  95.     elif acy < r:
  96.         variations.append([0, 1])
  97.     elif acy > height - r:
  98.         variations.append([0, -1])
  99.     elif acx < r:
  100.         variations.append([1, 0])
  101.     elif acx > height - r:
  102.         variations.append([-1, 0])
  103.  
  104.     for var in variations:
  105.         img.image(apple, acx + width * var[0], acy + height * var[1])
  106.  
  107.  
  108. movementTotal = json.load(open("mov17.json", "r"))
  109.  
  110. gen = 0
  111.  
  112. for movementGen in movementTotal:
  113.     sim = 0
  114.     for movementSim in movementGen:
  115.         createOutput("%i/%i/0.tif" % (gen, sim))
  116.         fruits =  [[78, 43], [57, 12], [34, 20], [54, 27], [62, 20], [33, 27], [65, 12],
  117.                    [75, 43], [9 , 44], [23, 13], [66, 31], [5 , 23], [59, 20]           ]
  118.         frame = 0
  119.         a = millis()
  120.         for movement in movementSim:
  121.             x, y = movement
  122.            
  123.             for fruit in fruits:
  124.                 dx, dy = getDistance(x, y, fruit[0], fruit[1])
  125.                 if sqrt(dx * dx + dy * dy) <= 2:
  126.                     fruits.remove(fruit)
  127.             if frame > 0:
  128.                 img.beginDraw()
  129.                 img.background(0)
  130.                 drawRat(x, y, px, py)
  131.                 for fruit in fruits:
  132.                     drawFruit(fruit[0],fruit[1])
  133.                 img.endDraw()
  134.                 img.save("%i/%i/%s.tif" % (gen, sim, format(frame, "0>"+str(len(str(len(movementSim))))) ) )
  135.             frame += 1
  136.             px, py = movement
  137.             if frame > 20:
  138.                 print(0 / 0)
  139.         print(millis() - a)
  140.         sim += 1
  141.     gen += 1
  142.            
  143. print("Done!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement