code: def step(self):
          
          if not self.is_done():
              actions = [agent.program(self.percept(agent))
                         for agent in self.agents]
              for (agent, action) in zip(self.agents, actions):
                  self.execute_action(agent, action)
              self.exogenous_change()
docs: Run the environment for one time step. If the
          actions and exogenous changes are independent, this method will
          do.  If there are interactions between them, you'll need to
          override this method.