# Classical planning application in an "Overcook" style game.

## Domain
Planner will decide which actions the agent will achieve to cook onion soups. Goal is to deliver as much as onion soups to the customers waiting.
Actions are already defined for the agent:
- move (from one location to another one)
- pickup (an ingredient)
- drop (an ingredient)
- chop (a specific ingredient: onions)
- cook (a sepcific recipie: onion soup)
- serve (an ingredient that is ready to be served)
Additional actions are provided, mainly for debug purpose:
- get_position
- stop
- idle
Partially filled file is provided (file: cooking_domain.hddl).
## Problem
To begin with, we will consider only one agent a1.
A world is already set (file: cooking_problem.hddl). Predicates are specifying objects caracteristics.
Locations are connected between them to simplify agent movement in the world (e.g. the center of the map is connected to the cooking place: "connected centerloc cookLoc").
Eventually, some soup recipies are provided.
## Set-up project environment
- [x] if you ahve completed TP01, repository should be up to fate, else
plan cooking_domain.hddl cooking_problem.hddl debug
```
## check the simulator
- [ ] check that the simulator is working
```
TODO - PB
```
## Repository Overview
```
plan cooking_domain.hddl cooking_problem.hddl
```
open 2 files:
- cooking_domain.hddl (the panning domain)
- cooking_problem.hddl (the planning problem)
- [x] an example of problem is provided - serving one soup to your customers
- [ ] check that you can generate the plan and load it into the simulator
```
plan cooking_domain.hddl cooking_problem.hddl debug > plan.txt
./PascalCookingSimulator plan.txt
```
- [ ] now, comment 1 line and uncomment 1 line to make the agent start "far away" from the delivery location and check that planning process will fail.
- [ ] an example of domain is provided - your goal is to complete abstract tasks :
- DO NOT change elementary actions
- DO NOT change predicates or types
- you can create as many tasks (and associated methods) as you wish to provide 3 onion soups to you customers.
- check execution line per line... HDDL is not the more ergonomic way to debug... use recursivity with care.
## Open question:
Find a way to provide as many onion as possible in the "stockloc" to do an infinite number of soups.