1. Homepage
  2. Programming
  3. SENG201 Software Engineering I - Project: Resource Stockpiling

SENG201 Software Engineering I - Project: Resource Stockpiling

Engage in a Conversation
CanterburySENG201Software Engineering IResource StockpilingJava

SENG201 – Software Engineering I Project Specification Resource Stockpiling CourseNana.COM

1 Introduction 1.1 Administration
CourseNana.COM

This project is a part of the SENG201 assessment process. It is worth 30% of the final grade, and it is capped up to 100 marks (i.e., the total marks for it can’t exceed 100). This project will be done in pairs (i.e., teams of two students). You must find your own partner and register the team on LEARN. Submissions from individuals will not be accepted. Pairs are not allowed to collaborate with other pairs, and you may not use material from other sources without appropriate attribution. CourseNana.COM

Plagiarism detection systems will be used on your report and over your code, so do not copy the work of others. Plagiarised projects will be referred to the University proctor for disciplinary actions. Your deliverables must be submitted on LEARN. Students will be asked to demo their project during lab and lecture times. CourseNana.COM

Actual dates and times are detailed in Section 6.3. The drop dead policy and other penalties are detailed in Section 6.4. CourseNana.COM

You can find all the project-related information and resources in the “Project” section on LEARN. CourseNana.COM

1 CourseNana.COM

1.2 Outline CourseNana.COM

This project will give you an idea of how a software engineer would create a complete application (featuring a graphical user interface) from scratch. CourseNana.COM

In this project you will build a game in which you buy and maintain a set of resource towers. You will be able to purchase towers of different types; buy upgrades and items to improve the towers; select a number of rounds with particular difficulties to play; and fill up carts with materials from your towers in a round to earn money/points. You will continue to play and successfully fill up all the carts in the rounds with the goal of earning money/points and improving your towers. CourseNana.COM

The idea of the game is slightly open to allow some room for creativity, but ensure you implement the main project requirements, as that is what will be graded. CourseNana.COM

We encourage you to think of the assignment as a project rather than a pro- gramming assignment. Programming assignments often have a clearly defined specification that you can follow step-by-step. However, in practice, software engineering projects require a lot of thinking from the engineers to find out what exactly to build, why, for whom, and how. Therefore, specifications and requirements are often vague and need to be clarified during development. CourseNana.COM

1.3 Project Management CourseNana.COM

Adequate planning will help you minimize risks that can negatively impact your project (e.g., falling behind or poor testing). Defining time estimates, clear goals, and realistic milestones will give you a much higher chance of success. CourseNana.COM

To help you with this, you must record the following data weekly: CourseNana.COM

  • Hours you spent working on the project during the week. CourseNana.COM

  • Activities you carried out during the week. CourseNana.COM

  • If you achieved the goals planned for the week or not. CourseNana.COM

  • The risks you identified or faced during the week. CourseNana.COM

  • How satisfied you are with your and your partner’s contribution to the CourseNana.COM

    project during the week. CourseNana.COM

    A quiz to record this data is available on LEARN. CourseNana.COM

    You will earn marks by entering the data on time. Similarly, you will lose marks if you fail to regularly record the data, see Section 6.4 for more details. CourseNana.COM

    1.4 Help CourseNana.COM

    This project can get confusing and frustrating at times when your code does not work. This will likely be the largest program you have written thus far, so CourseNana.COM

    2 CourseNana.COM

it is very important to break larger tasks into small achievable parts and then implement these at a time, testing as you go. CourseNana.COM

Having a nice tight modular application will help with debugging, so having appropriate classes is a must. If you are having problems, try not to get too much help from your classmates and instead ask for help from your tutors. You can email them or ask them questions in labs. Always save your work and have backups. You will be using the university’s GitLab1, eng-git, for a Version Control System (VCS). Ensure you commit regularly and add detailed messages. For more information about Git see Tutorial 1 and its extension. CourseNana.COM

2 Requirements CourseNana.COM

This section describes what your game must do and is written as a set of re- quirements. At the beginning of your project and to get started, try thinking of each requirement as a separate ticket that needs to be closed before others are started, it will help you have code that works and can be built upon, instead of a lot of broken spaghetti code. CourseNana.COM

