辅导案例-FIT2099-Assignment 3

欢迎使用51辅导,51作业君孵化低价透明的学长辅导平台,服务保持优质,平均费用压低50%以上! 51fudao.top
Monash University FIT2099 Object-Oriented Design and Implementation 2019 S2
Assignment 3
Artificial Life finds a way
Due: Friday 25th October, 23:55
In this assignment you will design and implement some new game functionality, and write a set of
recommendations for changes to the game engine.
Project requirements
All the requirements stated in the Assignment 1 and 2 specifications still apply.
You must document your designs as you did for Assignment 1 and 2.
Extending your park
Add a new map to your park. This map should be located to the north of the existing map. When you
go north from the existing map, you should end up at the south edge of the new map. The map should
be the same size as the existing map.
Note that this must be another map – don’t just make the current map bigger!
When you leave a map, ideally creatures in the old map should continue to take turns, get hungry, eat
one another, etc., and grass and trees should grow.
Marine ecology
You must add a new terrain type: Water. Land-based creatures cannot enter water, and trees cannot
grow there. However, reeds can grow in the water. Reeds grow according to the following rules:
• Water squares that are next to land squares have a 10% chance of growing reeds (regardless of
whether they are also next to reeds)
• Water squares that are next to reeds but not land have a 5% chance of growing reeds
• A reed that is adjacent to more than 6 other reeds will die due to overcrowding
On each turn, a reed square has a 10% chance of generating a fish. Fish swim around at random, and
die after 20 turns. You are not expected to model fish eggs, fish feeding, or anything else fish-related
– this game is about dinosaurs, and the fish are really only here to feed the more interesting marine
life.
Plesiosaurs and pteranodons
You must also implement plesiosaurs and pteranodons. Plesiosaurs are carnivorous marine animals,
i.e. they live in water and cannot go on land. Plesiosaur eggs can be purchased from the store at a price
that makes them challenging (i.e. the player will need to have sold a few Velociraptors).
The player can place plesiosaur eggs on a square adjacent to water, and when they eventually hatch,
the baby plesiosaur will be placed in the water. If the eggs are not next to water, they will not hatch.
This means you are not required to deal with stranded baby plesiosaurs, or worry about how the player
might be able to place eggs in water.
Plesiosaurs eat fish. They may also attack land animals that approach too closely. They do not attack
other plesiosaurs, but will eat their corpses as they are not sentimental creatures.
The shop should also sell marine animal feed. Choose a price that you think is appropriate, given that
plesiosaurs are supposed to be a bit harder than protoceratops and velociraptors.
1
Monash University FIT2099 Object-Oriented Design and Implementation 2019 S2
Plesiosaurs that approach the shore can be tagged and sold by the player. (You may implement a
boat if you find it hard to test plesiosaur tagging.) Plesiosaurs should sell for ten times as much as a
Velociraptor.
Pteanodons are flying fish-eating dinosaurs. They can attack other dinosaurs but would prefer to eat
fish, corpses, or marine or carnivore feed. Pteranodons can travel over land or water, and are fast – they
can move up to two squares per turn.
Pteranodon eggs can be bought the shop for the same price as plesiosaur eggs. Pteranodon eggs may
be placed anywhere on the map.
Even though they are flying creatures, the player can still tag pteranodons. When tagged, pteranodons
sell for the same price as plesiosaurs.
Tyrannosaurus Rex
Tyrannosaurus Rex is probably the world’s most famous dinosaur. It is a large land-based carnivore,
and it is a very big eater – it should have a high hunger threshold and a large capacity for food. The
aim is that you should need quite a large herd of protoceratops to keep T.Rex fed!
Tyrannosaurus eggs should be available from the shop at ten times the price of plesiosaur or pteranodon
eggs. Hatching and growth should work as they do for other dinosaurs.
Breeding a T.Rex and raising it to adulthood is the aim of this game – see the next section for de-
tails.
Ending the game
At the moment, there is no way to end the game.
You must add the following endings:
• A “quit game” option in the menu
• A “player loses” ending for when the player is knocked out by dinosaur attack1, or by any other
damaging mechanics that you come up with for bonus functionality
• A “player wins” ending for when the player successfully gets a T-rex to lay an egg and rears its
offspring to adulthood – note that this refers to rearing a captive-bred Tyrannosaur, not one bought
from the shop!
Recommendations for change to the game engine
Over the course of your three assignments, you have had to become familiar with the game engine
(located in the package edu.monash.fit2099.engine). You have almost certainly found aspects of the
game engine design and implementation difficult to understand, or frustrating to use.
Write a short document (e.g. two or three A4 pages of text) describing changes you would recommend
for the game engine. For each change you recommend, you must explain:
• what problem you perceive
• the design change you propose to address the problem
• the advantages, and any disadvantages, of the proposed change
If you use UML diagrams, don’t count the space they take up in the “two or three A4 pages of text”.
If you can’t think of anything bad about the engine, then write a justification of your positive opinion
with reference to the design principles you’ve learned in this unit.
Note that any recommendations you make must be suitable for any application of the game engine.
They must not be specific to the current scenario – we change that every year. (Last year it was Harry
Potter, and the year before that it was Star Wars.)
1Plesiosaurs and Tyrannosaurs should be capable of attacking the player even if your velociraptors aren’t.
2
Monash University FIT2099 Object-Oriented Design and Implementation 2019 S2
Design is important
One of the primary aims of this unit is for you to learn the fundamentals of object-oriented design. In
order to get a high mark in this assignment, it will not be sufficient for your code to “work”. It must
also adhere to the design principles covered in lectures, and in the required readings on Moodle.
If you would like informal feedback on your design at any time, please consult your lab demonstrator
in a lab or attend any consultation session.
Updating your design
You might find that some aspects of your existing design need to change to support the new functi-
onality. You might also think of a better approach to some of the requirements you have already im-
plemented — your understanding of the requirements and codebase will have improved as you have
progressed. You might also spot places where your existing code (and thus design) can benefit from
refactoring.
If you want to update your design, you may do so; if you decide to do this, be sure to update your
design documents so that they match the code, and write a brief explanation of your changes and the
reasons behind them. his will help your marker understand the thinking behind your code.
Coding and commenting standards
You must adhere to the Google Java coding standards that were posted on Moodle earlier in the semes-
ter.
Write javadoc comments for at least all public methods and attributes in your classes.
You will be marked on your adherence to the standards, javadoc, and general commenting guidelines
that were posted to Moodle earlier in the semester.
Bonus marks
As stated in the Assignment 2 specification, there are bonus marks available for groups that come up
with ideas for new features for the game, and then design and implement them.
A feature must be quite complex to qualify for a bonus mark. You must discuss your plans for bonus
mark features with your tutor and gain approval before beginning work on them. Different tutors may
have different standards so to ensure that bonuses are treated fairly, they will be determined centrally
by an independent assessor. Bonus marks will be awarded after the submission of Assignment 3.
To apply for bonus marks, write a brief proposal and email it to your campus lecturer by Friday Week 10
(11th October) – [email protected] if you’re at Clayton, [email protected]
if you’re at Sunway. Include enough information about what you plan to do that we will be able to
estimate how much effort it will take you, and how hard it will be to design well. This will be about a
page for most teams.
A maximum of three bonus marks are available (these are whole marks for the unit). No one has
to attempt bonus marks, and it is possible to get full marks for the unit without any bonus marks.
Note that you will only get all of the marks you’re eligible for if your code is well-designed, properly
documented, and works properly.
Submission instructions
The due date for this assignment is Friday 25th October at 23:55, your local time. We will mark your
Assignment 3 on the state of the “master” branch of your Monash GitLab repository at that time. If you
have done any work in other branches, make sure you merge it into master before the due time.
Do not create a new copy of your work for Assignment 3. Continue working on the same files, in the
same directory structure (you might like to add a tag to the your final Assignment 2 commit before
3
Monash University FIT2099 Object-Oriented Design and Implementation 2019 S2
starting on Assignment 3, so you can find that version easily).2
As we said above, you may update your design and implementation if you find that your Assignment 2
solution is not suitable for extension, or if you think of a better approach during Assignment 3.
You must update your Work Breakdown Agreement to include the work necessary for the Assignment 3
requirements, and any bonus mark work you attempt. We will take your Work Breakdown Agreement
into account when marking if there seems to be a major discrepancy in the quality of different parts of
the submission, or if the code is missing major sections. If you choose to reallocate tasks, make sure you
keep your WBA up to date.
Marking Criteria
This assignment will be marked on:
• Functional completeness
• Design quality
– adherence to design principles discussed in lectures
– UML notation consistency and appropriateness
– consistency between design artefacts
– clarity of writing.
– level of detail (this should be sufficient but not overwhelming)
• Code quality
– readability
– adherence to Java coding standards
– quality of comments
– maintainability (application of the principles discussed in lectures)
• Correct use of GitLab
• Quality of recommendations for changes to the codebase
– understanding of codebase displayed
– usefulness of recommendations
– understandability of recommendations
– generality of recommendations (i.e. must not be specific to the current scenario)
– practicality of recommendations
– clarity of writing
Marks may also be deducted for:
• late submission
• inadequate individual contribution to the project
• academic integrity breaches
2https://git-scm.com/book/en/v2/Git-Basics-Tagging
4
Monash University FIT2099 Object-Oriented Design and Implementation 2019 S2
Note:
Learning outcomes for this assignment
This assignment is intended to develop and assess the following unit learning outcomes:
1. Iteratively construct object-oriented designs for small to medium-size software systems, and des-
cribe these designs using standard software engineering notations including UML class diagrams (in
conceptual and concrete forms), UML interaction diagrams and, if applicable, UML state diagrams;
3. Implement object-oriented designs in an object-oriented programming language such as Java, using
object-oriented programming constructs such as classes, inheritance, abstract classes, and generics as
appropriate;
5. Use software engineering tools including UML drawing tools, integrated development environ-
ments, and revision control to create, edit, and manage artifacts created during the development pro-
cess.
To demonstrate your ability, you will be expected to:
• design and implement further extensions to the system
• use an integrated development environment to do so
• update your UML class diagrams and interaction diagrams as required, to ensure that they match
your implementation
• comment on the design of the existing game engine
• use git to manage your team’s files and documents
The marking scheme for this assignment reflects these expectations.
5
51作业君

Email:51zuoyejun

@gmail.com

添加客服微信: abby12468