I typically separate them.
By default a game state will have init, update, render (plus input events).
I'll do something like this:
Code:
Map map;
List<Enemy> enemies = new ArrayList<Enemy>();
init() {
map = new Map();
map.init();
for (int i=0; i<10; i++) {
enemies.add(new Enemy());
enemies.get(i).init();
}
}
update() {
map.update();
for (Enemy enemy : enemies) {
enemy.update();
}
}
render() {
map.render();
for (Enemy enemy : enemies) {
enemy.render();
}
}
Map would then know how to render it's self or update it's self when called. Put map code in map, enemy code in enemy, etc.