B CUSP 110C – Digital Thinking

Final Project: Let’s build your game!?

 

 

 

Goal: The goal of this final project is for you to synthesize your knowledge in programming:

·         variables,

·         assignments,

·         expressions,

·         conditionals,

·         iterations, and,

·         functions

in one moderately large and complex software system—a game or an animation system.

 

In addition, we will use the building of the game (or animation system) to examine some of the processes in developing a software system:

·         user requirements (or constraints)

·         conceptual/paper design and refinement

·         software design

·         prototype implementation and testing

·         final implementation and test

 

User Requirements

In a real software development project, this is where you will go interview your users and understand what they are looking for. In our case, you and your partner will be the users. To help you narrow down your design, here are some technical capabilities and requirements your system should satisfy (an “object” is something you can observe and/or interact with in the application window):

 

·         (40%) Foreground objects:

o   (10%) At least one object that the player can control (e.g., game paddle).

o   (10%) At least one object that is animated (e.g., the ball).

o   (10%) The above objects must have some interaction (e.g., collide, or, if the movements of one object affects the others)

o   (10%) None of the foreground objects can leave the game window. E.g., the objects should either bounces off the window boundaries, or, upon leaving the window boundaries something should happen (e.g., score updated, the object is randomly re-generated somewhere in the game window).

·         (10%) Background decoration: in addition to the above foreground objects, your game should display interesting looking objects in the background. Background objects are just that, stay in the background for decoration purposes only. E.g., the owl objects we created can be considered as background objects because after the creation we do not interact with them.

o   At least 2 background objects.

o   Use your own background image

 

·         (10%): include interesting custom images for all objects.

 

Based on the above technical requirements, you are free to design any system you like: some sort of game, or, animation system. We have already seen example of a game (the blockbreaker game). For a simple animation system, for example, you can have the user manipulating a magic ball that controls the height of one or two rectangles. If the user moves the ball upwards, the rectangle lengths will grow, and if user moves the ball downwards the rectangle lengths will shrink. Now, you can put interesting textures over the ball/rectangles and you have an interesting animation system!

 

 

Conceptual/Paper Design (15%): (Due Nov 20)

 

With a partner your paper design will include:

 

·         (5%) A sketch of what your system will look like, including the dimension of the window size

·         (5%) The size of the foreground objects and how the user will control these objects

·         (2%) What are the background objects will look like

·         (3%) Examples of images you will use for your foreground and background objects

 

For example:

 

The above image include two designs (remember, you only need to design one system), the top/left for a pong game, and the bottom/right is for the magic ball animation system. In your paper design you can choose to draw with freehand, or, use a drawing softare. In all cases, please be neat and make sure people can read your writings clearly!! You should submit both a print out _and_ an electronic (scan in your hand-drawing) copy to the e-submit.

 

 

Software Design (20%): (Due Nov 27)

In software development, we never start by typing in programming code. We always think about and plan out what we want to do, write our code down on paper, carefully examine the code on paper, make sure everything makes sense, and then do we begin typing in the code. You will follow this step by show me your programming consideration on a piece of text file (name it, YourNames.txt, e.g., KelvinAndPartner.txt), e.g., for the block breaker example:

Notice, in the paper software design we do not have to worry if there are syntax errors (e.g., forgetting the annoying “;” is ok). This has the wonderful advantage of allowing us to focus on the logic of the system. It is very important that you do not try to “typing and run” your code at this point. You want to focus on the logic of your system and not get distracted by the detail syntax. You want to go over the code on paper and think through how your program will behave! Your software design must include:

·         (5%): Declarations of all variables you will need

o   I want you to think about what are the values that must be changed!

·         (5%): setup(): initialize and set your variables

o   I want you to think through how you are going to initialize your variables

·         (10%): draw(): step by step English descriptions with corresponding variables you need to change (if any)

o   I want you to think through what you want to do and how you are going to use your variables

 

 

Final Implementation (65%): (Due Dec 6)

You must be done by this point. With everything working correctly! Here is the grade sheet for final submission.