import matplotlib.pyplot as plt import matplotlib.animation as an from forager import Forager from landscape import Landscape from foraging import foraging, display def update(_): global l, f if not f.is_dead: foraging(l, f) return display(l, f), l = Landscape(30, 30, 15) f = Forager(0, 0) fig = plt.figure(figsize=(6, 6)) ax = fig.add_axes([0, 0, 1, 1], frameon=False, aspect=1) animation = an.FuncAnimation(fig, update, interval=1, blit=True, frames=200) plt.show() print('Total move = %d' % f.total_move) print('Total eaten = %d' % f.total_eaten)
from forager import Forager import pytest forager = Forager(0, 0) def test_is_dead(): forager.stock = 1 assert not forager.is_dead forager.stock = 0 assert forager.is_dead def test_quantity_which_can_be_eat(): forager.stock = Forager.STOCK_MAX - 2 assert forager.quantity_which_can_be_eaten == 2 forager.stock = Forager.STOCK_MAX - Forager.EAT_MAX_BY_DAY * 2 assert forager.quantity_which_can_be_eaten == Forager.EAT_MAX_BY_DAY def test_eat(): forager.stock = Forager.STOCK_MAX - 10 forager.total_eaten = 10 forager.eat(5) assert forager.stock == Forager.STOCK_MAX - 5 assert forager.total_eaten == 15 forager.stock = Forager.STOCK_MAX - 10 forager.total_eaten = 10 forager.eat(15) assert forager.stock == Forager.STOCK_MAX assert forager.total_eaten == 20
from forager import Forager from landscape import Landscape from foraging import eat, is_moving, move, foraging x = 2 y = 2 nb_patches = 0 x_forager = 0 y_forager = 0 landscape = Landscape(x, y, nb_patches) forager = Forager(x_forager, y_forager) def test_eat(): forager.stock = Forager.STOCK_MAX - Forager.EAT_MAX_BY_DAY + 2 landscape.land[x_forager, y_forager] = Forager.EAT_MAX_BY_DAY eat(landscape, forager) assert landscape.land[x_forager, y_forager] == 2 assert forager.stock == Forager.STOCK_MAX forager.stock = Forager.STOCK_MAX - Forager.EAT_MAX_BY_DAY - 2 landscape.land[x_forager, y_forager] = Forager.EAT_MAX_BY_DAY eat(landscape, forager) assert landscape.land[x_forager, y_forager] == 0 assert forager.stock == Forager.STOCK_MAX - 2 def test_is_moving(): landscape.land[x_forager, y_forager] = 0 assert is_moving(landscape, forager) landscape.land[x_forager, y_forager] = Forager.EAT_MAX_BY_DAY - 1 forager.stock = 0