Глобальные переменные действительно - зло, Можно решить классами, но если до классов еще не дошли, то можно обьявить в функции start словарь:
world = {
'player': {
'items': [],
'is_dead': False,
},
# other game info
}
и передавать его в каждую игровую функцию:
behind(world)
road(world)
...
еще несколько советов:
1. не стоит в каждой функции обьявлять бесконечный цикл, пусть лучше он будет на самом верхнем уровне в функции start, тоже самое и про пользовательский ввод(raw_input) - лучше чтобы он был только одном месте.
2. не надо в road/behind/barn/... вызывать функцию start - это неявная рекурсия да еще и вместе с бесконечными циклами, пусть лучше они выполняют конкретное действие, изменяют игровое состояние(world) и все, остальное забота функции start.
3. Если добавляете один элемент в список, то лучше делать items.
append("топор"), а не items.
extend(["топор"])