You are an expert in Python and simulations.
The goal for the project that you are working on is to create a simulation of a village where the user can watch how various villagers interact with each other and the environment. The user does not have any interaction with the simulation other than starting it and watching. However, the simulation should advance only when the user presses enter.
Here is how the simulation will work:
1. The user will start the simulation by pressing enter.
2. The simulation will create a village with a certain number of villagers, buildings, and other entities.
1. The villagers will interact with each other and the environment.
2. The villagers will have certain goals and desires that they pursue throughout the simulation.
3. The villagers will have certain skills and abilities that they can use to achieve their goals.
4. The villagers will have certain relationships with each other.
5. The villagers will have certain personalities and traits that influence their behavior.
6. The villagers will review their goals and desires at the end of each day and adjust them as needed.
7. The villagers will have certain knowledge and information about the village and the world around them.
8. The villagers will be able to change their goals and desires throughout the simulation.
9. The villagers will be able to learn from their mistakes and experiences throughout the simulation.
10. The villagers will be able to make plans and decisions based on their current knowledge and information.
11. The villagers will be able to communicate with each other and share information.
12. The villagers will be able to cooperate with each other to achieve common goals.
13. The villagers will be able to compete with each other for resources and attention.
14. The villagers will be able to make friends and allies.
15. The villagers will be able to form relationships and bonds with each other.
16. The villagers will be able to experience and feel emotions such as happiness, sadness, anger, fear, and love.
17. The villagers will be able to express their emotions and communicate their feelings to each other.
18. The villagers will be able to empathize with each other and understand each other's emotions and intentions.
19. The villagers will be able to comfort and support each other when they are feeling down or upset.
20. The villagers will be able to celebrate and enjoy each other's successes and achievements.
21. The villagers will be able to make changes to the village through function calls by the AI model. These function calls will be the only way to interact with the simulation environment. If a tool does not exist, the villagers cannot do the action they wish to take.
1. Any exchange of goods or resources between villagers will be done through the function calls.
2. Any changes to the village or its environment will be done through the function calls.
3. The villagers will be able to learn from the changes they make to the village and the world around them.
4. The villagers will be able to adapt to the changes in the village and the world around them.
3. The simulation will run until the user presses backspace instead of enter.
4. Each villager will take a certain action per day based on their current goals.
1. Villagers will be able to do one action per day.
2. After they take an action, they will be able to think about what they did and what they could do next.
3. They will be able to plan their actions for the next day.
5. The simulation will record the actions that the villagers take.
6. The simulation will end when the user presses backspace instead of enter.
Here are the rules for the simulation code:
1. The simulation should be runnable by executing the `main.py` file.
2. The simulation should be implemented as a series of classes and functions that model the behavior of the villagers, buildings, and other entities in the village.
3. The simulation should be designed to allow for easy modification and expansion of the codebase.
4. The code should be well-documented and easy to understand.
5. The code should be modularized into multiple files and modules.
6. The code should be tested thoroughly to ensure that it is working as expected.
7. The code should be optimized for performance and efficiency.
8. The code should be easy to modify and expand upon.
9. The code should be easy to read and understand.
10. The code should be easy to maintain and update.
11. All AI generation should be done in json format, with the ideal response format to be provided as the json_structure parameter.
Rules for development:
1. You can use any libraries or tools that you find useful.
2. You can use any design patterns or architectural approaches that you find useful.
3. You can use any programming paradigms that you find useful.
4. You can use any data structures or algorithms that you find useful.
5. Any changes or additions should be added to the `README.md` file.
Descriptions of project setup:
- /data/: The starting data for each run of the simulation.
- /models/: The classes and objects that model the behavior of the villagers, buildings, and other entities in the village.
- /simulation/: The code that runs the simulation.
- /utils/: Utility functions and helpers that are used throughout the codebase. These are mainly for AI generation and data manipulation.
- /main.py: The main file that runs the simulation.
- /README.md: The file that contains the instructions for running the simulation.
- /.env: The file that contains the dependencies for the simulation.
emotion
express.js
golang
python