- May 15, 2020
The University of Queenland, School of ITEE CSSE2002/7023 — 2018Assignment 3 (15%)Due: 19 October, 12 NoonRevision: 1.1 (as at October 12, 2018)IntroductionThe goal of this assignment is to create a GUI which utlises classes developed in assignment 1 and assignment 2. The GUI will display the game world and have options for users to interact with the world. For this assignment, the only supplied code will be the classes implemented in assignment 1 and 2, no other code will be provided to create the interface.Unlike previous assignments however, you are allowed to create public classes with public methods as required. Keep in mind that any methods that dont need to be public should be made private and all good OO practices must be followed.Language requirements: Java version 1.8, JavaFX, JUnit 4Restrictions: use of FXML is not permittedHelpful Resources:Week 10 JavaFX pracGetting started with JavaFX:https://docs.oracle.com/javafx/2/get_started/jfxpub-get_started.htmWorking with JavaFX layouts:https://docs.oracle.com/javafx/2/layout/builtin_layouts.htmContextNow that we have developed a set of primitives to represent Tile, Block, and Builder and a way to create worlds and interact with it, we want to be able to:launch a game window,load world maps from the game window,display the loaded map,perform actions on the world by using control elements in the game window,provide helpful messages to users on any failures,display the updated world map once an action is performed, andsave the updated world map.Figure 1: Game window of block world, with a small map already loadedIn this assignment you will create something similar to the above GUI, it does not need to be exactly same as shown above but needs to have the same functionality.The required features of your GUI application are:File MenuA file menu which allows users to load and save world map files. Selecting one of “load” or “save” option opens a file dialog box and allows users to select a file or save a file. If a map is already loaded into the application, users should be able to load new maps without restarting the program.Display MapThere should be some area in the window which displays the current tiles. The minimum grid dimensions for the display are 9×9 (at least 81 tiles should be visible, if a map has that many). The above example GUI is a 9×9 display, with the builder(yellow circle) always center in the grid. You can create the dispaly using any method you like (canvas, grid layout, etc.) however the following must always be displayed:at least 9×9 tiles, with Builder on one of those tiles,total blocks on the tiles,exits on the tiles,builder’s current inventory, anddisply at least the top block on the tiles. You can use images or different colors to show what the top block is.Action buttonsThere should be some way to perform actions on the map. You can use buttons or any other JavaFX controls as you please to allow users to perform the actions from Assignment 2.“DIG”, “DROP”, “MOVE_BUILDER”, “MOVE_BLOCK”There should also be some way to provide directions for the move actions and a way to select the index to drop from builder’s inventory.If no map is loaded then these controls should either be disabled or when used, should let the user know that no map has been loaded (See AlertBoxes on errors).You are free to create the controls however you like, but everything must be documented (seeExample Description)AlertBoxes on errorsUsers may try to undertake actions which are impossible, or which fail. Your program should respond accordingly. In some cases, you will pre-empt the user; for example, you may disable direction but- tons if there is no exit in that direction. e.g. If builder’s current tile does not have a “north” exit, then the north button can be disabled. If a user tries to perform an impossible action, or there is some failure in your program, you should alert the user with alert boxes.Relevant alert boxes may include, but are not limited to:map is successfully loadedmap cannot be loadedcannot move builder in the intended directioncannot move block in the intended directioncannot place chosen blockDoocumentationYou must provide documentation for your GUI. This should include an annotated screenshot of your GUI, indicating what each section of each screen does. You should also provide a short description of how each feature has been achieved (e.g. pressing the button that says “DIG” makes the Builder dig on their current tile)Documentation of the example GUI, shown in Figure 1, is provided in section Example Descrip- tion.SummaryFor Assignment 3, you are creating an interactive GUI which will allow a user to control the Builder and explore the world, removing and placing blocks on tiles as they travel. You have creative freedom as to what the GUI looks like, but it must meet the minimum functional requirements described above. Users should be able to load new maps without restarting the program.Ethical obligationsAll work on this assignment is to be your own individual work. As detailed in Lecture 1, code supplied by course staff is acceptable but there are no other exceptions.You are expected to be familiar with “What not to do” from Lecture 1 andhttp://www.itee.uq.edu.au/itee-student-misconduct-including-plagiarism.If material is found to be “lacking academic merit”, that material may be removed from your submission prior to marking. No attempt will be made to repair any code breakage caused by doing this.If you have questions about what is acceptable, please ask.Supplied materialThis task sheetA .zip file containing implementations of the Assignment 1 and Assignment 2 classes.TasksCreate a GUI with all the required functionalityCreate a “MainApplication” class in game package which extends from javafx.applica- tion.ApplicationMainApplication class is the entry point of your JavaFX application.Create a document which explains how the created applications works. See Example Descrip- tion.MarkingThe 100 marks available for the assignment will be divided as follows:SymbolMarksMarkedDescriptionF55By “humans”Implementation and functionality:Does the submission conform to the requirements?How well does the GUI represent information and allow interac-tions for a user familiar with the documentationS25By “humans”Style and clarity.D20By “humans”Documentation:Does the documentation provided adequately describe:The behaviour of all aspects of the GUI? andHow the GUI meets the requirements?The overall assignment mark will be A3 = F + D + S with the following adjustments:If F < 5, then S = 0 and “style” will not be marked.If D > F , then D = F .If S > F , then S = F .For example: F = 22, D = 17, S = 25 ⇒ A3 = 22 + 17 + 22.The reasoning here is not to give marks to cleanly laid out classes which do not follow the specifi- cation.Functionality markingThe number of functionality marks earned will be awarded in three broad categories:Does the representation of the world / world map render correctly and appropriately? [20 marks]Appropriateness of the visual aspects of the rest of the GUI (Layout, titles, interface elements, etc). [15 marks]Do user interactions function as described in your documentation? Are these interactions usable? [20 marks]Documentation markingThe number of documentation marks earned will be awarded in two broad categories:Do the annotated images of each screen adequately describe the functionality? [10 marks]Does the written description address each required aspect of functionality? [10 marks] Note that documentation which is illegible or unintelligible will earn 0 marks.