Hint: Functionality can be placed in its own package or class. Modularisa- tion is the key, especially when you begin GUI programming. CourseNana.COM

2.1 Setting Up the Game CourseNana.COM

When your game first starts, it should ask the player to: CourseNana.COM

  1. Choose a name. The length must be between 3 and 15 characters and must not include special characters. CourseNana.COM

  2. Select the number of rounds they would like to play (between 5 and 15 rounds). CourseNana.COM

  3. Choose a difficulty CourseNana.COM

    1. (a)  There must be at least 2 options. CourseNana.COM

    2. (b)  This should scale how difficult the game is in a noticeable way. (For example, how much money the player starts with, money earned, and/or what shows up in the shop; this is up to you). CourseNana.COM

    3. (c)  You may want the harder difficulties to give more points for the same action. CourseNana.COM

  4. Pick three starting towers from a selection. A tower should have at least the following stats: CourseNana.COM

    1. (a)  Resource amount: The amount of resources to load into carts per action. CourseNana.COM

    2. (b)  Reload speed: The time between resource loading actions. CourseNana.COM

1 https://eng- git.canterbury.ac.nz/
3 CourseNana.COM

(c) Resource type: For example, water, food, building materials, . . . get creative! CourseNana.COM

  1. (d)  Level: After some number of points/upgrades, the tower should “level up” and improve its stats in some way. CourseNana.COM

  2. (e)  Cost: When buying from (and selling) to the shop. Note that the sale price can be a reduced amount of the buying price. CourseNana.COM

5. (Optionally) Be able to name the towers. 6. Start the first round. CourseNana.COM

2.2 Playing the Main Game CourseNana.COM

Once the player has finished the setup and selected their towers, the main game can begin. The game is played in rounds, where up to 5 of the player’s towers must fill all the carts in a round. To successfully complete a round the player must fill up all the carts before any of them go the full track distance without being filled. CourseNana.COM

When you successfully fill all the carts, you have won the round and will receive points. The points can be used to buy items or upgrades to improve your towers. The amount of points received when the player wins is up to you (and may be scaled with difficulty). CourseNana.COM

The following options will be displayed to the player: CourseNana.COM

  1. View the amount of money you have, the current round, and the number of rounds remaining. CourseNana.COM

  2. Go to the shop and buy new towers or items to upgrade towers and sell those from their inventory back. CourseNana.COM

    • There should be 3 to 5 different towers the player can buy CourseNana.COM

    • The towers sold may depend on other factors (e.g., a rarity system could be used, with rarer towers becoming more common [or being unlocked] in later rounds). CourseNana.COM

    • There should be 3 or more different items to buy (a shop may have more than 1 of the same item) CourseNana.COM

    • Item functionality may include (but is not limited to): (a) Improving one or more tower stats
      (b) Increase tower XP (or level)
      (c) Changing tower type
      CourseNana.COM

  3. Go to the inventory and: CourseNana.COM

    (a) View the player inventory and the current items they have. The inventory includes: CourseNana.COM

    i. Five or fewer main towers (those used in rounds) 4 CourseNana.COM

  1. Five or fewer reserve towers (those not used in rounds, much like substitutes in sports) CourseNana.COM

  2. Any number of upgrades CourseNana.COM

  1. (b)  Move towers between the main group and the reserve group (the main CourseNana.COM

    group must always have at least one tower) CourseNana.COM

  2. (c)  Use an upgrade on any tower CourseNana.COM

