In April 2003, I uploaded a Breakout clone called either Breakout (the Cemetech/ticalc.org name) or Hardball (the program's own name) on ticalc.org. Presumably I also uploaded it to an old version of Cemetech, but since the current iteration of Cemetech dates from 2005, that's lost to the ages; Cemetech's version dates to 2008. I had long since forgotten about it until January of this year, when dunlavy reviewed it with some well-deserved constructive criticism. Far from "amazing", it shows what my TI-BASIC chops were like 17 years ago, and I was able to replicate the bugs that dunlavdy reports (plus a few extra of my own). I put updating it on my to-do list as a project for a day when I needed to unwind with some calculator programming.
I had some time today, so I sat down with SourceCoder and tried to work through some of the programs issues, bugs, and weaknesses. Among the changes that I made:
I still have plenty to do: programming the 10 pre-set levels (it just fills the whole game grid), adjust spacing of items to make sure that the glitch you see at the left side in the "improved" screenshot doesn't recur, add the random level mode, and add high score-keeping. It's not a high-profile program, but it's fun to apply some of my new knowledge from the past 17 years, and while the remaining items are not trivial, they're hopefully few enough that I can fit it into the rare free time I get for myself and actually release it. And perhaps I'll port it to the CE at some point.
Original (left) versus current update-in-progress (right)
I had some time today, so I sat down with SourceCoder and tried to work through some of the programs issues, bugs, and weaknesses. Among the changes that I made:
- Rewrote a lot of Lbl/Goto code using loop constructs
- Rewrote a lot of branching code with nested conditionals
- Ripped out the old system of three modes that all used stored, randomly generated levels, instead opting for a two-mode system that will have 10 pre-set levels and a random level option.
- Rewrote its ZStandard-based graphics code to use the "friendly window" graph coordinate setup where 1 pt = 1 px
- Adjusted logic to speed up the ball's movement
- Changed how the paddle and ball move to add more sanity and safety checks
- Made the ball and paddle thicker, made the paddle longer
- Changed the logic for erasing bricks
- Changed the logic for the departure angle from the paddle to match what I observed is the standard approach (where on the paddle the ball hits sets the ball's velocity instead of accelerates the ball's velocity in a given direction)
- Used lines instead of pixels to draw and erase blocks, for speed
I still have plenty to do: programming the 10 pre-set levels (it just fills the whole game grid), adjust spacing of items to make sure that the glitch you see at the left side in the "improved" screenshot doesn't recur, add the random level mode, and add high score-keeping. It's not a high-profile program, but it's fun to apply some of my new knowledge from the past 17 years, and while the remaining items are not trivial, they're hopefully few enough that I can fit it into the rare free time I get for myself and actually release it. And perhaps I'll port it to the CE at some point.
Original (left) versus current update-in-progress (right)