Aaron's Independent Study

From Earlham Cluster Department

Revision as of 21:59, 20 February 2010 by Amweeden06 (Talk | contribs)
Jump to: navigation, search

For my senior project I have been developing an educational computer game to teach digital logic. The working title is "Computer City: Sewers," since the game takes place in the lowest level of a city ( corresponding to digital logic, which is conceptually the lowest level of the computer architecture ). The game is puzzle-based and is written in C++ with the OpenGL API.

The game's source is available at http://github.com/amweeden06/SRSem-Project-2009/tree/master/Source/



Getting Started

github is the source code control of choice for this project. Below are the instructions for downloading the source code from github:

  1. Set up an account at github (it's free)
  2. Let me know your username once you have created an account so I can add you to the contributors list
  3. On a shell, type the following:
$ mkdir Sewers
$ cd Sewers
$ git init
$ git config user.name <your git username>
$ git config user.email <your email>
$ git remote add origin git@github.com:amweeden06/SRSem-Project-2009.git
$ git pull origin master
$ cd Source/ACL
  1. You should now be in the directory with the source code. To build, type
$ make
  1. This will make an executable called Sewers. To run, type
$ ./Sewers


Key commands


Here are some of the things that the game needs. I've broken them down into small, medium, and big based on how long I think they'll take. Let me know if you'd like a better description of any of these, or if you have other ideas!


  1. Implement a counter for number of rooms completed
  2. Implement a counter for number of blueprints collected
  3. Implement a counter for number of steps taken in a room
  4. Make a function to detect whether the avatar is next to an object (rather than intersecting it)
  5. Fix 'f' so it doesn't always implement truth table


  1. Get a mechanism working for saving and loading game states. This will likely take place in the file GameEngine.cpp.
  2. Right now there is a mechanism in place for loading a "room file", which describes the circuit of a given room (e.g. Room1.sew). Get a mechanism working to load a series of rooms as the player progresses through the game.
  3. Fix the bug on Linux that places the gates on top of each other rather than spread out Fixed -- uninitialized variable
  4. Implement a timer to record how long it takes a player to complete a room
  5. Implement an interface to allow the player to change game controls -- e.g. movement speed and keyboard controls
  6. Implement a help button interface -- if the player pushes the help button, a small description appears of any objects the avatar is next to


  1. Evaluate the code's simplicity, clarity, and generality and suggest/implement corrections to this
  2. I envisioned the player interacting with the computer in the top right corner of the room as follows: when the player completes the room, a truth table of the room is presented to the player to be filled out. Get this interface working or come up with a better one.
Personal tools
this semester