4. Play a round. Within each round, you need to use your towers to fill up a number of carts. Each of these is discussed in more detail below: CourseNana.COM

  1. (a)  Each round, the player can choose a difficulty which shall be based off one or more of: CourseNana.COM

    1. Distance of track (i.e., in meters or kilometers) CourseNana.COM

    2. Information about the carts to fill: CourseNana.COM

      Number of carts Size of carts
      Type of carts CourseNana.COM

    3. (Optionally) Different ’map’ modifiers. (For example an easy round may boost all towers’ reload speed) CourseNana.COM

  2. (b)  Carts CourseNana.COM

    1. A round is made up of a number of carts which need to be filled depending on difficulty (loosely 3-10). CourseNana.COM

    2. Carts have the following stats: CourseNana.COM

      1. Size: Amount of resources to be filled with CourseNana.COM

      2. Resource Type: Type of resource which can fill it (same as CourseNana.COM

        the possible tower types), though you may also wish to have CourseNana.COM

        a basic type that can be filled with any resource CourseNana.COM

      3. Speed: in meters per second or kilometers per second. This value is used to determine how long a cart will be on the track where it can be filled by the player’s towers. For example, a cart moving at 10m/s will complete a 100m track in 10 CourseNana.COM

        seconds. CourseNana.COM

    1. A round has some number of carts (above) that have to travel a predetermined track distance. A round is considered complete only if all carts are filled completely within that distance. CourseNana.COM

    2. Towers, in their simplest form, fill all carts on the tack at the same time (as long as the cart typing allows it to be filled by the tower’s type). CourseNana.COM

    3. The difficulty of rounds should be impacted by the chosen game difficulty and round number (i.e., later rounds should be harder). CourseNana.COM

      5 CourseNana.COM

(c) Rounds CourseNana.COM

  1. Each ‘round’ the player should be able to select between 3 differ- ent options for the upcoming round, based on some information. Such differences may be down to slight randomization in the stats, number of carts to be filled, length of the track, etc. CourseNana.COM

  2. Winning a round should give the player money to spend at the shop (based on the relative difficulty) and optionally some form of points (though this may be tied to the money earned). CourseNana.COM

After a round: CourseNana.COM

(a) All towers/items in the shop are updated/refreshed. (b) All rounds are updated. CourseNana.COM

(c) Random events have a chance of occurring as detailed below. CourseNana.COM

There will also be some random events you will need to implement. These will only happen after a round. The chances of these events occurring may depend on the difficulty setting but should be high enough that a few will likely occur over a game. The player must be alerted when any of these random events occur: CourseNana.COM

  1. (a)  A tower has one or more of its stats (including XP) increased or decreased. CourseNana.COM

  2. (b)  A tower breaks. CourseNana.COM

    1. A broken tower can either: CourseNana.COM

      A. Be removed from the player’s inventory entirely, or
      B. Be placed in a broken state and require a specific item to be
      CourseNana.COM

      repaired to working order CourseNana.COM

    2. The chance should increase if the tower was used in the previous CourseNana.COM

      round CourseNana.COM

Finishing the Game CourseNana.COM

The game ends when one of the following occurs: CourseNana.COM

  1. All rounds have passed and been successfully completed, therefore the player has won. CourseNana.COM

  2. The player does not have any working towers or money to buy more, then, the player loses. CourseNana.COM

  3. The player has covered the maximum allowed distance in a round but has not filled all the carts, and the player loses. (Optionally) You may wish to include an XP value for the player that allows them to lose a number of rounds before they lose the whole game. CourseNana.COM

Upon ending, a screen will display the user’s name, a message about whether they won or lost, the selected number of rounds they initially chose, how many rounds they completed, the amount of money gained, and the amount of points gained (or some other score value). CourseNana.COM

2.4 Extra Credit Tasks CourseNana.COM

If you have finished early and have a good-looking application, then you will be in for a very high mark. If you want to do more, please discuss it with the tutors in the lab. You are free to add any features you wish; just be careful not to break anything. Here are some ideas, and you do NOT need to implement them all to get full marks: CourseNana.COM

You may want rounds to have an emphasis on specific types and allow players to change their main party when selecting a round to deal with them. CourseNana.COM

You may want to introduce random events during the round that could include an ability that disables a tower for a short time or increases the reload speed. CourseNana.COM

You may want to introduce new tower types with special characteristics, for example, support towers that do not provide any resources but instead buff other towers. CourseNana.COM

You may want to show the game in real-time with animations. CourseNana.COM

You may want to allow the player to save the current state of the game and be able to load it up at a later time. CourseNana.COM

You may want to add a storyline to your game, including consistent char- acters and a plot that gets told through pop-ups or dialogue. CourseNana.COM

You may want to add some artwork. CourseNana.COM

You may want to include some music or sound effects. We recommend you use resources such as pixabay.com or freesound.org for free-to-use images and sound. It is your responsibility to adhere to any licensing terms and these should be referenced in your README. CourseNana.COM

Design and Architecture CourseNana.COM

