[CMSC 437] | [Syllabus] | [Lecture Notes] | [Homework] | [Projects] | [Files] | [Notes, all]

CMSC 437 Project, Summer 2016

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.

The project must have user interaction.

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.
A GUI interface for data entry, data lookup from a database, modeling,
or simulation is acceptable.

For gaiming at UMBC, see gaim.umbc.edu
and search the web for more.

A text or graphical editor in 2D or 3D can be acceptable.
A program to create and/or modify 2D or 3D graphics objects
or scenes is acceptable. 
A screen saver is acceptable with mouse interaction to change
the background or moving, typically 3D, objects.

This semesters project may be a prototype of something you will use
at your job, in a future course or to sell.
I have seen enough Sudoko. This is part of the Game Track,
thus programming a game for the project is good.

Discuss your project with the instructor.

New, now accepted are HTML5 JavaScript  WEB based interactive applications

New, you can do a real 3D interactive application, with or without glasses.

Not accepted is a minor modification of an existing program.
(A major modification to an existing program is allowed.)

The first four lectures present many sample GUI application and you
may choose to wait until after lecture four to make your selection.

Some default projects are:

(1)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 can specialize to project to your kinds of objects.

(2)The goal of this project is to create a reasonably simple
game to be played on a computer. Implement a version of the
game "frogger" with logs moving at various speeds, a random
alligator, and user control of the jumping frog. Use a 3D
graphics engine such as OpenGL and give the player control
of the 3D view. Provide control of difficulty by changing
speed and number of logs to cross in order to reach safety.
Provide a splash screen for winning and loosing. Record and
be able to display best score, probably shortest time.

(2a)If you wish to be more violent you might want race cars or
tank battles. Have some type of menu for selections. Read and
write a file with high scores.

You have great freedom to choose what your project is
to be. For the default editor 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 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 more than 1,000 lines of code.
Around 100 lines of code or less is generally not acceptable.

Submitting your Project

 The project is to be submitted on GL as 
   submit cs437 proj list-of-files
                     ( *.c   *.java   *.js  *.py  *.html  etc.)

 The list-of-files must include source code.
 Do not submit images or sound files.
 Do not submit executable file(s).

 One or more saved data files would be nice.

 Present and demonstrate your project running
 during the last few class periods. (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.

Getting Started

Each student needs to choose an operating system to which they have access.

UMBC makes available Microsoft Windows XP, Linux,
Solaris, MacOS and 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, Python, HTML5 JavaScript or other that has available OpenGL or some other graphics library. 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.

Start the project by getting sample files

 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.

Object Oriented 2D Graphics Editor

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.



A typical form that I use when seeing the project
demonstrated is: proj437.txt
Students may fill out form down through "started with" .

other links and files to download

Many web sites on Java GUI, AWT, Swing, etc.
Many web sites on Python wx, tk, qt, etc.

Last updated 6/15/2016