Aaron's Independent Study
From Earlham Cluster Department
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/
github is the source code control of choice for this project. Below are the instructions for downloading the source code from github:
- Set up an account at github (it's free)
- Let me know your username once you have created an account so I can add you to the contributors list
- 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 email@example.com:amweeden06/SRSem-Project-2009.git $ git pull origin master $ cd Source/ACL
- You should now be in the directory with the source code. To build, type
- This will make an executable called Sewers. To run, type
- w - up
- a - left
- s - down
- d - right
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!
- Implement a counter for number of rooms completed
- Implement a counter for number of blueprints collected
- Implement a counter for number of steps taken in a room
- Make a function to detect whether the avatar is next to an object (rather than intersecting it)
- Fix 'f' so it doesn't always implement
- Get a mechanism working for saving and loading game states. This will likely take place in the file GameEngine.cpp.
- 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.
Fix the bug on Linux that places the gates on top of each other rather than spread outFixed -- uninitialized variable
- Implement a timer to record how long it takes a player to complete a room
- Implement an interface to allow the player to change game controls -- e.g. movement speed and keyboard controls
- Implement a help button interface -- if the player pushes the help button, a small description appears of any objects the avatar is next to
- Evaluate the code's simplicity, clarity, and generality and suggest/implement corrections to this
- 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.