ITECH2000 Mobile Development Fundamentals Assessment Task 2: Hangman App
You will implement an app in AppInventor based on a given project specification. This app will use a range of components. You will also submit a brief report containing pseudocode and describing how your solution utilises various concepts we have learned in class.
Timelines and Expectations
Percentage weighting of task:
Final Due Date:
Cut-off Date: Minimum time expectation:
20% (of final semester mark for this course)
11:59 PM, Sunday 5th September, 2021 (end of Week 6)
11:59 PM, Sunday 12th September, 2021 10 hours
Learning Outcomes Assessed
This assignment has been designed to enable you to demonstrate your learning in regard to the following outcomes of the course:
K1. Understand constructs typical of many programming languages such as: variables, expressions, assignment, sequence, selection, iteration, procedures, parameters, return values.
A1. Design, develop, test and debug mobile apps from a given textual program specification.
S1. Analyse the input, processing and output needs of small programming problems.
S2. Design code sequences to realise algorithms in a programming language.
S3. Design basic user interfaces and develop storyboards to convey designed interaction sequences.
In particular, the assignment has been designed to help give you further experience in using
AppInventor, and to assess your attainment of a range of the learning objectives from weeks 1 through to 6 of this course.
Getting Assistance and Clarification
If any part of the task is unclear to you, or you are not quite sure how to do some aspect of the task, you should post a question to the Discussion Forum on Moodle. However, any questions posted to the forum on Moodle should not include anything that you plan to submit (such as screenshots of code you might want to submit) to avoid potential plagiarism.
Plagiarism is the presentation of the expressed thought or work of another person as though it is one's own without properly acknowledging that person. You must not allow other students to copy your work and must take care to safeguard against this happening. Lecturers are obligated to report any suspicions to the plagiarism officer. More information about the plagiarism policy and procedure for the university can be found online at: http://federation.edu.au/students/learning-and-study/online-help-with/plagiarism.
CRICOS Provider No. 00103D | RTO Code 4909
1. Application Description
Your assignment is to develop a “Hangman” game application, using MIT AppInventor. In this game, the app will select a random word and the player must try to guess the word within a certain number of guesses by suggesting letters. For more information about the game, please see: https://en.wikipedia.org/wiki/Hangman_(game).
The application may contain one or more screens to fulfill the requirements described below. You are free to design the interface(s) of your app as you like, but your solution should also fulfil the requirements in a logical way.
Specifically, the logic requirements that must be supported in the app are as follows:
• When the application is first opened, a menu should be displayed that provides the user with two options: “Play” and “Time Trial”. These two options, when clicked, will start the game as follows:
o Play: The player has unlimited time in which to solve the puzzle.
o Time Trial: The player must guess the hidden word correctly within 20 seconds, else it is game over.
• There should be a separate screen in which the game is played, opened from the menu.
• When the game is started, a random word should be selected (from a candidate list of words), and it should be displayed on the screen in some way (e.g., a set of dashes, one for each letter of the word). For example, if the word to guess is “CAT”, it could be initially displayed as “_ _ _”. You can find a list of words to use in your app here: https://www.hangmanwords.com/words
• Also on the game screen, the image of the “hangman” should be visible. You have been provided with a series of images that you can use. When the game starts, the first image should be displayed (e.g., 1.png from the provided images).
• The user should have some way of inputting a guess in the form of a single letter.
o If the word to guess contains that letter, then all instances of that letter in the word should be revealed to the user. For example, if the word to guess is “BOOT”, and the user guesses the letter “O”, then the word should be displayed as “_ O O _”. o If the word to guess does not contain that letter, then the user “hangman” image should be updated to display the next image in the sequence, e.g., after the first incorrect guess is inputted, 2.png will display from the provided images.
• It should be clear to the user somehow which letters they have already guessed (both correctly and incorrectly), such that the user cannot guess the same letter twice in a single game.
• The user wins the game if they correctly select all the letters to form the complete word within the total allowed number of guesses. A message should be displayed to alert the user that they have won the game.
• If the user makes too many incorrect guesses (i.e., 6 guesses in this game before the final “hangman” image is displayed), then they will lose the game and are allowed no further guesses. A message should be displayed to alert the user that they have lost the game, and the correct answer should be revealed.
• When the game is over (whether the user won or lost), the user should have the option to start a new game (in which case a new word is randomly selected and the game starts again) or return to the main menu.
• In time trial mode, the game mechanics are the same except that there is a 20 second timer that starts counting down when the game begins. If the user gets the correct answer before the time is up, they win the game. Once the timer reaches zero or the user makes too many incorrect guesses before the time is up, the game stops and a “Game Over” notification is displayed before the app prompts the user if they would like to play again or return to the main menu.
General Requirements for Coding
While your app should meet the functionality described above, you also need to ensure that you satisfactorily demonstrate all the concepts that have been covered in ITECH2000 so far. To achieve full marks, you will need to ensure that you have correctly made use of each of the following components or constructs somewhere in your app:
• a Notifier
• Various user interface components, including Labels, Textboxes, Buttons, and/or Checkboxes, as well as HorizontalArrangement, VerticalArrangement or TableArrangement (or all of them). • a Clock and instants
• the list construct
• a repetition construct
• a decision construct
• a boolean (AND or OR) expression.
• Procedures that you have defined using the ‘to do’ or ‘to do … result’ blocks.
Please read through all of the requirements before you commence work on the app, so you get a full sense of what is required to be done. It is recommended that you first model any events or complex algorithms using pseudocode before commencing programming.
2. Brief Report Requirements
As well as completing the program described above in AppInventor, you are also required to submit a brief report that includes the following:
• A title page that includes your name and student ID number.
• Pseudocode describing the behaviour of three (3) events that your app will respond to. Ensure that you clearly label these events so that it is clear what aspect you are modelling.
• For each of the 8 design elements/blocks listed in the previous section (General Requirements for Coding), you should describe in 2-3 sentences how you used this component in your solution and justify why. If you have used a component multiple times, please describe one example.
Submission and Feedback
You must export your AppInventor project for submission. To do this, go to the “Projects” menu, and select “Export selected project (.aia) to my computer”. Name your .aia file “A1_YourName_YourStudentID.aia”.
You should also save your brief report as a PDF, named “A1_YourName_YourStudentID.pdf”.
Add both your .aia and .pdf files to a single .zip file, and then upload this file to Moodle through the assignment link labelled “Submit Assignment 2”. This link will only become available after you have completed the ‘Declaration of Originality’ form for the assignment, which requires you to accept the Student’s Statement. It is a legal declaration that the work was done by you, without any part of it being done by someone else.
You can expect to receive your final mark and feedback comments within 3 weeks of the due date, or the date which you submitted your work, whichever is later.
You may be required to attend an interview with the marker to answer questions about your work before they will mark your submission.
Student Name: _________________________ Student ID: ________________________
Requirement Marks Awarded
A menu screen is present and displayed using appropriate input/output elements
Menu options behave correctly when clicked 0.5
A game screen is present and includes appropriate input/output elements
A random word is selected, and its hidden letters correctly displayed to the user
Appropriate event(s) handled when user guesses a letter in the game screen
Appropriate method(s) used to track guessed letters and update “hangman” image
Timer functionality works correctly (for time trial mode)
Game logic works correctly if the user “wins” a game round
Game logic works correctly when the user “loses” a game round 1
Has used TextBoxes, CheckBoxes, Labels, and/or Buttons (including using their action blocks and event blocks) appropriately
Has used the screen-changing mechanisms correctly and appropriately 1
Has used repetition construct to repeat code sequences appropriately and in appropriate places
Has used decision constructs appropriately / in appropriate places
Has formed appropriate boolean and relational expressions
Has used the list construct for appropriate purposes and used its action blocks in an appropriate manner to manipulate/use lists.
Has formed procedures appropriately and in appropriate circumstances Has used the Clock component and “time instant” values appropriately 1
The names used for variables, components, procedures and their argument slots, are the appropriate, and are chosen to clearly communicate their purpose in the code. 1
The app is robust, validates user input (where necessary) and does not crash unexpectedly. 2
Three (3) events are adequately modelled using pseudocode [1 mark each]
Examples and explanations provided for each of the 8 elements/components listed in the General Requirements for Coding section [0.25 marks each for reasonable description of all 8 elements]