Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- sc = 24
- w, h = [80, 45]
- size(1920, 1080)
- rat = loadImage("rat.png")
- apple = loadImage("apple.png")
- img = createGraphics(1920, 1080)
- img.imageMode(CENTER)
- def getDistance(ox, oy, dx, dy):
- global img
- disx = dx - ox
- if (disx > w / 2):
- disx -= w
- if (disx < -w / 2):
- disx += w
- disy = dy - oy
- if (disy > h / 2):
- disy -= h
- if (disy < -h / 2):
- disy += h
- return [disx, disy]
- def drawRat(x, y, px, py):
- acx = x * sc
- acy = y * sc
- r = 48
- variations = [[0, 0]]
- if acx < r and acy < r:
- variations.append([1, 1])
- variations.append([1, 0])
- variations.append([0, 1])
- elif acy < r and acx > width - r:
- variations.append([-1, 1])
- variations.append([0, 1])
- variations.append([-1, 0])
- elif acy > height - r and acx > width - r:
- variations.append([-1, -1])
- variations.append([-1, 0])
- variations.append([0, -1])
- elif acy > height - r and acx < r:
- variations.append([1, -1])
- variations.append([1, 0])
- variations.append([0, -1])
- elif acy < r:
- variations.append([0, 1])
- elif acy > height - r:
- variations.append([0, -1])
- elif acx < r:
- variations.append([1, 0])
- elif acx > height - r:
- variations.append([-1, 0])
- angle = -asin(y-py/sqrt(sq(y-py)+sq(x-px))) if sqrt(sq(y-py)+sq(x-px)) == 0 else HALF_PI
- for var in variations:
- img.translate(acx + width * var[0], acy + height * var[1])
- img.rotate(frameCount)
- img.image(rat, 0, 0)
- img.noStroke()
- img.fill(255)
- img.square(0, 0, 500)
- img.rotate(-frameCount)
- img.translate(-acx - width * var[0], -acy - height * var[1])
- def drawFruit(x, y):
- acx = x * sc
- acy = y * sc
- r = 24
- variations = [[0, 0]]
- if acx < r and acy < r:
- variations.append([1, 1])
- variations.append([1, 0])
- variations.append([0, 1])
- elif acy < r and acx > width - r:
- variations.append([-1, 1])
- variations.append([0, 1])
- variations.append([-1, 0])
- elif acy > height - r and acx > width - r:
- variations.append([-1, -1])
- variations.append([-1, 0])
- variations.append([0, -1])
- elif acy > height - r and acx < r:
- variations.append([1, -1])
- variations.append([1, 0])
- variations.append([0, -1])
- elif acy < r:
- variations.append([0, 1])
- elif acy > height - r:
- variations.append([0, -1])
- elif acx < r:
- variations.append([1, 0])
- elif acx > height - r:
- variations.append([-1, 0])
- for var in variations:
- img.image(apple, acx + width * var[0], acy + height * var[1])
- movementTotal = json.load(open("mov17.json", "r"))
- gen = 0
- for movementGen in movementTotal:
- sim = 0
- for movementSim in movementGen:
- createOutput("%i/%i/0.tif" % (gen, sim))
- fruits = [[78, 43], [57, 12], [34, 20], [54, 27], [62, 20], [33, 27], [65, 12],
- [75, 43], [9 , 44], [23, 13], [66, 31], [5 , 23], [59, 20] ]
- frame = 0
- a = millis()
- for movement in movementSim:
- x, y = movement
- for fruit in fruits:
- dx, dy = getDistance(x, y, fruit[0], fruit[1])
- if sqrt(dx * dx + dy * dy) <= 2:
- fruits.remove(fruit)
- if frame > 0:
- img.beginDraw()
- img.background(0)
- drawRat(x, y, px, py)
- for fruit in fruits:
- drawFruit(fruit[0],fruit[1])
- img.endDraw()
- img.save("%i/%i/%s.tif" % (gen, sim, format(frame, "0>"+str(len(str(len(movementSim))))) ) )
- frame += 1
- px, py = movement
- if frame > 20:
- print(0 / 0)
- print(millis() - a)
- sim += 1
- gen += 1
- print("Done!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement