Assignment Problem Description
Your project will be to use JavaFX to implement a game designed to assist young children in learning how to read and spell. The game should be fun for the child to play, yet should require them to find words from among apparently random letters, and thereby be a learning experience for them. One of the challenges for you, as computer scientists, will be to design the game in such a way that it presents the child with an appropriate level of challenge. Too little challenge and the child will quickly become bored. Too much challenge and the child will give up in frustration.
You will develop the game in two parts. In Part One, you will develop a very simple text-based version of the game (no use of JavaFX). In Part Two, you will develop the complete game, including a graphical user interface (GUI), using JavaFX.
Legal and Ethical Issues
First, as with any work you do, you must abide by the principles of honesty and integrity. I expect you to demonstrate honesty and integrity in everything you do.
In addition to those ground rules, you are to follow the rules one would normaly be subject to in a commercial setting. In particular, you may make use of the works of others under two fundamental conditions: a) your use of their work must be clearly acknowledged, and b) your use of their work must be legal (for example, consistent with any copyright and licensing that applies to the given material). Please understand that violation of these rules is a very serious office. However, as long as you abide by these rules, you are explicitly invited to conduct research and make use of a variety of sources. You are also given an explicit means with which to declare your use of other sources (via originality statements you must complete). It is important to realize that you will be assessed on the basis of your original contributions to the project. While you won't be penalized for correctly attributed use of others' ideas, the work of others will not be considered as part of your contribution. Therefore, these rules allow you to copy another groups' work entirely if: a) they gave you permission to do so, and b) you acknowledged that you had done so. Notice, however, that if you were to do this you would have no original contribution and so would recieve no marks for the assigment.
Be creative, act wisely, and you should walk away from this course with a real sense of accomplishment.
|1||Organize groups, assign roles||2||1|
|2||Analysis, design and Stage 1 implementation||4||3|
|3||Individual class implementation||6||1|
|4||Individual class and testing||8||4|
|6||Final submission (Friday
|7||Final demo and presentation||12||3|
The first stage of the assigment requires you to develop a very simple text-based game. The marking scheme for the assignment is spelt out alongside the description of each stage of the deliverables. Part One of the assignment is due in Stage 2.
In Part One you will write a simple game that will print a list of letters to the console (using System.out.println(), for example), from which the player must try to form legal words. The list of letters is in fact just the bucket of Part Two, printed out in a single line. A new letter will be added to the list (the bucket) every two seconds and the bucket reprinted. If the player types a legal word followed by enter, then the letters that form that word are subtracted from the bucket, and the bucket is reprinted. If the player's input is not a legal word, the bucket is unchanged. If the number of letters in the bucket exceeds 32, the game is lost. Once 48 letters have been issued (added to the bucket), the game is won. A simple RLG should be used to generate the letters.
(Updated 11/8) Note that to have the game issue letters at a constant rate, independant of the user's behavior, you will need to use something like the AnimationTimer described in the lecture of Friday week two (starting at the 46 min mark). Also note that this behavior is essential to state two but is not part of the pass requirements for state one.
The following describes the elements of the game that you need to implement for Part One in order to attain various grades for Stage 2. Note that these are minimal necessary conditions for getting the relevant grades, they are not sufficient conditions. To understand what is required to attain a given grade for Stage 2, you need to see the marking criteria.
- A single level version of the text-based game described above.
- A very simple RLG.
- Your game need not correctly implement a timer of any kind. For example, you can just produce new letters each time the user provides new input. (updated 11/8)
- Your game may use a very simple dictionary that you hand code into an array (updated 12/8).
Note: the last point of the 'Pass' criteria means that you should be able to complete a pass level version of stage one with only the Java skills you learned in Lab1 and were quizzed on in the labtest. (updated 11/8)
Required FeaturesThe marking scheme for the assignment is spelt out alongside the description of each stage of the deliverables. Stage 6 is the main deliverable, and it attracts half of all marks for the assignment. In this stage, in particular, you have an opportunity to differentiate yourselves from other groups.
The following describes the elements of the game that you need to implement in order to attain various grades for Stage 6. Note that these are minimal necessary conditions for getting the relevant grades, they are not sufficient conditions. To understand what is required to attain a given grade for Stage 6, you need to see the marking criteria.
- A single level of the game running with a correctly sized screen, using JavaFX.
- You need only implement a very simple RLG.
- There is no need to implement multiple levels.
- There is no need to implement a scoring system.
- There is no need to implement choice.
- There is no need to implement longest.
- There is no need to implement shake.
- There is no need to implement any interesting movement of letters within the bucket upon clearing of letters.
- All of the Credit-level criteria, plus the following...
- The game should implement choice, displaying it on the screen
- The game should implement longest, displaying it on the screen.
- The game will
execute with a "frame rate" of 60 frames per seconduse 1/60 of a second as the basic quantum of time. This refers to the underlying speed of the gameplay (which determines the rate at which letters are issued, etc), not the refresh rate of JavaFX . If you find this confusing, it will be discussed in lectures when we build the caterpillar game. The caterpillar moves at a given speed (pixels per second), regardless of the rate at which JavaFX redraws the screen.
- High Distinction
- All of the Distinction-level criteria, plus the following...
- The game will implement an intellegent RLG which carefully selects letters to maximize the quality of gameplay (maximizing enjoyment and learning).
- The game will implement Shake.
- The game will implement interesting movement of letters within the bucket when new letters are added and when letters are cleared.
- For the sake of this project the following dictionary defines the set of legal words. If a word appears in the dictionary, it is legal, otherwise it is not.
- A lot has been written about the frequencies with which letters appear (as individual letters, as pairs, etc), the importance of various words (in terms of their frequency), and the sorts of words children might be expected to learn at various stages. You may wish to use such information as you attempt to develop a good solution of the assignment. Remember that your goal is to make the game fun and educational. There are some interesting computer science challenges involved, particularly in relation to the design of an intellegent RLG.
DefinitionsThe following are definitions of terms we will use to describe the game.
- The aesthetics (appearance, etc) of the game is left to the game designer. The principal rationale of any aesthetic decision should be based on the goal of the game, which is that it should be an effective learning tool for young children. Please note the assignment marking scheme before investing time on aesthetics. A good game implementation may apply some notion of gravity to the behavior of the letters in the bucket, both when letters are added and when letters are cleared.
- The bucket is a bin into which letters fall. In this game, the bucket may hold 32 letters. If the bucket overflows (a letter arrives when the bucket already contains 32 letters), then the game ends. The graphical representation of the bucket of letters is left to the game designer. In Part One, the "bucket" is simply a sequence of characters printed out to the console. The player may shake the bucket, causing its contents to be randomly rearranged.
- Choice refers to the number of distinct words currently in the bucket. The game designer may choose to display this value.
- Letters are cleared when the player enters a legal word if the set of letters required to form that word are available in the bucket. In that case, each of the letters needed for the word is removed from the bucket. If the word is not legal or the letters are not available in the bucket, the players' input is ignored. The player must type in the letters, followed by enter (to indicate the end of their word).
- A frame is the basic quantum of time in a game like tetris. Many games, including the one you should implement for this assignment, run at 60 frames per second.
- The game may implement multiple levels, each becoming progressively more difficult. In particular, the rate may increase, and the supply may grow.
- Longest refers to the longest word currently in the bucket. The game designer may choose to display this value.
- The preview allows the player to see the next two letters before they are dropped into the bucket. These letters cannot be used to form words until they have fallen into the bucket.
- The rate at which letters appear is key parameter in game play. Your game should start with a rate of 2 seconds (120 frames) per letter. This rate may increase as the player advances to higher levels.
- Reading Level
- The game should target a child who is just learning to read. The game may allow the reading level to be selected, and adjust the gameplay accordingly. The reading level of the player will be a factor in determining the playability of the game. The design of the RLG may reflect the player's relading level.
- The RLG is the random letter generator. The RLG should produce letters in a (semi) random order. The game designer may use various algorithms to bias the letter selection so as to maximize the player's enjoyment of the game. Hard-to-use letter combinations are likely to lead to frustration from the player (remember that the player is a small child).
- The screen refers to the window in which the gameplay takes place. The screen should be a rectangle 1024 pixels tall and 768 pixels wide (you may optionally also support a low-res mode of 800 tall x 600 wide, which has the same aspect ratio). The screen should display the bucket, its contents, and the score as well as any other optional display elements such as preview, longest, and choices.
- The game implements a scoring system that rewards players for finding words within the bucket of letters. The scoring system is left to the game designer. The score may be displayed within the screen.
- If the player enters the letter 's' on its own, the letters in the bucket are randomly rearranged, as if the player had physically 'shaken' the bucket. The available letters do not change, just their organization within the bucket. This feature may help players who are struggling to find viable words in the bucket.
- The supply is the number of letters that will be dropped into the bucket before a level is completed. In this game, in the first level, the supply is 48 (i.e. 1.5 times the bucket capacity). This means that in order to avoid the bucket overflowing, the player must clear at least 16 (48 - 32) letters in order to pass the first level. The supply may increase as the player advances to higher levels.
- The provided dictionary defines the set of legal words. All words in the dictionary are legal. Any word not in the dictionary is not legal. In part one of the game, the pass level requirements allow you to use your own dictionary of a few words.