A point breakdown for the project is at the end of this page.
As part of your first assignment you should select a grid-based puzzle (e.g. Sudoku) or game (e.g., Battleship) or other web application (e.g., an event calendar) that you will implement for your project, create an HTML mock-up of the game, and define the game state. For each subsequent assignment you will implement part of the game and add features. At the end of the term you will turn in the completed game. Keep in mind that although each assignment adds to the game, finishing all of the assignments is not enough to get a good grade on the project. The assignments focus mostly on the user interface, and you will also need to implement game logic that is not part of any assignment.
There are many games from which you can choose, including classics like chess and checkers, and relatively new games like Sudoku. Here is a list of possibilities:
Two other possibilities for projects that are not games are an event calendar and an expense tracker. Like the games listed above, these applications make use of a grid and therefore work well with the assignment specifications, which are written in terms of grids.
Since there are many possibilities for games, I have written the assignment specifications in general terms. It is very important that you do every assignment, even if it doesn't seem to fit your game very well. For the final version of your game you can leave out elements that don't fit, as long as you satisfy the project requirements listed at the end of this page.
For the final project you will integrate code from the assignments with the game logic code to make a complete, functional game. Not every assignment will be relevant for every game, but you should do the assignments in such a way that they fit into the overall game as well as possible. If you are not sure how an assignment relates to your game, talk to me.
Here are some descriptions of game functionality that would be sufficient for full credit:
The Model View Controller (MVC) design pattern is very commonly used in software development. One of the advantages of using MVC is that the same model can be used with many different kinds of views. For example, you could start out with a very simple view that uses lines of text to show the locations of ships and shots in a Battleship grid. Later, you could make a view to show images instead of characters. You could use that view without making any changes to the model. You could incorporate animation, video, audio, and renderings of 3D models into the view also, and still not have to change the model. In this class we won't distinguish between the view and the controller.
Assignment 4 will include a project checkpoint and will be worth 25 points more than regular assignments. The additional 25 points will be for demonstrating some part of the game logic for your project. Plan on implementing at least 25% of your game logic code for that assignment, and make sure that the game logic code produces visible results so that the grader can verify that it is implemented.
Choose one of the following features of HTML5 to use in your final
project: audio tags, video tags, canvas (drawing graphics with
NOTE: The local storage functionality from Assignment 5 does not satisfy this requirement. Along the same lines, simply storing a user or player name in local storage does not satisfy this requirement either. Your use of local storage should relate to your particular game. Make sure that make a way to save, display, and clear the information in local storage.
Your project should load XML or JSON game data using XMLHttpRequest. You can use your work for Assignment 6 to satisfy this requirement, but the log-in functionality for Assignment 5 does not satisfy this requirement.
If you include two different HTML5 components in your project, I will give you extra credit for the second component. See the Points breakdown at the bottom of this page for the number of points.
For purposes of extra credit, I consider audio and video to be the same. That means that if you use audio for one HTML5 component, the second one needs to be local storage or canvas (not video).
See the top of this page or the course schedule for the due date of the final project. Submit a zip file with your project files in it by uploading it in Canvas.
Here is the score summary for the project:
Documentation explaining how you implemented your game and
how it satisfies the remainder of the requirements.
The documentation should be in a file named documentation.html,
with a link to the documentation file on the project description page.
User input in the form of text, select options, and/or buttons
User input in the form of mouse clicks
Dynamic modification of HTML using innerHTML or DOM functions
Use of XMLHttpRequest to load JSON or XML game data that is displayed
on the grid page
Incorporates HTML 5 audio tags, video tags, canvas, or local storage
Game logic code
Extra Credit Include a second HTML5 component. If your first
HTML5 component is media (audio or video) then your second component
can't be a media component.