功能实现： 1.加载不同的级别： - 级别必须从json配置文件中加载，该文件给出了加载和定位不同资产的指令。 - 关卡信息必须包括平台，敌人，终点线位置和第一阶段的云和英雄。 - 需要在报告中对不同层次的输出格式的设计进行合理化和详细说明。 - 不需要在游戏执行过程中进行关卡转换，游戏在启动时加载一个给定的关卡文件，并在关卡完成时结束。 2.英雄必须能够站在平台对象上，并且不能与任何对象相交。 3.关卡将包含伤害英雄的敌方特工 - 如果英雄从它们上面跳过去触碰它们，敌人将会消失。 - 如果英雄以任何其他方式触碰它们，英雄将失去一条命，并重新回到最初配置的位置。 4.英雄能够越过终点线，此时关卡(游戏的这个阶段)将完成 5.游戏必须记录从游戏开始到英雄到达终点线的当前时间 附加功能(要获得满分需要实现一个附加功能)： 1.不同的敌人运动个性。 2.不同平台上的不同物理特性(如使英雄滑块)
测试测试： 为代码编写jUnit4测试。这些测试必须涵盖每个类的功能，并且必须使用gradle test(包含在gradle构建中)运行
Software Design Stage 2 - SOFT2201
Using the feedback from your first submission, you will need to implement a new set of features, refactor your
application, and improve your application’s design through the use of design patterns.
You will continue to work on your ‘Stickman’ project, both to correct the existing features based on general
class feedback and specific points from your tutor’s feedback, and to extend the application with new
features. You will now be required to improve and extend the view package to render the hero and other
domain objects. Feel free to discuss your feedback with your tutor.
Features to implement:
Loading different levels
Levels must be loaded from a json configuration file which gives instructions for a different
assets to be loaded and positioned
Level information must include platforms (that do not move), enemies (that might), a finish line
position, as well as the clouds and hero of the first stage
You will need to rationalise and elaborate on the design of your input format for different levels in
Note: you do not need to have level transitions during execution of the game - the game loads a
single given level file on startup and ends when that level is complete
The hero must be able to stand on platform objects and must not be able to intersect with any object
Levels will contain enemy agents which will harm the hero
if the hero touches them by jumping on top of them, the enemy will disappear
If the hero touches them in any other way, the hero will lose a life and start back at the
originally configured location
The hero is able to cross a finish line, at which time the level (and at this stage the game) will finish
The game must record the current time elapsed since the start of the game until thehero has reached
the finish line
To achieve full marks, you will need to implement an additional feature. You can implement a suggested
feature or you can implement your own, however, please discuss with your tutor about your own feature idea.
Additional Feature ideas:
Different enemy movement personalities
Different physics on different platforms (eg Ice blocks that make thehero slide)
In Stage 2 you are responsible for the design of the entire application code - now including the view package.
You are allowed to use as much or as little of the existing code as you choose, however you should note that
the provided code was not given to you as an example of good design.
You may source images however you wish or draw them yourself (ensure you acknowledge any sources in
your readme file)
In order to gain marks for your design and report you must use the design patterns you have been taught so
far wherever you notice a need for them. Please note using the design patterns incorrectly or in places where
they do not provide a benefit will not lead to marks.
You are required to write jUnit4 tests for your code. These tests must cover the functionality of each of your
classes and must be runnable using gradle test (included in gradle build )
Your report for this stage must be a maximum of 1000 words, and concisely cover the following:
A brief description of your changes within stage 1 to fix any outstanding issues
A discussion of how your design for stage 1 helped or hindered your extensions made in this stage
Your level configuration design discussion
A report on each design pattern you have used covering
Which design pattern you chose
Where you used it (be explicit as to what classes are involved and in what roles)
What this pattern does for your code in terms of SOLID/GRASP/etc
What overall benefits this provides (be specific to your code, not the pattern in general)
What drawbacks this causes (be specific to your code, not the pattern in general)
A UML class diagram showing your submitted code’s design
You are required submit code and tests first, and then later the report - see the due dates in Canvas. You are
encouraged to submit multiple times, but only your last submission will be marked.
You should include a readme file covering any quirks to running your application, a description of your level
configuration file, and any acknowledgements required.
Marking Criteria (15%)
7 Marks for the implementation of the application using the Java programming language. You will be
assessed on the implementation of the requirements and 1 additional feature.
Ensure your application can compile and run on the university’s lab machines.
Ensure your application implements the logic described in implementation details
Ensure your application is able to load a configuration file and change the game’s settings.
Ensure your application does repeat large sections of logic, try to minimise repetition.
Ensure your application code exhibits good OO principles
1 Mark for the implementation of your additional feature and that you ensure it works correctly.
6 Marks for the final report, providing instances of design pattern usage, updated UML class diagram
and addressing issues outlined from tutor feedback.
Document design patterns and the rationale for their usage.
UML Class Diagram should describe the full system including updated code and design patterns.
Reflection of your application design, highlighting any outstanding issues and improvements that
can be made.
2 Marks for test cases of core features, ensure that the logic of your application is correct and handles
test cases. Aim for code coverage, common and corner cases.
Ensure your test cases cover over 90% of execution paths.
Ensure your test cases cover common cases.
Ensure your test cases cover edge cases.
Warning: Any attempts to deceive or disrupt the marking system will result in an immediate zero for the entire
assignment. Negative marks can be assigned if you do not properly follow the assignment specification, or
your code is unnecessarily or deliberately obfuscated.
By submitting this assignment you declare the following:
I declare that I have read and understood the University of Sydney Student Plagiarism: Coursework Policy and
Procedure, and except where specifically acknowledged, the work contained in this assignment/project is my
own work, and has not been copied from other sources or been previously submitted for award or
I understand that failure to comply with the Student Plagiarism: Coursework Policy and Procedure can lead to
severe penalties as outlined under Chapter 8 of the University of Sydney By-Law 1999 (as amended). These
penalties may be imposed in cases where any significant portion of my submitted work has been copied
without proper acknowledgement from other sources, including published works, the Internet, existing
programs, the work of other students, or work previously submitted for other awards or assessments.
I realise that I may be asked to identify those portions of the work contributed by me and required to
demonstrate my knowledge of the relevant material by answering oral questions or by undertaking
supplementary work, either written or in the laboratory, in order to arrive at the final assessment mark.
I acknowledge that the School of Computer Science, in assessing this assignment, may reproduce it entirely,
may provide a copy to another member of faculty, and/or communicate a copy of this assignment to a
plagiarism checking service or in-house computer program, and that a copy of the assignment may be
maintained by the service or the School of Computer Science for the purpose of future plagiarism checking.