Depends what you're interested in. Checking through my own projects I have a chess solver, a 6502 processor emulator, a polynomial "math" package (e.g. it can add "2x+1" to "3x^2+5x-7"), a brainf__k interpreter, a logic gate simulator (you connect AND, NOR, XOR and other gates together and it shows how they work), a solver for Sokoban, a C compiler for the Z80 (which is a large project including a compiler, linker, z80 emulator, assembler and disassembler), a solver for the game Vexed, a SlitherLink solver, a Slant solver (see Simon Tatham's puzzle collection), a Nurikabe solver, a disassembler for PIC chips, a Monopoly simulator, a Sudoku solver, a Nonograms solver, a Mandelbrot generator, a rocket hack for Quake 2 that made rockets fire as fast as the machine gun, a ray tracer, a 68000 processor emulator and a few others that didn't seem worth mentioning.
As you see I like writing solvers for logic games. This usually only goes as far as implementing the "rules", I don't usually aim to make it able to solve all possible puzzles.
The ray tracer is on hold until I can work out how to reflect correctly off a sphere. At the moment when a ray strikes the sphere it just travels away from the sphere perpendicular to the point it struck the sphere.
The compiler was started because I heard that writing a compiler was a good test of a programmer's ability. Due to the size of the project it's a long way off complete, although the assembler, disassembler and emulator are fairly complete. The emulator is a Windows program that will pick up a z80 machine code file (my own format), along with emulated hardware setup (currently implemented are buttons and 7-segment LED displays) which are accessed with memory mapped IO, and will run or step through the program.
So I can write a small Z80 program to display a number on the LEDs and increment or decrement it with the buttons.
Hope this gives you some ideas!
|