This section provides some ideas on how your program should be structured. The following are some class candidates who should be represented in your pro- gram. Important things to think about here are interactions between classes, what classes should be instantiated, how you could use interfaces and/or inher- itance, and how you could apply the design patterns you’ve learned and will learn in SENG201. CourseNana.COM

3.1 Towers CourseNana.COM

There shall be different towers. Three will be enough. Each tower has at least a resource amount, reloading speed, resource type, level, and cost. CourseNana.COM

7 CourseNana.COM

3.2 Carts CourseNana.COM

There shall be different carts. Between three and ten per round. Each cart has at least a size, resource type, and speed. CourseNana.COM

3.3 Rounds CourseNana.COM

There shall be multiple rounds per game. Between five and fifteen per game. Each round has a difficulty that is determined by a combination of the distance allowed, the number of carts to fill, and the size of the carts to fill. This difficulty should be selected each round. CourseNana.COM

3.4 Items CourseNana.COM

There shall be different types of items (e.g., towers, upgrades). You can have up to five main towers, five reserve towers, and as many upgrades as you like. Each item will have a cost and upgrades should provide some measurable im- provement. CourseNana.COM

3.5 Purchasable CourseNana.COM

Both towers and items can be bought from the shop and should be displayed in the inventory. These both require a buying price, a sell-back price, and a description. CourseNana.COM

3.6 Service Classes CourseNana.COM

Instead of storing all the game logic within the GUI controller classes, it is beneficial to abstract the functionality out to other classes, often called ‘service’ classes. Doing so promotes code reusability and testability. Service classes you implement may encapsulate a collection of related logic from the domain, such as a MarketService. CourseNana.COM

3.7 Game Environment CourseNana.COM

The game environment contains much of the overarching logic for your game, will implement functions to provide the options mentioned above, and will call methods of the above classes to make those options happen. The game environ- ment keeps track of the game state. CourseNana.COM

Try to keep your code modular and avoid putting user interface (UI) code in your game environment or domain classes. Separating the game logic from the UI code will make developing and maintaining the application easier. CourseNana.COM

8 CourseNana.COM

4 Assignment Tasks 4.1 Sketching UML CourseNana.COM

Before you start writing code, sketch out a UML use case diagram detailing the program’s users (actors) and their interactions with the system (use cases). This diagram will help you to identify the main functionalities of the program and to visualize its scope. CourseNana.COM

In addition to this diagram, create a UML class diagram of how you think your program will look like. It will help you get an idea of what classes there are and what class attributes are required, and it will get you thinking of what classes communicate with other classes (call methods of another class). CourseNana.COM

4.2 Implementing a Graphical Application CourseNana.COM

You will implement a graphical application for your game using JavaFX, which will be explained in labs. For this assignment, we do not recommend writing the FXML code by hand. Instead, use the Scene Builder application (optionally within the IntelliJ IDE). This lets you build graphical interfaces in JavaFX by dragging and dropping components onto a canvas onscreen. It will automatically generate the FXML code to create the graphical interface you built, which you can then pair with a controller class. CourseNana.COM

Please note that you are required to ensure that any automatically generated code complies with the rest of your code style, so you will need to change variable/method names and code layout. CourseNana.COM

Once you have built your interface, the next task is to wire up the graphical components to the methods, and to update the onscreen text fields with the new values of your class attributes/member variables. Most of these functions are triggered by “Setting up the Game” first to get used to GUI programming. You might need to adjust your methods to achieve this slightly. Then, move on to the main game. CourseNana.COM

Note that this is the largest task to complete, and many students underes- timate how much time it will take. Try to be at this stage one week after the term break if possible. CourseNana.COM

4.3 Writing Javadoc CourseNana.COM

Throughout your application, you need to document what you implement. Each class attribute should have a Javadoc explaining its purpose. Each method needs to explain what it does, what variables it takes as parameters, what types those variables are, and what the method returns (provided it does not return void). You should build your Javadoc regularly, as it integrates into the IDE very nicely and will aid you in writing good code. CourseNana.COM

9 CourseNana.COM

4.4 Writing Unit Tests CourseNana.COM

