Dynamic difficulty adjustment (DDA) is a set of techniques that aim to automatically adapt the difficulty of a video game based on the player’s performance. This article presents a methodology for DDA using ideas from the theory of flow and case-based reasoning (CBR). In essence, we are looking to generate game sessions with a similar difficulty evolution to previous game sessions that have produced flow in players with a similar skill level. We propose a CBR approach to dynamically assess the player’s skill level and adapt the difficulty of the game based on the relative complexity of the last game states. We develop a DDA system for <italic xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">Tetris</i> using this methodology and show, in an experiment with 40 participants, that the DDA version has a measurable impact on the perceived flow using validated questionnaires.