QBasic

I like QBasic. It’s among the very first programming languages I learned when I was a kid, and its capabilities are pathetic compared to anything modern, but it’s fun to make do. To me it’s like a box of crayons.


FISHWARS.BAS This program started with a simple bubble simulation. I came up with a variety of modes that dispersed bubbles on the screen in different ways, including fish which would “breathe” the bubbles and torpedoes which would leave bubble trails and explode into clouds of bubbles and cinders. It was a natural evolutionary step to combine these two modes into a new simulation where fish launch torpedoes at each other.


TETROID.BAS An endless rain of Tetris pieces. A giant Tetris board. Piece shapes are chosen randomly and then a simple random search is used to try to find a column and rotation where the shape will fit perfectly into the landscape. The random shape choice is biased in favor of the least common shape and against the most common to keep the overall distribution of shapes fair and even.


FIELD.BAS The space of the screen is broken down into a vector field which accelerates the individual bodies, and the individual bodies influence the field in their direction of travel. The end result is a kind of swarming behavior.


COLORWAR.BAS A grid of randomly colored pixels with colors repeatedly copied randomly to neighboring pixels. The overall effect is a kind of power struggle between colors. Below the grid, relative quantities are plotted with respect to time.


MAZE.BAS I’m not entirely sure what’s going on here; honestly I don’t remember what I was up to. There’s some kind of feedback between these colored blocks and the grid they’re moving around in, and that feedback causes like colors to cluster together.


STARLAB.BAS The idea here is that each pixel represents an atom in a star. These “atoms” gravitate toward the center, fuse together into heavier elements and striate by density. Eventually the fusion bottoms out at the heaviest element and the star burns out completely.


RIGDICE.BAS This is a set of four 2-dimensional dice that are lifted and spun to roll them. Their bouncing behavior is designed to resemble a rigid body physics simulation even though it doesn’t really adhere to proper physics.