Lines #14-#22 could be merged into a smaller if/else statement like this, which I think reads a little better:

```
  if a + b == 10
    @frames << ( a == 10 ? "strike" : "spare" )  # strike or spare frame
  else
    @frames << a + b                             # normal frame
  end
```

They could be reduced even smaller still, although you lose some readability:
```
  @frames << if a + b == 10
    a == 10 ? "strike" : "spare"    # strike or spare frame
  else
    a + b                           # normal frame
  end
```