You should design JUnit tests for your smaller, basic classes, such as Tower, Cart, Store, and their descendants, if necessary. Try to design useful tests, not just ones that mindlessly verify that getters and setters are working as intended. Writing good unit tests with JavaFX also requires good abstraction of domain logic to external classes such as a ‘service’ layer, which means you can test functionality independently of the GUI itself. CourseNana.COM

4.5 Report CourseNana.COM

Write a short two-page report describing your work. Include on the first page: CourseNana.COM

  • Student names and ID numbers. CourseNana.COM

  • The structure of your application and any design decisions you had to make. We are particularly interested in communication between classes and how interfaces and/or inheritance were used. You might want to reference your UML class diagram. CourseNana.COM

  • An explanation of unit test coverage and why you got a high/low percent- age coverage. CourseNana.COM

    Include on the second page: CourseNana.COM

  • Your thoughts and feedback on the project. CourseNana.COM

  • A brief retrospective of what went well, what did not go well, and what improvements you could make for your next project. CourseNana.COM

  • The effort spent (in hours) on the project per student. CourseNana.COM

  • A statement of agreed percentage contribution from both partners. CourseNana.COM

4.6 A note on effort distribution CourseNana.COM

The “typical” or “common” distribution of the overall effort spent on these activities is: around 5% creating the UML diagrams; development of the graph- ical application is the most time-consuming task, taking around 60% of your time; documenting your code writing the report would take the last 5%. CourseNana.COM

However, note that these numbers vary between students, and these percent- ages are not supposed to be the exact amount of effort invested in each task. They are only a rough guideline (e.g. we would not expect you to spend 50% of your time on creating UML diagrams or writing the report; on the other hand, we would expect that implementing the graphical user interface takes quite a substantial portion of the effort). CourseNana.COM

10 CourseNana.COM

5 Deliverables CourseNana.COM

5.1 Submission CourseNana.COM

  1. Please make sure your Eng-Git repository contains the following: Your source code (including unit tests). CourseNana.COM

    Push the final commit to your Eng-Git repo to the ‘main’ branch before the due date and time mentioned in Section 6.3. Only one member of the team is required to push the final commit. CourseNana.COM

  2. Please create a ZIP archive with the following: CourseNana.COM

    • UML use case and class diagrams as a PDF or PNG (do not submit Umbrello or Dia files; these will not be marked). These diagrams must be made by you, do not use an automatic tool to generate them. Note: If you use PlantUML you may want to include a file with the code for the diagram as well as the image. CourseNana.COM

    • Your report as a PDF file (do not submit MS Word or LibreOffice documents; these will not be marked). CourseNana.COM

    • Submit your ZIP archive to LEARN before the due date mentioned in Section 6.3. Only one member of the team is required to submit the ZIP archive. CourseNana.COM

      5.2 Demos CourseNana.COM

      During the last week of the term, you will be asked to demo your project during lab and lecture time. Each team member must be prepared to discuss any aspect of your application; we will be asking questions about any and all functionality. There will be a form on LEARN in which you can book a time slot. Ensure you are both available, as you must attend the demo as a pair. CourseNana.COM

      Only one member of the team needs to book a slot for the team, but both members are expected to attend the demo at that time; do not double book slots. CourseNana.COM

Get in Touch with Our Experts

WeChat WeChat
Whatsapp WhatsApp
Canterbury代写,SENG201代写,Software Engineering I代写,Resource Stockpiling代写,Java代写,Canterbury代编,SENG201代编,Software Engineering I代编,Resource Stockpiling代编,Java代编,Canterbury代考,SENG201代考,Software Engineering I代考,Resource Stockpiling代考,Java代考,Canterburyhelp,SENG201help,Software Engineering Ihelp,Resource Stockpilinghelp,Javahelp,Canterbury作业代写,SENG201作业代写,Software Engineering I作业代写,Resource Stockpiling作业代写,Java作业代写,Canterbury编程代写,SENG201编程代写,Software Engineering I编程代写,Resource Stockpiling编程代写,Java编程代写,Canterburyprogramming help,SENG201programming help,Software Engineering Iprogramming help,Resource Stockpilingprogramming help,Javaprogramming help,Canterburyassignment help,SENG201assignment help,Software Engineering Iassignment help,Resource Stockpilingassignment help,Javaassignment help,Canterburysolution,SENG201solution,Software Engineering Isolution,Resource Stockpilingsolution,Javasolution,