The before code mixes game logic and rendering in one class, making it hard to test logic alone. The after code separates the model (game state and rules) from the view (rendering), allowing independent testing of game logic without running the view.
### Before: Model and View mixed
class Game:
def __init__(self):
self.player_pos = 0
def update(self, input):
if input == 'right':
self.player_pos += 1
self.render()
def render(self):
print(f"Player at {self.player_pos}")
### After: Model and View separated
class GameModel:
def __init__(self):
self.player_pos = 0
def update(self, input):
if input == 'right':
self.player_pos += 1
class GameView:
def render(self, model):
print(f"Player at {model.player_pos}")
# Usage
model = GameModel()
view = GameView()
model.update('right')
view.render(model)