Thread: Any cool programming project ideas?

  1. #1
    Registered User
    Join Date
    Oct 2005
    Posts
    22

    Any cool programming project ideas?

    Recently I have been bored and have been writing random programs just for fun (and for practice). Mostly simple projects that can be finished in a day or two.

    But Im running out of ideas. First I wrote a basic 2D flight simulator. It was fun to experiment with weight, engine power, wing area, tail area, etc, and see how they affected performance and stability.

    Then I wrote a program which would take a pair of stereoscopic images and compare them to build a depth map. If you are not familiar with this, the fact that you have 2 eyes and can see the world from 2 slightly different points allows you to perceive depth. Your brain compares the images from the left and right eye. Far away objects look mostly the same in both eyes. Nearby objects are shifted left or right in one eye compared to the other. My program takes 2 photos taken from slightly different points and compares them. It produces a greyscale image, where black objects are far away and white objects are near the camera. Could be used by a robot with 2 cameras for eyes, to build a 3D map of the world around it. It didn't work as well as I hoped, but I didnt put much time into it before I got bored with it.

    Next I wrote an evolution simulator. There are a bunch of types of little creatures (represented as different colored dots on the screen) that can move around, eat bits of food randomly scattered on the map, eat other creatures if they are carnivorous, etc. They die if they don't eat for a certain amount of time. They each have properties like movement speed, sight radius, preferred food type, and a basic AI script. They can reproduce, with a few random mutations, and evolve. Its cool/fun to experiment and see which species goes extinct, or if an equilibrium is reached between 2 or 3 species, and how the creatures evolve.

    But now I need more cool ideas to experiment with. Any cool projects you have done or heard about that I could try to replicate, or any other random ideas?

    Thanks!
    Last edited by cjmdjm; 04-22-2008 at 05:18 PM.

  2. #2
    Registered User
    Join Date
    Apr 2008
    Posts
    890
    Quote Originally Posted by cjmdjm View Post
    But Im running out of ideas.
    This Usenet post is almost nine years old now, but it still resonates today:

    http://groups.google.com/group/comp....db0ce267871edf

    Nothing new to make? Nothing new to make?

    The shareware archives are full of Ultima 3 knock-offs, Space Invaders
    knock-offs, and -- for the really creative -- Civilization knock-offs.
    What *hasn't* been done before? How about a role-playing game without
    swords, where you construct spells out of working algorithmic parts and
    try to sneak around the enemy's defenses instead of wearing them down? How
    about an empire-building game where logistics is more important than
    producing armies? How about a one-on-one fighting game where each player
    has the ability to travel through time, and the sneakiest move is to sneak
    up behind your opponent while he's busy punching you in the stomach?

    Bonus points if you can name the computer game, board game, or book that
    inspired each of those thoughts. So, why aren't you reading those books
    and playing those games yourself? All things come to he who researches.
    Played RoboRally? Is the principle of pre-programming a sequence of moves
    applicable to multiplayer Tetris? Or that jumping-pegs thing? Or a
    colonize-the-galaxy game?

    On the bookshelf across from me is a spiky plastic ball in a cage; the
    puzzle is getting it out. It's tricky. Can that be translated to a game on
    a 2-D screen? What would the mouse interface be like?

    Last week I sat down with a chess board and a bunch of wooden triangles,
    and pointed them at each other until I had some rules. I tested it tonight
    with some friends. It's fun. I may code it.

    Last week I bought a set of those colored one-centimeter rods that they
    use to teach first-grade math. I haven't decided what to do with them yet.
    Maybe build a tower, or push them around the table like little trains. If
    it's enough fun, it's worth designing a game. Did you play in the mud when
    you were a kid? Ever turn the garden hose on a sandcastle and watch it
    melt? If so, is there a computer game like that? If not, what's wrong with
    you?

    Bryce 4 is $200 retail price. (A clever person could find a rebate.) It
    lets you build beautiful rendered landscape images, with objects in them.
    Ever wanted to write a game like Myst? It'll be a year's work. If ten
    shareware programmers write short graphical adventure games, I guarantee
    three of them will be more interesting and original than the crap that the
    big studios crank out. Are you one of those three, or would you rather
    give up in advance?

    RPG baking game? (The Princess isn't happy until the cookie dough comes
    out just right. Flour is easy, but gooseberries only grow in the vales of
    the Giant Goose... Later, you discover what *else* the skills of
    measuring, mixing, and precise heating can be used for.)

    Hyperspace navigation? There are dozens of books that describe in florid
    prose how hard it is to map your way through jumpspace, and why it's
    better than sex. Implement this. You can leave the sex out if you want. If
    you're stuck for a mathematical underpinning, go look up that weird
    chemical reaction that forms spirals. Someone implemented it about ten
    years ago for a Siggraph paper -- reaction-diffusion textures. ("Space
    cookies!") Prodding that with a stick could be interesting.

    Figure out rules for creating an infinite number of Chinese puzzle-boxes.
    Bonus points if they're physically realizable -- have an option to print
    out blueprints.

    A multiplayer game where people all over the world can push pixels around
    a board, trying to create artistic and eye-catching patterns. Competitive
    cooperation. License the resulting designs as logos and letterhead for
    pretentious Internet startups. Get rich.

    Core-War-style program fragments fighting in a memory space of random
    data. Set up a web site and let people bet money on the results. See what
    evolves.

    Chris "Balance of Power" Crawford keeps trying to invent a system for
    dynamic characters to interact with each other, and the player, generating
    a storyline as they go. So far, he's produced nothing coherent. Figure out
    what he's doing wrong; fix it. One seminal game, and people will be
    writing knock-offs of *your* idea.

    Or, you could write something with big explosions.

    Everything has already been done -- once, and in the least interesting
    way. Do it again, but get it right. If you combine two ideas you've seen
    in *different* places, you're a genius. If you use commas and apostrophes
    correctly in the documentation, you're a creative visionary. It's raining
    soup, as the good Uncle said; don't sit there using your soup bowl to keep
    your hair dry.

    Have fun.

  3. #3
    Deleted Account
    Join Date
    Apr 2008
    Posts
    2

    Foss

    You could contribute to an open source project. With coding skills and ambition like yours, you could make a big impact on the FOSS (free open-source software) community.

  4. #4
    Registered User
    Join Date
    Oct 2005
    Posts
    22
    You could contribute to an open source project. With coding skills and ambition like yours, you could make a big impact on the FOSS (free open-source software) community.
    Could be a good idea. Usually I work on small projects for a few days and then get bored with them, I have rarely done a long term project, and rarely work with other programmers. I am good with C++, but not much else. I dont know much about graphics code, Ive been putting off teaching myself OpenGL or DirectX or something like that. If I need to do basic graphics, I just use the windows GDI (slow, but easy compared to DirectX) or use Visual C++ or Visual C#.

    Where could I find some open source projects looking for help? Something cool, interesting, or a little unusual would be preferred. Thanks!

  5. #5
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,660
    sourceforge.net
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  6. #6
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    28,413
    Where could I find some open source projects looking for help? Something cool, interesting, or a little unusual would be preferred. Thanks!
    I would appreciate it if you would help fix bugs and add new features for the text editor that I am currently experimenting with: Geany

    But yeah, what open source software do you use? Maybe you could contribute to one of them.
    Quote Originally Posted by Bjarne Stroustrup (2000-10-14)
    I get maybe two dozen requests for help with some sort of programming or design problem every day. Most have more sense than to send me hundreds of lines of code. If they do, I ask them to find the smallest example that exhibits the problem and send me that. Mostly, they then find the error themselves. "Finding the smallest program that demonstrates the error" is a powerful debugging tool.
    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  7. #7
    Registered User
    Join Date
    Oct 2005
    Posts
    22
    I would appreciate it if you would help fix bugs and add new features for the text editor that I am currently experimenting with: Geany

    But yeah, what open source software do you use? Maybe you could contribute to one of them.
    Wow dude, I downloaded the source to Geany, one of the .tar.gz files, and its huge. I am trying to find the actual code files (ie, .c or .cpp) to open in my compiler. I am trying to find the file where the program starts, ie,
    Code:
    int main(){
    or
    Code:
    int WINAPI WinMain
    but I can't. I guess I should mention, all of my programs have all of their code in one source code file, usually no more than 10 pages. I don't really know how to tell the compiler to compile multiple source code files that are supposed to form one program.

    I consider myself a fairly skilled programmer, in that I can write programs to solve complicated mathematical or scientific problems, or run cool simulations, like a basic 2D flight simulator (with VERY basic graphics, but very accurate flight modeling) or whatever. But these are usually short (<10 pages), one-source-code-file programs.

    I am kind of lost working on "big" projects like this. Unfortunately, most of the open source software I use, like OpenOffice, or Dev-C++, etc, are "big" (hundreds of pages of code, many source files, etc) and I wouldnt know where to start as far as adding a feature or fixing a bug.

    I know C++ very well, ie, how to use classes, pointers, inheritance, structures, loops, and pretty much all of the language features of C++, but I dont know how to work with "big" projects that use multiple source code files, libraries, data files, graphics resources, etc.

    Where can I learn this sort of thing?

  8. #8
    Registered User
    Join Date
    Apr 2008
    Posts
    890
    Quote Originally Posted by cjmdjm View Post
    Where can I learn this sort of thing?
    Write the game "pong". Two paddles, one ball.

    Go.

  9. #9
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,660
    Expect to take several months to get into a large project, and even then you'll probably specialise in one area.

    For fixing a bug, ask the maintainers for a nice easy one to get you going, and some hints on where to start looking. Even when you've fixed it, you'll still need to submit the changes, get them approved etc before you get your code into the release.

    - build the code
    - set a random breakpoint
    - do some stuff until the breakpoint happens
    - follow where it takes you.

    Join the developers mailing lists, and just listen for a while. Follow up what they talk about by looking at the code they talk about.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  10. #10
    Registered User
    Join Date
    Oct 2005
    Posts
    22
    Write the game "pong". Two paddles, one ball.

    Go.
    Already did it, quite awhile ago actually. In visual c#, with graphics handled via the windows GDI. I put in a timer object, which fired a timer event every few milliseconds. Each time the timer event went off, the position of the ball and paddles were checked and updated as necessary, and some very simple graphics code ran, like

    Code:
    Graphics g = this.CreateGraphics();
    SolidBrush myBrush= new SolidBrush(Color.Red);
    g.FillRectangle(myBrush,x,y,paddlewidth,paddleheight);
    g.Dispose();
    I prefer C++, but use visual C# or Visual C++ for anything requiring graphics, so I dont have to learn DirectX or OpenGL or something.

    Im looking to learn to work on programs with source code spread accross a bunch of files, libraries, etc. Like how to tell the compiler to compile 2 source files into one program. I assume its done by using an include statement to tell one file to include the other, and then compiling that file, but I dont know.

  11. #11
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    28,413
    I am trying to find the actual code files (ie, .c or .cpp) to open in my compiler. I am trying to find the file where the program starts, ie,
    It is in main.c, though if not for the hint in the filename, it could actually be in any source file.

    but I can't. I guess I should mention, all of my programs have all of their code in one source code file, usually no more than 10 pages. I don't really know how to tell the compiler to compile multiple source code files that are supposed to form one program.
    You could use an IDE to do it for you. The IDE will probably use a build tool like make, which you could also use from the command line. Of course, you could also compile manually from the command line, but that could get tedious pretty quickly, and is error prone too.

    I am kind of lost working on "big" projects like this. Unfortunately, most of the open source software I use, like OpenOffice, or Dev-C++, etc, are "big" (hundreds of pages of code, many source files, etc) and I wouldnt know where to start as far as adding a feature or fixing a bug.
    Open Office really is huge, and Dev-C++ is written in Delphi.

    My own experience is varied: I once plowed my way through TUT, a C++ unit test framework, which was relatively small, but which I found a tough nut to crack because of the extensive use (abuse?) of exceptions to control the program flow. More recently I contributed to a plugin for Bazaar despite not knowing much Python, simply by heading straight to where I believed my feature should be added, getting to understand that portion of code, and finally attempting to add my feature (which was not complete because I lacked understanding of some syntax) and then sending the patch over to the maintainer for review... and it was accepted after a further tweak when the fellow explained the syntax that I did not understand.
    Quote Originally Posted by Bjarne Stroustrup (2000-10-14)
    I get maybe two dozen requests for help with some sort of programming or design problem every day. Most have more sense than to send me hundreds of lines of code. If they do, I ask them to find the smallest example that exhibits the problem and send me that. Mostly, they then find the error themselves. "Finding the smallest program that demonstrates the error" is a powerful debugging tool.
    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  12. #12
    Registered User
    Join Date
    Apr 2008
    Posts
    890
    Quote Originally Posted by cjmdjm View Post
    Already did it, quite awhile ago actually.
    Well, then write something bigger and use OpenGL. Maybe Asteroids, or Space Invaders, or Breakout.

  13. #13
    Banned master5001's Avatar
    Join Date
    Aug 2001
    Location
    Visalia, CA, USA
    Posts
    3,685
    I don't see anything wrong with just jumping into one of the open source projects. Geany doesn't look too steep. Again, its a group effort, and as Salem pointed out its not like you will be taking charge of every area of the project. It would be like working at a restaurant as a waiter, obviously you aren't going to be in charge of the fiscal year end report of the company.... You probably don't even realize all that goes on behind the scenes. Same goes to a large project. If you are in charge of memory management, then by golly thats all you really know about with utmost certainty.

  14. #14
    Deleted Account
    Join Date
    Apr 2008
    Posts
    2
    Yup. The beauty of contributing to open-source projects is that you can work on whatever attracts your attention. Play with the program, and if you find something you don't like, or think could be improved, or just want to add... then go for it! There's no obligation, just contribution.

  15. #15
    Registered User
    Join Date
    Apr 2008
    Posts
    890
    Quote Originally Posted by sinkingships7 View Post
    Yup. The beauty of contributing to open-source projects is that you can work on whatever attracts your attention. Play with the program, and if you find something you don't like, or think could be improved, or just want to add... then go for it! There's no obligation, just contribution.
    How do they control code quality? Are unit tests required and/or is code reviewed before it hits the repository and is incorporated into the next release?

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Final Project for HS, any ideas?
    By Conneticut#88 in forum C++ Programming
    Replies: 13
    Last Post: 05-24-2006, 09:22 PM
  2. Senior project ideas
    By Dr Spud in forum C Programming
    Replies: 3
    Last Post: 02-14-2006, 05:10 PM
  3. DSP (C6711) based project ideas?
    By Zeeshan in forum Projects and Job Recruitment
    Replies: 3
    Last Post: 01-26-2006, 06:16 AM
  4. Project ideas
    By subnet_rx in forum Game Programming
    Replies: 4
    Last Post: 01-06-2002, 03:48 PM
  5. Trying to be cool
    By Theologian in forum A Brief History of Cprogramming.com
    Replies: 20
    Last Post: 08-19-2001, 06:17 AM