To get to the point, I'm wanting to start a moderately-sized
project that would take a week (working full time on it, which I won't
be
) to do reasonably, cover a decent subset of the language, be
interesting to do, and workable under (say) gcc on Linux (without too
much nonstandard code). It'd also be interesting to get some practice
in software design in there.
So, I'd be interested to get some suggestions, because I feel like
doing *something* with all this knowledge (and more importantly,
finding out what I don't know well). Thanks!
One of my all-time favorite projects that I've taken on is to write a
program to solve sliding tile puzzles (8-puzzles). I'm sure you've seen
them - a square grid broken up into 9 tiles, but one of the tiles is
missing, allowing the other tiles to slide around.
If you're feeling really ambitious, you could try to write a generic
implementation that could be used to solve any one-player game for which a
state space search is applicable.
If you choose this project though, be aware of one thing: Not all puzzes are
solvable! For example, if you start in this state:
123
405
678
(0 represents the missing tile)
and make it your goal to get to this state:
132
405
678
it is impossible. Exactly half of all possible board positions are
reachable from a given puzzle configuration.
Here's a good test puzzle that does have a solution:
308
257
146
With this being the goal state:
123
405
678
This project will require some research on your part to find a suitable
algorithm, but the implementation of that algorithm will teach you a lot
about C++. Also, try to use the C++ Standard Library for as much of your
implementation as you can.
Anyway, have fun with whatever you do and good luck!
Dave