[CMSC 437] | [Syllabus] | [Lecture Notes] | [Homework] | [Projects] | [Files] | [Notes, all]
You may choose a project that will provide you with GUI software of interest to you. The default project, described below, is an object oriented editor that may be tailored to your interest and use. There are sufficient course resources that you may choose to code an interactive educational program, a 3D interactive puzzle or game, or some other program that you may build on after this course is over. 3D modeling something of interest to you is another possibility. Not accepted are WEB based applications, that is another course. Not accepted is a minor modification of an existing program. This can be a prototype of something you will use at your job. The first four lectures present many sample GUI application and you may choose to wait until after lecture four to make your selection. The default project is: The goal of the project is to create a reasonably simple object oriented two dimensional graphics editor that uses the Graphical User Interface, GUI, techniques covered in the class. The hope is that the project will be the basis of some interactive application you want to build. You have great freedom to choose what your project is to be. As a default, if you have nothing better in mind, the following is a suggested layout for an object oriented two dimensional graphics editor. Generally, the program will have: a main menu with several types of submenus, a graphics window for shapes, lines and text, selection menus for shapes and colors, font style and size selection, the ability to group and ungroup objects, the ability to move objects to the front or back, the ability to select, move and delete objects, the ability to use the mouse and the ability to save and open files. The project must have user interaction. A game or puzzle or interactive learning is acceptable. A program to create and/or modify 2D or 3D graphics objects or scenes is acceptable. The project must use either 2D or 3D objects, it may have text also but can not be just text. A pixel "paint" program is generally not acceptable. The project must be a significant quantity of GUI programming. Typically around 1,000 lines of code. Around 100 lines of code or less is generally not acceptable.
The project is to be submitted on GL as submit cs437 proj list-of-files The list-of-files should include source code and other files, as required, Makefile to build a working program. Do not submit executable file(s). One or more saved data files would be nice. If practical, demonstrate your project running during the last class period. (or other class periods by arrangement with the instructor) As you are demonstrating your project, explain or point out features (and the neat stuff) you have included in your project. In other words, do a presentation of your project.
Each student needs to choose an operating system to which they have access.
UMBC makes available Microsoft Windows XP, Linux, Solaris, IRIX, MacOS and several others. The "windowing" system is chosen by default from the operating system choice. MS Windows, X windows or Macintosh.
In the chosen operating system, the student should choose a programming language, "C", C++, Java, or other that has available OpenGL. The major GUI tool kits, libraries, to select from include Motif for X Windows, OpenGL for all operating systems, Java for all operating systems. Examples will be shown in the first few lectures.
Starter files may be copied to your subdirectory on GL using commands such as: cp /afs/umbc.edu/users/s/q/squire/pub/download/? . Expect problems if you EMail source code. Lines will probably be wrapped and your code will not compile. Be careful saving WEB pages. "Cut and Paste" can give strange translations. WEB pages may have control characters that compilers will not accept.
You have great freedom to modify and change the following. You may have a future application in mind that could be built on this project. Try to keep to the spirit of creating a user oriented program, even if you may be the only user. Main menu File Edit Arrange Font Grid(option) Help | | | | | | |new |cut | select all | ??? | snap | ??? |open |paste | deselect all | ??? | off |save |copy | move to front | size... |exit | move to back Selection boxes Color boxes Optional ??? Text black filled Line white unfilled Rectangle red your stuff Circle green ??? Select blue ??? ??? Drawing window Optional scroll bars Optional scaling Optional grid (I personally can not work without a grid.) It is your option to go 3D and use fewer other features. e.g. Build a scene and be able to move through the scene using OpenGL or your own code.
Last updated 8/17/04